import type { Dialect } from './dialect.js'; import { Model } from './model.js'; import { Definition, QueryParams, AlterDefinition, Condition, BuildQueryResult, TransactionOptions, TransactionContext } from '../types.js'; import * as QueryClasses from './query-classes.js'; /** * 查询日志处理器类型 */ export type QueryLogger = (info: { sql: string; params?: any[]; duration: number; error?: Error; }) => void; /** * 基础数据库抽象类 * 定义所有数据库类型的通用接口和行为 */ export declare abstract class Database = Record, Q = string> { readonly dialect: Dialect; protected hasStarted: boolean; readonly definitions: Database.Definitions; readonly models: Database.Models; private _logger?; private _logging; constructor(dialect: Dialect, definitions?: Database.DefinitionObj); /** * 启用查询日志 * @param handler 自定义日志处理器,不传则使用默认控制台输出 */ enableLogging(handler?: QueryLogger): this; /** * 禁用查询日志 */ disableLogging(): this; /** * 查询日志是否启用 */ get isLogging(): boolean; /** * 记录查询日志 */ protected log(sql: string, params?: any[], duration?: number, error?: Error): void; /** * 数据库是否已启动 */ get isStarted(): boolean; /** * 启动数据库 */ start(): Promise; /** * 停止数据库 */ stop(): Promise; /** * 健康检查 */ healthCheck(): Promise; /** * 执行原生查询 */ query(sql: Q, params?: any[]): Promise; abstract buildQuery(params: QueryParams): BuildQueryResult; /** * 获取数据库方言名称 */ get dialectName(): string; /** * 获取数据库配置 */ get config(): any; /** * 抽象方法:初始化数据库 */ protected abstract initialize(): Promise; define(name: K, definition: Definition): void; /** * 删除表定义 */ destroy(name: K): void; /** * 创建表 */ create(name: T, definition: Definition): QueryClasses.Creation; alter(name: T, alterations: AlterDefinition): QueryClasses.Alteration; select(name: T, fields: Array): QueryClasses.Selection; insert(name: T, data: S[T]): QueryClasses.Insertion; update(name: T, update: Partial): QueryClasses.Updation; delete(name: T, condition: Condition): QueryClasses.Deletion; /** * 批量插入 */ insertMany(name: T, data: S[T][]): QueryClasses.BatchInsertion; /** * 聚合查询 */ aggregate(name: T): QueryClasses.Aggregation; /** * 是否支持事务 */ supportsTransactions(): boolean; /** * 在事务中执行操作 * 自动处理 commit 和 rollback * 支持链式调用:trx.insert(), trx.select(), trx.update(), trx.delete() */ transaction(callback: (trx: TransactionContext) => Promise, options?: TransactionOptions): Promise; /** * 抽象方法:获取所有模型名称 */ abstract getModelNames(): string[]; /** * 抽象方法:清理资源 */ dispose(): Promise; } export declare namespace Database { class Definitions> extends Map> { constructor(); } class Models, D = any, Q = string> extends Map> { constructor(); get(key: K): Model | undefined; } type DefinitionObj> = { [K in keyof S]: Definition; }; } //# sourceMappingURL=database.d.ts.map