(db: Database.Database)
| 146 | * 将 better-sqlite3.Database 实例包装为 DatabaseAdapter 接口 |
| 147 | */ |
| 148 | export function wrapAsDatabaseAdapter(db: Database.Database): DatabaseAdapter { |
| 149 | return { |
| 150 | readonly: db.readonly, |
| 151 | exec(sql: string) { |
| 152 | db.exec(sql) |
| 153 | }, |
| 154 | prepare(sql: string): PreparedStatement { |
| 155 | const stmt = db.prepare(sql) |
| 156 | return { |
| 157 | readonly: stmt.readonly, |
| 158 | get(...params: unknown[]) { |
| 159 | return stmt.get(...params) as Record<string, unknown> | undefined |
| 160 | }, |
| 161 | all(...params: unknown[]) { |
| 162 | return stmt.all(...params) as Record<string, unknown>[] |
| 163 | }, |
| 164 | run(...params: unknown[]): RunResult { |
| 165 | const result = stmt.run(...params) |
| 166 | return { changes: result.changes, lastInsertRowid: result.lastInsertRowid } |
| 167 | }, |
| 168 | } |
| 169 | }, |
| 170 | transaction<T>(fn: () => T): T { |
| 171 | return db.transaction(fn)() |
| 172 | }, |
| 173 | pragma(pragma: string) { |
| 174 | return db.pragma(pragma) |
| 175 | }, |
| 176 | close() { |
| 177 | db.close() |
| 178 | }, |
| 179 | } |
| 180 | } |
| 181 | |
| 182 | /** |
| 183 | * 打开数据库并返回 DatabaseAdapter(用于调用 @openchatlab/core 查询函数) |
no outgoing calls
no test coverage detected