import { QueryBuilder } from "./query/query-builder/QueryBuilder"; import { IDbContextExecutor, IQueryResultParseOption } from "./IDbContextExecutor"; import { QueryHelper } from "./query/query-builder/QueryHelper"; import { DateTime, Type } from "@simplysm/sd-core-common"; import { Queryable } from "./query/queryable/Queryable"; import { SystemMigration } from "./models/SystemMigration"; import { IQueryColumnDef, IQueryTableNameDef, TQueryDef } from "./query/query-builder/types"; import { IDbMigration, ITableDef } from "./types"; import { ISOLATION_LEVEL } from "./IDbConn"; export declare abstract class DbContext { private readonly _executor; opt: TDbContextOption; status: "ready" | "connect" | "transact"; lastConnectionDateTime?: DateTime; prepareDefs: TQueryDef[]; abstract get migrations(): Type[]; qb: QueryBuilder; qh: QueryHelper; systemMigration: Queryable; getTableDefinitions(): ITableDef[]; constructor(_executor: IDbContextExecutor | undefined, opt: TDbContextOption); connectWithoutTransactionAsync(callback: () => Promise): Promise; connectAsync(fn: () => Promise, isolationLevel?: ISOLATION_LEVEL): Promise; transAsync(fn: () => Promise, isolationLevel?: ISOLATION_LEVEL): Promise; executeDefsAsync(defs: TQueryDef[], options?: (IQueryResultParseOption | undefined)[]): Promise; executeParametrizedAsync(query: string, params?: any[]): Promise; bulkInsertAsync(tableName: string, columnDefs: IQueryColumnDef[], records: Record[]): Promise; bulkUpsertAsync(tableName: string, columnDefs: IQueryColumnDef[], records: Record[]): Promise; executePreparedAsync(): Promise; getIsDbExistsAsync(database?: string): Promise; getIsTableExistsAsync(tableNameDef: IQueryTableNameDef): Promise; get tableDefs(): ITableDef[]; getTableInfosAsync(database: string, schema?: string): Promise<{ schema: string; name: string; }[]>; getTableColumnInfosAsync(database: string, schema: string, table: string): Promise<{ name: string; dataType: string; length?: number; precision?: number; digits?: number; nullable: boolean; autoIncrement: boolean; }[]>; getTablePkColumnNamesAsync(database: string, schema: string, table: string): Promise; getTableFksAsync(database: string, schema: string, table: string): Promise<{ name: string; sourceColumnNames: string[]; targetSchemaName: string; targetTableName: string; }[]>; getTableIndexesAsync(database: string, schema: string, table: string): Promise<{ name: string; columns: { name: string; orderBy: "ASC" | "DESC"; }[]; }[]>; truncateTable(table: string): Promise; initializeAsync(dbs?: string[], force?: boolean): Promise<"creation" | "migration" | undefined>; getCreateTablesFullQueryDefsFromTableDef(tableDefs: ITableDef[]): TQueryDef[][]; getCreateTableQueryDefFromTableDef(tableDef: ITableDef): TQueryDef; getCreateFksQueryDefsFromTableDef(tableDef: ITableDef): TQueryDef[]; getCreateIndexesQueryDefsFromTableDef(tableDef: ITableDef): TQueryDef[]; getAddColumnQueryDefFromTableDef(tableDef: ITableDef, columnName: string): TQueryDef; getModifyColumnQueryDefFromTableDef(tableDef: ITableDef, columnName: string): TQueryDef; getModifyPkQueryDefFromTableDef(tableDef: ITableDef, columnNames: string[]): TQueryDef[]; getAddFkQueryDefFromTableDef(tableDef: ITableDef, fkName: string): TQueryDef; getRemoveFkQueryDefFromTableDef(tableDef: ITableDef, fkName: string): TQueryDef; getCreateIndexQueryDefFromTableDef(tableDef: ITableDef, indexName: string): TQueryDef; getDropIndexQueryDefFromTableDef(tableDef: ITableDef, indexName: string): TQueryDef; getTableNameDef(tableDef: ITableDef): IQueryTableNameDef; } export type TDbContextOption = IDefaultDbContextOption | ISqliteDbContextOption; export interface IDefaultDbContextOption { dialect: "mysql" | "mssql" | "mssql-azure"; database?: string; schema?: string; } export interface ISqliteDbContextOption { dialect: "sqlite"; }