quicklite
Version:
A lightweight ORM toolkit for SQLite in Node.js applications
66 lines (65 loc) • 1.63 kB
TypeScript
import Database from 'better-sqlite3';
import { BaseEntity } from '../core/BaseEntity';
/**
* 表结构差异
*/
export interface TableDiff {
/**
* 需要添加的列
*/
addedColumns: string[];
/**
* 需要修改的列
*/
alteredColumns: string[];
/**
* 需要删除的列
*/
removedColumns: string[];
/**
* 是否需要重建表
*/
needsRebuild: boolean;
}
/**
* 迁移操作接口
*/
export interface MigrationOperation {
/**
* 执行迁移操作
* @param db 数据库实例
*/
up(db: Database.Database): void;
/**
* 回滚迁移操作
* @param db 数据库实例
*/
down(db: Database.Database): void;
}
/**
* 数据库迁移工具
*/
export declare class MigrationUtil {
/**
* 检查模型与数据库表的差异
* @param db 数据库实例
* @param entityClass 实体类
* @returns 表结构差异信息
*/
static checkTableDiff(db: Database.Database, entityClass: typeof BaseEntity): Promise<TableDiff>;
/**
* 执行表迁移
* @param db 数据库实例
* @param entityClass 实体类
* @param preserveData 是否保留数据
* @returns 是否成功迁移
*/
static migrateTable(db: Database.Database, entityClass: typeof BaseEntity, preserveData?: boolean): boolean;
/**
* 重建表(用于结构变更较大时)
* @param db 数据库实例
* @param entityClass 实体类
* @returns 是否重建成功
*/
static rebuildTable(db: Database.Database, entityClass: typeof BaseEntity): boolean;
}