bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
45 lines (44 loc) • 1.35 kB
TypeScript
import type { Connection } from "../../data/connection";
import type { Compilable, CompiledQuery, QueryResult as KyselyQueryResult } from "kysely";
export type ResultHydrator<T = any> = (rows: T[]) => any;
export type ResultOptions<T = any> = {
hydrator?: ResultHydrator<T>;
beforeExecute?: (compiled: CompiledQuery) => void | Promise<void>;
onError?: (error: Error) => void | Promise<void>;
single?: boolean;
};
export type ResultJSON<T = any> = {
data: T;
meta: {
items: number;
time: number;
sql?: string;
parameters?: any[];
[key: string]: any;
};
};
export interface QueryResult<T = any> extends Omit<KyselyQueryResult<T>, "rows"> {
time: number;
items: number;
data: T;
rows: unknown[];
sql: string;
parameters: any[];
count?: number;
total?: number;
}
export declare class Result<T = unknown> {
protected conn: Connection;
protected options: ResultOptions<T>;
results: QueryResult<T>[];
time: number;
constructor(conn: Connection, options?: ResultOptions<T>);
get(): QueryResult<T>;
first(): QueryResult<T>;
get sql(): string;
get parameters(): any[];
get data(): T;
execute(qb: Compilable | Compilable[]): Promise<this>;
protected additionalMetaKeys(): string[];
toJSON(): ResultJSON<T>;
}