summaryrefslogtreecommitdiffhomepage
path: root/packages/opencode/src/storage/db.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/opencode/src/storage/db.ts')
-rw-r--r--packages/opencode/src/storage/db.ts13
1 files changed, 13 insertions, 0 deletions
diff --git a/packages/opencode/src/storage/db.ts b/packages/opencode/src/storage/db.ts
index 6d7bfd728..f29aac18d 100644
--- a/packages/opencode/src/storage/db.ts
+++ b/packages/opencode/src/storage/db.ts
@@ -33,6 +33,10 @@ export namespace Database {
type Journal = { sql: string; timestamp: number }[]
+ const state = {
+ sqlite: undefined as BunDatabase | undefined,
+ }
+
function time(tag: string) {
const match = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/.exec(tag)
if (!match) return 0
@@ -69,6 +73,7 @@ export namespace Database {
log.info("opening database", { path: path.join(Global.Path.data, "opencode.db") })
const sqlite = new BunDatabase(path.join(Global.Path.data, "opencode.db"), { create: true })
+ state.sqlite = sqlite
sqlite.run("PRAGMA journal_mode = WAL")
sqlite.run("PRAGMA synchronous = NORMAL")
@@ -95,6 +100,14 @@ export namespace Database {
return db
})
+ export function close() {
+ const sqlite = state.sqlite
+ if (!sqlite) return
+ sqlite.close()
+ state.sqlite = undefined
+ Client.reset()
+ }
+
export type TxOrDb = Transaction | Client
const ctx = Context.create<{