{"version":3,"file":"driver.cjs","names":["SQLiteEffectDatabase","entityKind","Effect","SqliteClient","EffectCache","EffectLogger","SQLiteDialect","EffectSQLiteNodeSession","DefaultServices"],"sources":["../../src/effect-sqlite-node/driver.ts"],"sourcesContent":["import { SqliteClient } from '@effect/sql-sqlite-node/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 { jitCompatCheck } from '~/utils.ts';\nimport {\n\ttype EffectSQLiteNodeQueryEffectHKT,\n\ttype EffectSQLiteNodeRunResult,\n\tEffectSQLiteNodeSession,\n} from './session.ts';\nexport { DefaultServices } from '~/effect-core/defaults.ts';\n\nexport class EffectSQLiteNodeDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends SQLiteEffectDatabase<EffectSQLiteNodeQueryEffectHKT, EffectSQLiteNodeRunResult, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'EffectSQLiteNodeDatabase';\n}\n\n/**\n * Creates an EffectSQLiteNodeDatabase 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* SQLiteNodeDrizzle.make({ relations }).pipe(\n *   Effect.provide(SQLiteNodeDrizzle.DefaultServices),\n * );\n *\n * // With Effect-based logging\n * const db = yield* SQLiteNodeDrizzle.make({ relations }).pipe(\n *   Effect.provide(EffectLogger.layer),\n *   Effect.provide(SQLiteNodeDrizzle.DefaultServices),\n * );\n *\n * // With custom Drizzle logger\n * const db = yield* SQLiteNodeDrizzle.make({ relations }).pipe(\n *   Effect.provide(EffectLogger.layerFromDrizzle(myLogger)),\n *   Effect.provide(SQLiteNodeDrizzle.DefaultServices),\n * );\n * ```\n */\nexport const make = Effect.fn('SQLiteNodeDrizzle.make')(\n\tfunction*<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(config: EffectDrizzleSQLiteConfig<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\t\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t\t});\n\n\t\tconst relations = config.relations ?? {} as TRelations;\n\t\tconst session = new EffectSQLiteNodeSession(client, dialect, relations, {\n\t\t\tlogger,\n\t\t\tcache,\n\t\t});\n\t\tconst db = new EffectSQLiteNodeDatabase(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 EffectSQLiteNodeDatabase<TRelations> & {\n\t\t\t$client: SqliteClient;\n\t\t};\n\t},\n);\n\n/**\n * Convenience function that creates an EffectSQLiteNodeDatabase with `DefaultServices` already provided.\n */\nexport const makeWithDefaults = <\n\tTRelations extends AnyRelations = EmptyRelations,\n>(config: EffectDrizzleSQLiteConfig<TRelations> = {}) => make(config).pipe(Effect.provide(DefaultServices));\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,IAAa,2BAAb,cACSA,gDACT;CACC,QAA0BC,0BAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BjD,MAAa,OAAOC,cAAO,GAAG,yBAAyB,CACtD,WAEE,SAAgD,EAAE,EAAE;CACrD,MAAM,SAAS,OAAOC;CACtB,MAAM,QAAQ,OAAOC;CACrB,MAAM,SAAS,OAAOC;CAEtB,MAAM,UAAU,IAAIC,uCAAc,EACjC,8CAA8B,OAAO,IAAI,EACzC,CAAC;CAEF,MAAM,YAAY,OAAO,aAAa,EAAE;CAKxC,MAAM,KAAK,IAAI,yBAAyB,SAJxB,IAAIC,2DAAwB,QAAQ,SAAS,WAAW;EACvE;EACA;EACA,CAAC,EACwD,UAAU;AACpE,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS;AACpB,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,MAAM;AAGzC,QAAO;EAIR;;;;AAKD,MAAa,oBAEX,SAAgD,EAAE,KAAK,KAAK,OAAO,CAAC,KAAKL,cAAO,QAAQM,0CAAgB,CAAC"}