AK-21/Graphite-Industrial-Intelligence
0
1import { type Cache } from "../cache/core/cache.cjs";2import type { WithCacheConfig } from "../cache/core/types.cjs";3import { entityKind } from "../entity.cjs";4import { QueryPromise } from "../query-promise.cjs";5import type { TablesRelationalConfig } from "../relations.cjs";6import type { PreparedQuery } from "../session.cjs";7import type { Query, SQL } from "../sql/sql.cjs";8import type { SQLiteAsyncDialect, SQLiteSyncDialect } from "./dialect.cjs";9import { BaseSQLiteDatabase } from "./db.cjs";10import type { SQLiteRaw } from "./query-builders/raw.cjs";11import type { SelectedFieldsOrdered } from "./query-builders/select.types.cjs";12export interface PreparedQueryConfig {13 type: 'sync' | 'async';14 run: unknown;15 all: unknown;16 get: unknown;17 values: unknown;18 execute: unknown;19}20export 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}27export type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult> : ExecuteResultSync<TResult>;28export 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}51export interface SQLiteTransactionConfig {52 behavior?: 'deferred' | 'immediate' | 'exclusive';53}54export type SQLiteExecuteMethod = 'run' | 'all' | 'get';55export 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}82export type Result<TKind extends 'sync' | 'async', TResult> = {83 sync: TResult;84 async: Promise<TResult>;85}[TKind];86export type DBResult<TKind extends 'sync' | 'async', TResult> = {87 sync: TResult;88 async: SQLiteRaw<TResult>;89}[TKind];90export 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}108 