import Database, { Database as DatabaseConstructor } from "better-sqlite3" import { ensureDbDir } from "./utils/ensureDbDir" import { ISQLiteAPIFactory, ISQLiteAPIOptions } from "./type" export const getSQLiteAPI_BetterSQLite: ISQLiteAPIFactory = ( dbPath: string | Buffer, options?: ISQLiteAPIOptions ) => { let sqliteOptions: any = {} if (options?.readonly) sqliteOptions["readonly"] = options.readonly if (options?.nativeBinding) sqliteOptions["nativeBinding"] = options.nativeBinding // 自动创建父目录 ensureDbDir(dbPath) let sqlite = new Database(dbPath, sqliteOptions) if (options?.safeMode) { sqlite.pragma("synchronous = EXTRA") } else if (options?.fastMode) { sqlite.pragma("journal_mode = WAL") sqlite.pragma("synchronous = OFF") } else { sqlite.pragma("journal_mode = WAL") sqlite.pragma("synchronous = NORMAL") } return sqlite }