diff --git a/apps/server/src/persistence/Layers/Sqlite.ts b/apps/server/src/persistence/Layers/Sqlite.ts index 58556099db..709a88c30e 100644 --- a/apps/server/src/persistence/Layers/Sqlite.ts +++ b/apps/server/src/persistence/Layers/Sqlite.ts @@ -35,6 +35,11 @@ const setup = Layer.effectDiscard( }), ); + // `setup` depends on SqlClient, so runtime layer must be provided into `setup`. + // Keep ordering consistent with file-backed persistence (setup requires SqlClient). +const makeSqlitePersistenceLayer = (config: RuntimeSqliteLayerConfig) => + Layer.provideMerge(setup, makeRuntimeSqliteLayer(config)); + export const makeSqlitePersistenceLive = Effect.fn("makeSqlitePersistenceLive")(function* ( dbPath: string, ) { @@ -42,22 +47,15 @@ export const makeSqlitePersistenceLive = Effect.fn("makeSqlitePersistenceLive")( const path = yield* Path.Path; yield* fs.makeDirectory(path.dirname(dbPath), { recursive: true }); - return Layer.provideMerge( - setup, - makeRuntimeSqliteLayer({ - filename: dbPath, - spanAttributes: { - "db.name": path.basename(dbPath), - "service.name": "t3-server", - }, - }), - ); -}, Layer.unwrap); + return makeSqlitePersistenceLayer({ + filename: dbPath, + spanAttributes: { + "db.name": path.basename(dbPath), + "service.name": "t3-server", + }, + }); -export const SqlitePersistenceMemory = Layer.provideMerge( - setup, - makeRuntimeSqliteLayer({ filename: ":memory:" }), -); +export const SqlitePersistenceMemory = makeSqlitePersistenceLayer({ filename: ":memory:" }); export const layerConfig = Layer.unwrap( Effect.map(Effect.service(ServerConfig), ({ dbPath }) => makeSqlitePersistenceLive(dbPath)),