import type * as Effect from "effect/Effect"; import type * as SqlClient from "effect/unstable/sql/SqlClient"; import type { EffectSqliteDatabaseAdapter, SqliteDatabase } from "./sqliteAdapter"; import { PersistenceInitializationError } from "./errors"; function isEffectSqliteDatabase(db: SqliteDatabase): db is EffectSqliteDatabaseAdapter { return "runWithSqlClient" in db && typeof db.runWithSqlClient === "function"; } export function runWithSqlClient( db: SqliteDatabase, effect: Effect.Effect, ): A { if (isEffectSqliteDatabase(db)) { return db.runWithSqlClient(effect); } throw new PersistenceInitializationError("Expected Effect-backed sqlite adapter"); }