@pgxsinkit/pgwasm
Version:
39 lines • 2.42 kB
TypeScript
import type { Cache } from "drizzle-orm/cache/core/cache";
import type { WithCacheConfig } from "drizzle-orm/cache/core/types";
import { entityKind } from "drizzle-orm/entity";
import { type Logger } from "drizzle-orm/logger";
import { PgAsyncPreparedQuery, PgAsyncSession, PgAsyncTransaction } from "drizzle-orm/pg-core/async/session";
import type { PgDialect } from "drizzle-orm/pg-core/dialect";
import type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from "drizzle-orm/pg-core/session";
import type { AnyRelations } from "drizzle-orm/relations";
import { type Query } from "drizzle-orm/sql/sql";
import type { Assume } from "drizzle-orm/utils";
import type { Pgwasm, Results, Row } from "../interface";
/** What a session runs statements on: a database, or a transaction's handle. */
export type PgwasmSessionClient = Pick<Pgwasm, "query"> & Partial<Pick<Pgwasm, "transaction">>;
export interface PgwasmSessionOptions {
logger?: Logger;
cache?: Cache;
}
export interface PgwasmQueryResultHKT extends PgQueryResultHKT {
type: Results<Assume<this["row"], Row>>;
}
type QueryMetadata = {
type: "select" | "update" | "delete" | "insert";
tables: string[];
};
export declare class PgwasmSession<TRelations extends AnyRelations> extends PgAsyncSession<PgwasmQueryResultHKT, TRelations> {
#private;
static readonly [entityKind]: string;
constructor(client: PgwasmSessionClient, dialect: PgDialect, relations: TRelations, options?: PgwasmSessionOptions);
prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, mode: "arrays" | "objects" | "raw", _name: string | boolean, mapper: ((rows: unknown[]) => unknown) | undefined, queryMetadata?: QueryMetadata, cacheConfig?: WithCacheConfig): PgAsyncPreparedQuery<T>;
transaction<T>(transaction: (tx: PgwasmTransaction<TRelations>) => Promise<T>, config?: PgTransactionConfig): Promise<T>;
}
export declare class PgwasmTransaction<TRelations extends AnyRelations> extends PgAsyncTransaction<PgwasmQueryResultHKT, TRelations> {
#private;
static readonly [entityKind]: string;
constructor(dialect: PgDialect, session: PgwasmSession<TRelations>, relations: TRelations, nestedIndex: number | undefined, parseRqbJson: boolean | undefined);
transaction<T>(transaction: (tx: PgwasmTransaction<TRelations>) => Promise<T>): Promise<T>;
}
export {};
//# sourceMappingURL=session.d.ts.map