import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'; /** * Controls how the backend manages SQLite transactions. * * - `"sql"`: TypeGraph issues BEGIN / COMMIT / ROLLBACK SQL directly on * the connection. Default for sync drivers (better-sqlite3, * bun:sqlite); also selected by `createLibsqlBackend` for * local `@libsql/client` connections (`file:` / `:memory:`), * whose `client.transaction()` permanently abandons the * current connection — fatal for an in-memory database. * - `"drizzle"`: Delegates to Drizzle's `db.transaction()` method. * Default for async drivers (remote libsql/Turso, sql.js). * - `"do-sqlite"`: Delegates to the Cloudflare Durable Objects async * storage transaction runner (`db.$client.transaction`, * i.e. `ctx.storage.transaction(async ...)`). Drizzle's * own `db.transaction()` on DO is * `ctx.storage.transactionSync` and cannot span `await`, * so it is deliberately not used. Auto-detected for * `drizzle(ctx.storage)` (#140). * - `"none"`: Transactions disabled. Default for Cloudflare D1 * (`D1Database.batch` is transactional but not an * interactive runner — tracked separately). */ type SqliteTransactionMode = "sql" | "drizzle" | "none" | "do-sqlite"; type SqliteExecutionProfileHints = Readonly<{ isSync?: boolean; transactionMode?: SqliteTransactionMode; }>; type AnySqliteDatabase = BaseSQLiteDatabase<"sync" | "async", unknown>; export type { AnySqliteDatabase as A, SqliteTransactionMode as S, SqliteExecutionProfileHints as a };