autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
38 lines (37 loc) • 1.21 kB
JavaScript
/**
* Drizzle ORM 实例管理
*
* 延迟初始化 — 在 DatabaseConnection.connect() 之后由 initDrizzle() 激活。
* 新旧代码共存:drizzle 和 raw better-sqlite3 可同时操作同一个连接。
*/
import { drizzle } from 'drizzle-orm/better-sqlite3';
import * as schema from './schema.js';
/** 单例实例(延迟初始化) */
let _drizzle = null;
/**
* 初始化 Drizzle ORM 实例
* @param betterSqlite3Db raw better-sqlite3 Database 实例
* @returns Drizzle 包装实例
*/
export function initDrizzle(betterSqlite3Db) {
_drizzle = drizzle(betterSqlite3Db, { schema });
return _drizzle;
}
/**
* 获取已初始化的 Drizzle 实例
* @deprecated 优先使用 DatabaseConnection.getDrizzle() 或通过 DI 注入。
* 全局单例将在未来版本移除。
* @throws 若未调用 initDrizzle() 则抛错
*/
export function getDrizzle() {
if (!_drizzle) {
throw new Error('Drizzle not initialized. Call initDrizzle() after DatabaseConnection.connect().');
}
return _drizzle;
}
/** 重置 Drizzle 实例(测试用) */
export function resetDrizzle() {
_drizzle = null;
}
// Re-export schema for convenience
export { schema };