{"version":3,"file":"driver.cjs","names":["SQLiteEffectDatabase","entityKind","Effect","SqliteClient","EffectCache","EffectLogger","SQLiteDialect","EffectSQLiteDOSession","DefaultServices"],"sources":["../../src/effect-sqlite-do/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport { SqliteClient } from '@effect/sql-sqlite-do/SqliteClient';\nimport * as Effect from 'effect/Effect';\nimport { EffectCache } from '~/cache/core/cache-effect.ts';\nimport { DefaultServices } from '~/effect-core/defaults.ts';\nimport { EffectLogger } from '~/effect-core/index.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteEffectDatabase } from '~/sqlite-core/effect/db.ts';\nimport type { EffectDrizzleSQLiteConfig } from '~/sqlite-core/effect/utils.ts';\nimport { type EffectSQLiteDoQueryEffectHKT, type EffectSQLiteDoRunResult, EffectSQLiteDOSession } from './session.ts';\nexport { DefaultServices } from '~/effect-core/defaults.ts';\n\nexport class EffectSQLiteDoDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends SQLiteEffectDatabase<EffectSQLiteDoQueryEffectHKT, EffectSQLiteDoRunResult, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'EffectSQLiteDoDatabase';\n}\n\nexport type EffectDrizzleSQLiteDoConfig<TRelations extends AnyRelations> =\n\t& Omit<EffectDrizzleSQLiteConfig<TRelations>, 'jit'>\n\t& {\n\t\t/** Required to make transactions functional by bypassing broken implementation from `@effect/sql-sqlite-do` wrapper */\n\t\tstorage: DurableObjectStorage;\n\t};\n\n/**\n * Creates an EffectSQLiteDoDatabase instance.\n *\n * Requires `SqliteClient`, `EffectLogger`, and `EffectCache` services to be provided.\n * Use `DefaultServices` to provide default (no-op) logger and cache implementations.\n *\n * @example\n * ```ts\n * // With default services (no logging, no caching)\n * const db = yield* SQLiteDODrizzle.make({ relations }).pipe(\n *   Effect.provide(SQLiteDODrizzle.DefaultServices),\n * );\n *\n * // With Effect-based logging\n * const db = yield* SQLiteDODrizzle.make({ relations }).pipe(\n *   Effect.provide(EffectLogger.layer),\n *   Effect.provide(SQLiteDODrizzle.DefaultServices),\n * );\n *\n * // With custom Drizzle logger\n * const db = yield* SQLiteDODrizzle.make({ relations }).pipe(\n *   Effect.provide(EffectLogger.layerFromDrizzle(myLogger)),\n *   Effect.provide(SQLiteDODrizzle.DefaultServices),\n * );\n * ```\n */\nexport const make = Effect.fn('SQLiteDODrizzle.make')(\n\tfunction*<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(config: EffectDrizzleSQLiteDoConfig<TRelations>) {\n\t\tconst client = yield* SqliteClient;\n\t\tconst cache = yield* EffectCache;\n\t\tconst logger = yield* EffectLogger;\n\n\t\tconst dialect = new SQLiteDialect();\n\n\t\tconst relations = config.relations ?? {} as TRelations;\n\t\tconst session = new EffectSQLiteDOSession(client, dialect, relations, {\n\t\t\tlogger,\n\t\t\tcache,\n\t\t\tstorage: config.storage,\n\t\t});\n\t\tconst db = new EffectSQLiteDoDatabase(dialect, session, relations);\n\t\t(<any> db).$client = client;\n\t\t(<any> db).$cache = cache;\n\t\tif ((<any> db).$cache) {\n\t\t\t(<any> db).$cache['invalidate'] = cache.onMutate;\n\t\t}\n\n\t\treturn db as EffectSQLiteDoDatabase<TRelations> & {\n\t\t\t$client: SqliteClient;\n\t\t};\n\t},\n);\n\n/**\n * Convenience function that creates an EffectSQLiteDoDatabase with `DefaultServices` already provided.\n */\nexport const makeWithDefaults = <\n\tTRelations extends AnyRelations = EmptyRelations,\n>(config: EffectDrizzleSQLiteDoConfig<TRelations>) => make(config).pipe(Effect.provide(DefaultServices));\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAa,yBAAb,cACSA,gDACT;CACC,QAA0BC,0BAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCjD,MAAa,OAAOC,cAAO,GAAG,uBAAuB,CACpD,WAEE,QAAiD;CAClD,MAAM,SAAS,OAAOC;CACtB,MAAM,QAAQ,OAAOC;CACrB,MAAM,SAAS,OAAOC;CAEtB,MAAM,UAAU,IAAIC,wCAAe;CAEnC,MAAM,YAAY,OAAO,aAAa,EAAE;CAMxC,MAAM,KAAK,IAAI,uBAAuB,SALtB,IAAIC,uDAAsB,QAAQ,SAAS,WAAW;EACrE;EACA;EACA,SAAS,OAAO;EAChB,CAAC,EACsD,UAAU;AAClE,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS;AACpB,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,MAAM;AAGzC,QAAO;EAIR;;;;AAKD,MAAa,oBAEX,WAAoD,KAAK,OAAO,CAAC,KAAKL,cAAO,QAAQM,0CAAgB,CAAC"}