69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
/**
|
|
* metona-sqlark Engine Interface — 存储引擎抽象接口
|
|
* @module engine/interface
|
|
*/
|
|
|
|
import type { QueryPlan, TableSchema } from '../constants';
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// IStorageEngine — 所有存储引擎必须实现的接口
|
|
// ---------------------------------------------------------------------------
|
|
|
|
export interface IStorageEngine {
|
|
/** 引擎名称 */
|
|
readonly name: string;
|
|
|
|
/** 打开数据库 */
|
|
open(dbName: string, version: number): Promise<void>;
|
|
|
|
/** 关闭数据库 */
|
|
close(): Promise<void>;
|
|
|
|
/** 检查数据库是否已打开 */
|
|
isOpen(): boolean;
|
|
|
|
/** 创建表 */
|
|
createTable(schema: TableSchema): Promise<void>;
|
|
|
|
/** 删除表 */
|
|
dropTable(tableName: string): Promise<void>;
|
|
|
|
/** 检查表是否存在 */
|
|
hasTable(tableName: string): Promise<boolean>;
|
|
|
|
/** 获取所有表名 */
|
|
getTableNames(): Promise<string[]>;
|
|
|
|
/** 获取表结构 */
|
|
getTableSchema(tableName: string): Promise<TableSchema | null>;
|
|
|
|
/** 插入行,返回主键值列表 */
|
|
insert(tableName: string, rows: Record<string, unknown>[]): Promise<string[]>;
|
|
|
|
/** 查询行 */
|
|
find(tableName: string, query: QueryPlan): Promise<Record<string, unknown>[]>;
|
|
|
|
/** 更新行,返回影响行数 */
|
|
update(tableName: string, query: QueryPlan, updates: Record<string, unknown>): Promise<number>;
|
|
|
|
/** 删除行,返回影响行数 */
|
|
delete(tableName: string, query: QueryPlan): Promise<number>;
|
|
|
|
/** 计数 */
|
|
count(tableName: string, query?: QueryPlan): Promise<number>;
|
|
|
|
/** 清空表数据(保留结构) */
|
|
clear(tableName: string): Promise<void>;
|
|
|
|
// ---- 事务 ----
|
|
|
|
/** 开始事务 */
|
|
beginTransaction(): Promise<void>;
|
|
|
|
/** 提交事务 */
|
|
commitTransaction(): Promise<void>;
|
|
|
|
/** 回滚事务 */
|
|
rollbackTransaction(): Promise<void>;
|
|
}
|