session.d.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { type Client, Pool, type PoolClient, type QueryResult, type QueryResultRow } from '@neondatabase/serverless';
  2. import { type Cache } from "../cache/core/cache.js";
  3. import type { WithCacheConfig } from "../cache/core/types.js";
  4. import { entityKind } from "../entity.js";
  5. import type { Logger } from "../logger.js";
  6. import type { PgDialect } from "../pg-core/dialect.js";
  7. import { PgTransaction } from "../pg-core/index.js";
  8. import type { SelectedFieldsOrdered } from "../pg-core/query-builders/select.types.js";
  9. import type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from "../pg-core/session.js";
  10. import { PgPreparedQuery, PgSession } from "../pg-core/session.js";
  11. import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
  12. import { type Query, type SQL } from "../sql/sql.js";
  13. import { type Assume } from "../utils.js";
  14. export type NeonClient = Pool | PoolClient | Client;
  15. export declare class NeonPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {
  16. private client;
  17. private params;
  18. private logger;
  19. private fields;
  20. private _isResponseInArrayMode;
  21. private customResultMapper?;
  22. static readonly [entityKind]: string;
  23. private rawQueryConfig;
  24. private queryConfig;
  25. constructor(client: NeonClient, queryString: string, params: unknown[], logger: Logger, cache: Cache, queryMetadata: {
  26. type: 'select' | 'update' | 'delete' | 'insert';
  27. tables: string[];
  28. } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, name: string | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
  29. execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
  30. all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
  31. values(placeholderValues?: Record<string, unknown> | undefined): Promise<T['values']>;
  32. }
  33. export interface NeonSessionOptions {
  34. logger?: Logger;
  35. cache?: Cache;
  36. }
  37. export declare class NeonSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgSession<NeonQueryResultHKT, TFullSchema, TSchema> {
  38. private client;
  39. private schema;
  40. private options;
  41. static readonly [entityKind]: string;
  42. private logger;
  43. private cache;
  44. constructor(client: NeonClient, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: NeonSessionOptions);
  45. prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute'], queryMetadata?: {
  46. type: 'select' | 'update' | 'delete' | 'insert';
  47. tables: string[];
  48. }, cacheConfig?: WithCacheConfig): PgPreparedQuery<T>;
  49. query(query: string, params: unknown[]): Promise<QueryResult>;
  50. queryObjects<T extends QueryResultRow>(query: string, params: unknown[]): Promise<QueryResult<T>>;
  51. count(sql: SQL): Promise<number>;
  52. transaction<T>(transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>, config?: PgTransactionConfig): Promise<T>;
  53. }
  54. export declare class NeonTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgTransaction<NeonQueryResultHKT, TFullSchema, TSchema> {
  55. static readonly [entityKind]: string;
  56. transaction<T>(transaction: (tx: NeonTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
  57. }
  58. export interface NeonQueryResultHKT extends PgQueryResultHKT {
  59. type: QueryResult<Assume<this['row'], QueryResultRow>>;
  60. }