session.d.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import type { FieldPacket, ResultSetHeader } from 'mysql2/promise';
  2. import { type Cache } from "../cache/core/index.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 { MySqlDialect } from "../mysql-core/dialect.js";
  7. import { MySqlTransaction } from "../mysql-core/index.js";
  8. import type { SelectedFieldsOrdered } from "../mysql-core/query-builders/select.types.js";
  9. import type { MySqlPreparedQueryConfig, MySqlPreparedQueryHKT, MySqlQueryResultHKT, MySqlTransactionConfig, PreparedQueryKind } from "../mysql-core/session.js";
  10. import { MySqlPreparedQuery as PreparedQueryBase, MySqlSession } from "../mysql-core/session.js";
  11. import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
  12. import type { Query, SQL } from "../sql/sql.js";
  13. import { type Assume } from "../utils.js";
  14. import type { RemoteCallback } from "./driver.js";
  15. export type MySqlRawQueryResult = [ResultSetHeader, FieldPacket[]];
  16. export interface MySqlRemoteSessionOptions {
  17. logger?: Logger;
  18. cache?: Cache;
  19. }
  20. export declare class MySqlRemoteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MySqlSession<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TFullSchema, TSchema> {
  21. private client;
  22. private schema;
  23. static readonly [entityKind]: string;
  24. private logger;
  25. private cache;
  26. constructor(client: RemoteCallback, dialect: MySqlDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: MySqlRemoteSessionOptions);
  27. prepareQuery<T extends MySqlPreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered, queryMetadata?: {
  28. type: 'select' | 'update' | 'delete' | 'insert';
  29. tables: string[];
  30. }, cacheConfig?: WithCacheConfig): PreparedQueryKind<MySqlRemotePreparedQueryHKT, T>;
  31. all<T = unknown>(query: SQL): Promise<T[]>;
  32. transaction<T>(_transaction: (tx: MySqlProxyTransaction<TFullSchema, TSchema>) => Promise<T>, _config?: MySqlTransactionConfig): Promise<T>;
  33. }
  34. export declare class MySqlProxyTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MySqlTransaction<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TFullSchema, TSchema> {
  35. static readonly [entityKind]: string;
  36. transaction<T>(_transaction: (tx: MySqlProxyTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
  37. }
  38. export declare class PreparedQuery<T extends MySqlPreparedQueryConfig> extends PreparedQueryBase<T> {
  39. private client;
  40. private queryString;
  41. private params;
  42. private logger;
  43. private fields;
  44. private customResultMapper?;
  45. private generatedIds?;
  46. private returningIds?;
  47. static readonly [entityKind]: string;
  48. constructor(client: RemoteCallback, queryString: string, params: unknown[], logger: Logger, cache: Cache, queryMetadata: {
  49. type: 'select' | 'update' | 'delete' | 'insert';
  50. tables: string[];
  51. } | undefined, cacheConfig: WithCacheConfig | undefined, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined);
  52. execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
  53. iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
  54. }
  55. export interface MySqlRemoteQueryResultHKT extends MySqlQueryResultHKT {
  56. type: MySqlRawQueryResult;
  57. }
  58. export interface MySqlRemotePreparedQueryHKT extends MySqlPreparedQueryHKT {
  59. type: PreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;
  60. }