0.1.5Updated 6 months ago
import { Paginate, PaginationParams } from "@infinity-beyond/modules/pagination.ts";

export const LedgerUserData = async (request: Request, ledger: Ledger.Ledger<any>, key: string) => {
  const { page, page_size } = PaginationParams(request);

  if(!request.state.user?.has_permission(`VIEW_${ledger.name.toUpperCase()}`)) throw new Deno.errors.PermissionDenied();

  const user_data = await ledger.UserData(key, page_size, page);

  const { meta } = Paginate(request, user_data?.history || [], user_data?.entry_count || 0);

  return { entries: user_data?.history || [], meta, total_entries: user_data?.entry_count ?? 0, balance: user_data?.balance ?? 0};
}