From 8e2c15214ed306ab7662e1f14ea3676a19d534a8 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Mon, 27 Apr 2026 22:57:34 -0400 Subject: [PATCH] fix(opencode): refresh effect sqlite client after reset --- packages/opencode/src/storage/db-effect.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/storage/db-effect.ts b/packages/opencode/src/storage/db-effect.ts index 8cbf889279..9eb223d7d8 100644 --- a/packages/opencode/src/storage/db-effect.ts +++ b/packages/opencode/src/storage/db-effect.ts @@ -7,6 +7,18 @@ const schema = { ...StorageSchema } export class Service extends Context.Service>()("@opencode/DatabaseEffect") {} -export const layer = Layer.sync(Service, () => drizzle({ client: Database.Client().$client, schema })) +export const layer = Layer.sync(Service, () => { + let current: EffectSQLiteDatabase | undefined + + return new Proxy({} as EffectSQLiteDatabase, { + get(_target, property) { + const client = Database.Client().$client + if (current?.$client !== client) current = drizzle({ client, schema }) + + const value = Reflect.get(current, property) + return typeof value === "function" ? value.bind(current) : value + }, + }) +}) export * as DatabaseEffect from "./db-effect"