session.d.cts 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { type Cache } from "../cache/core/cache.cjs";
  2. import type { WithCacheConfig } from "../cache/core/types.cjs";
  3. import { entityKind } from "../entity.cjs";
  4. import { QueryPromise } from "../query-promise.cjs";
  5. import type { TablesRelationalConfig } from "../relations.cjs";
  6. import type { PreparedQuery } from "../session.cjs";
  7. import type { Query, SQL } from "../sql/sql.cjs";
  8. import type { SQLiteAsyncDialect, SQLiteSyncDialect } from "./dialect.cjs";
  9. import { BaseSQLiteDatabase } from "./db.cjs";
  10. import type { SQLiteRaw } from "./query-builders/raw.cjs";
  11. import type { SelectedFieldsOrdered } from "./query-builders/select.types.cjs";
  12. export interface PreparedQueryConfig {
  13. type: 'sync' | 'async';
  14. run: unknown;
  15. all: unknown;
  16. get: unknown;
  17. values: unknown;
  18. execute: unknown;
  19. }
  20. export declare class ExecuteResultSync<T> extends QueryPromise<T> {
  21. private resultCb;
  22. static readonly [entityKind]: string;
  23. constructor(resultCb: () => T);
  24. execute(): Promise<T>;
  25. sync(): T;
  26. }
  27. export type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult> : ExecuteResultSync<TResult>;
  28. export declare abstract class SQLitePreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {
  29. private mode;
  30. private executeMethod;
  31. protected query: Query;
  32. private cache?;
  33. private queryMetadata?;
  34. private cacheConfig?;
  35. static readonly [entityKind]: string;
  36. constructor(mode: 'sync' | 'async', executeMethod: SQLiteExecuteMethod, query: Query, cache?: Cache | undefined, queryMetadata?: {
  37. type: 'select' | 'update' | 'delete' | 'insert';
  38. tables: string[];
  39. } | undefined, cacheConfig?: WithCacheConfig | undefined);
  40. getQuery(): Query;
  41. abstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;
  42. mapRunResult(result: unknown, _isFromBatch?: boolean): unknown;
  43. abstract all(placeholderValues?: Record<string, unknown>): Result<T['type'], T['all']>;
  44. mapAllResult(_result: unknown, _isFromBatch?: boolean): unknown;
  45. abstract get(placeholderValues?: Record<string, unknown>): Result<T['type'], T['get']>;
  46. mapGetResult(_result: unknown, _isFromBatch?: boolean): unknown;
  47. abstract values(placeholderValues?: Record<string, unknown>): Result<T['type'], T['values']>;
  48. execute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']>;
  49. mapResult(response: unknown, isFromBatch?: boolean): unknown;
  50. }
  51. export interface SQLiteTransactionConfig {
  52. behavior?: 'deferred' | 'immediate' | 'exclusive';
  53. }
  54. export type SQLiteExecuteMethod = 'run' | 'all' | 'get';
  55. export declare abstract class SQLiteSession<TResultKind extends 'sync' | 'async', TRunResult, TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> {
  56. static readonly [entityKind]: string;
  57. constructor(
  58. /** @internal */
  59. dialect: {
  60. sync: SQLiteSyncDialect;
  61. async: SQLiteAsyncDialect;
  62. }[TResultKind]);
  63. abstract prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: {
  64. type: 'select' | 'update' | 'delete' | 'insert';
  65. tables: string[];
  66. }, cacheConfig?: WithCacheConfig): SQLitePreparedQuery<PreparedQueryConfig & {
  67. type: TResultKind;
  68. }>;
  69. prepareOneTimeQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: {
  70. type: 'select' | 'update' | 'delete' | 'insert';
  71. tables: string[];
  72. }, cacheConfig?: WithCacheConfig): SQLitePreparedQuery<PreparedQueryConfig & {
  73. type: TResultKind;
  74. }>;
  75. abstract transaction<T>(transaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>, config?: SQLiteTransactionConfig): Result<TResultKind, T>;
  76. run(query: SQL): Result<TResultKind, TRunResult>;
  77. all<T = unknown>(query: SQL): Result<TResultKind, T[]>;
  78. get<T = unknown>(query: SQL): Result<TResultKind, T>;
  79. values<T extends any[] = unknown[]>(query: SQL): Result<TResultKind, T[]>;
  80. count(sql: SQL): Promise<number>;
  81. }
  82. export type Result<TKind extends 'sync' | 'async', TResult> = {
  83. sync: TResult;
  84. async: Promise<TResult>;
  85. }[TKind];
  86. export type DBResult<TKind extends 'sync' | 'async', TResult> = {
  87. sync: TResult;
  88. async: SQLiteRaw<TResult>;
  89. }[TKind];
  90. export declare abstract class SQLiteTransaction<TResultType extends 'sync' | 'async', TRunResult, TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends BaseSQLiteDatabase<TResultType, TRunResult, TFullSchema, TSchema> {
  91. protected schema: {
  92. fullSchema: Record<string, unknown>;
  93. schema: TSchema;
  94. tableNamesMap: Record<string, string>;
  95. } | undefined;
  96. protected readonly nestedIndex: number;
  97. static readonly [entityKind]: string;
  98. constructor(resultType: TResultType, dialect: {
  99. sync: SQLiteSyncDialect;
  100. async: SQLiteAsyncDialect;
  101. }[TResultType], session: SQLiteSession<TResultType, TRunResult, TFullSchema, TSchema>, schema: {
  102. fullSchema: Record<string, unknown>;
  103. schema: TSchema;
  104. tableNamesMap: Record<string, string>;
  105. } | undefined, nestedIndex?: number);
  106. rollback(): never;
  107. }