{"version":3,"file":"driver.cjs","names":["PgEffectDatabase","entityKind","Effect","PgliteClient","EffectCache","EffectLogger","PgDialect","effectPgliteCodecs","EffectPgSession","DefaultServices"],"sources":["../../src/effect-pglite/driver.ts"],"sourcesContent":["import { PgliteClient } from '@effect/sql-pglite/PgliteClient';\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 { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgEffectDatabase } from '~/pg-core/effect/db.ts';\nimport type { EffectDrizzlePgConfig } from '~/pg-core/effect/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { effectPgliteCodecs } from './codecs.ts';\nimport { type EffectPgQueryEffectHKT, type EffectPgQueryResultHKT, EffectPgSession } from './session.ts';\nexport { DefaultServices } from '~/effect-core/defaults.ts';\n\nexport class EffectPgDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends PgEffectDatabase<EffectPgQueryEffectHKT, EffectPgQueryResultHKT, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'EffectPgDatabase';\n}\n\n/**\n * Creates an EffectPgDatabase instance.\n *\n * Requires `PgliteClient`, `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* PgDrizzle.make({ relations }).pipe(\n *   Effect.provide(PgDrizzle.DefaultServices),\n * );\n *\n * // With Effect-based logging\n * const db = yield* PgDrizzle.make({ relations }).pipe(\n *   Effect.provide(EffectLogger.layer),\n *   Effect.provide(PgDrizzle.DefaultServices),\n * );\n *\n * // With custom Drizzle logger\n * const db = yield* PgDrizzle.make({ relations }).pipe(\n *   Effect.provide(EffectLogger.layerFromDrizzle(myLogger)),\n *   Effect.provide(PgDrizzle.DefaultServices),\n * );\n * ```\n */\nexport const make = Effect.fn('PgDrizzle.make')(\n\tfunction*<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(config: EffectDrizzlePgConfig<TRelations> = {}) {\n\t\tconst client = yield* PgliteClient;\n\t\tconst cache = yield* EffectCache;\n\t\tconst logger = yield* EffectLogger;\n\n\t\tconst dialect = new PgDialect({\n\t\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t\t\tcodecs: config.codecs ?? effectPgliteCodecs,\n\t\t});\n\n\t\tconst relations = config.relations ?? {} as TRelations;\n\t\tconst session = new EffectPgSession(client, dialect, relations, {\n\t\t\tlogger,\n\t\t\tcache,\n\t\t});\n\t\tconst db = new EffectPgDatabase(dialect, session, relations) as EffectPgDatabase<TRelations>;\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 EffectPgDatabase<TRelations> & {\n\t\t\t$client: PgliteClient;\n\t\t};\n\t},\n);\n\n/**\n * Convenience function that creates an EffectPgDatabase with `DefaultServices` already provided.\n */\nexport const makeWithDefaults = <\n\tTRelations extends AnyRelations = EmptyRelations,\n>(config: EffectDrizzlePgConfig<TRelations> = {}) => make(config).pipe(Effect.provide(DefaultServices));\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,IAAa,mBAAb,cACSA,wCACT;CACC,QAA0BC,0BAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BjD,MAAa,OAAOC,cAAO,GAAG,iBAAiB,CAC9C,WAEE,SAA4C,EAAE,EAAE;CACjD,MAAM,SAAS,OAAOC;CACtB,MAAM,QAAQ,OAAOC;CACrB,MAAM,SAAS,OAAOC;CAEtB,MAAM,UAAU,IAAIC,+BAAU;EAC7B,8CAA8B,OAAO,IAAI;EACzC,QAAQ,OAAO,UAAUC;EACzB,CAAC;CAEF,MAAM,YAAY,OAAO,aAAa,EAAE;CAKxC,MAAM,KAAK,IAAI,iBAAiB,SAJhB,IAAIC,8CAAgB,QAAQ,SAAS,WAAW;EAC/D;EACA;EACA,CAAC,EACgD,UAAU;AAC5D,CAAO,GAAI,UAAU;AACrB,CAAO,GAAI,SAAS;AACpB,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,MAAM;AAGzC,QAAO;EAIR;;;;AAKD,MAAa,oBAEX,SAA4C,EAAE,KAAK,KAAK,OAAO,CAAC,KAAKN,cAAO,QAAQO,0CAAgB,CAAC"}