drizzle-orm 1.0.0-beta.22-db6c385 → 1.0.0-beta.22-aaec768

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/bun-sql/postgres/driver.cjs +1 -1
  2. package/bun-sql/postgres/driver.cjs.map +1 -1
  3. package/bun-sql/postgres/driver.js +1 -1
  4. package/bun-sql/postgres/driver.js.map +1 -1
  5. package/bun-sql/postgres/session.cjs +8 -3
  6. package/bun-sql/postgres/session.cjs.map +1 -1
  7. package/bun-sql/postgres/session.js +8 -3
  8. package/bun-sql/postgres/session.js.map +1 -1
  9. package/cache/core/cache-effect.d.cts +1 -1
  10. package/cache/core/cache-effect.d.ts +1 -1
  11. package/cache/upstash/cache.d.cts +1 -1
  12. package/cache/upstash/cache.d.ts +1 -1
  13. package/package.json +1 -1
  14. package/pg-core/async/db.cjs +10 -5
  15. package/pg-core/async/db.cjs.map +1 -1
  16. package/pg-core/async/db.d.cts +2 -1
  17. package/pg-core/async/db.d.ts +2 -1
  18. package/pg-core/async/db.js +10 -5
  19. package/pg-core/async/db.js.map +1 -1
  20. package/pg-core/async/select.cjs +1 -1
  21. package/pg-core/async/select.cjs.map +1 -1
  22. package/pg-core/async/select.js +1 -1
  23. package/pg-core/async/select.js.map +1 -1
  24. package/pg-core/dialect.cjs +10 -0
  25. package/pg-core/dialect.cjs.map +1 -1
  26. package/pg-core/dialect.d.cts +1 -0
  27. package/pg-core/dialect.d.ts +1 -0
  28. package/pg-core/dialect.js +10 -0
  29. package/pg-core/dialect.js.map +1 -1
  30. package/pg-core/query-builders/select.cjs.map +1 -1
  31. package/pg-core/query-builders/select.d.cts +1 -0
  32. package/pg-core/query-builders/select.d.ts +1 -0
  33. package/pg-core/query-builders/select.js.map +1 -1
  34. package/pg-core/query-builders/select.types.d.cts +1 -0
  35. package/pg-core/query-builders/select.types.d.ts +1 -0
  36. package/sql/sql.cjs +21 -2
  37. package/sql/sql.cjs.map +1 -1
  38. package/sql/sql.d.cts +2 -0
  39. package/sql/sql.d.ts +2 -0
  40. package/sql/sql.js +21 -2
  41. package/sql/sql.js.map +1 -1
  42. package/sqlite-core/query-builders/raw.d.cts +1 -0
  43. package/sqlite-core/query-builders/raw.d.ts +1 -0
@@ -192,7 +192,7 @@ function construct(client, config = {}) {
192
192
  const db = new BunSQLDatabase(dialect, new require_bun_sql_postgres_session.BunSQLSession(client, dialect, relations, {
193
193
  logger,
194
194
  cache: config.cache
195
- }), relations);
195
+ }), relations, false, true);
196
196
  db.$client = client;
197
197
  db.$cache = config.cache;
198
198
  if (db.$cache) db.$cache["invalidate"] = config.cache?.onMutate;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.cjs","names":["makePgArray","castToText","castToTextArr","parseGeometryXY","parseGeometryTuple","parsePgArray","PgAsyncDatabase","entityKind","PgDialect","DefaultLogger","BunSQLSession","SQL"],"sources":["../../../src/bun-sql/postgres/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { SQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { makePgArray, parsePgArray } from '~/pg-core/array.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport {\n\tarrayCompatNormalize,\n\tarrayCompatNormalizeInput,\n\tcastToText,\n\tcastToTextArr,\n\tparseGeometryTuple,\n\tparseGeometryXY,\n\tparsePgArrayAndNormalize,\n\trefineGenericPgCodecs,\n} from '~/pg-core/codecs.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { BunSQLQueryResultHKT } from './session.ts';\nimport { BunSQLSession } from './session.ts';\n\nexport const bunSqlPgCodecs = refineGenericPgCodecs({\n\tdate: { normalizeParamArray: makePgArray },\n\t'date:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tuuid: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\ttimestamp: { normalizeParamArray: makePgArray },\n\ttimestamptz: { normalizeParamArray: makePgArray },\n\t'timestamp:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'timestamptz:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tfloat4: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalize: Number,\n\t\tnormalizeArray: arrayCompatNormalize(Number),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigint: {\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'bigint:number': { normalizeParamArray: makePgArray },\n\t'bigint:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigserial: { normalizeParamArray: makePgArray },\n\t'bigserial:number': { normalizeParamArray: makePgArray },\n\tint: {\n\t\tnormalizeArray: (\n\t\t\tvalue: any,\n\t\t\tdimensions: number,\n\t\t) => {\n\t\t\tif (dimensions <= 1) {\n\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\tif (value instanceof Int32Array) {\n\t\t\t\t\treturn Array.from(value) as any;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tconst stack: { arr: any; depth: number }[] = [{ arr: value, depth: 1 }];\n\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tconst { arr, depth } = stack.pop()!;\n\n\t\t\t\tif (depth === dimensions - 1) {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tconst leaf = arr[i];\n\t\t\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\t\t\tif (leaf instanceof Int32Array) {\n\t\t\t\t\t\t\tarr[i] = Array.from(leaf);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tstack.push({ arr: arr[i], depth: depth + 1 });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\n\tbit: { normalizeParamArray: makePgArray },\n\tbool: { normalizeParamArray: makePgArray },\n\tbox: { normalizeParamArray: makePgArray },\n\tbox2d: { normalizeParamArray: makePgArray },\n\tbox3d: { normalizeParamArray: makePgArray },\n\tchar: { normalizeParamArray: makePgArray },\n\tcidr: { normalizeParamArray: makePgArray },\n\tcircle: { normalizeParamArray: makePgArray },\n\tdatemultirange: { normalizeParamArray: makePgArray },\n\tdaterange: { normalizeParamArray: makePgArray },\n\tfloat8: { normalizeParamArray: makePgArray },\n\tgeography: { normalizeParamArray: makePgArray },\n\tinet: { normalizeParamArray: makePgArray },\n\tint4multirange: { normalizeParamArray: makePgArray },\n\tint4range: { normalizeParamArray: makePgArray },\n\tint8multirange: { normalizeParamArray: makePgArray },\n\tint8range: { normalizeParamArray: makePgArray },\n\tlseg: { normalizeParamArray: makePgArray },\n\tmacaddr: { normalizeParamArray: makePgArray },\n\tmoney: { normalizeParamArray: makePgArray },\n\tnummultirange: { normalizeParamArray: makePgArray },\n\tnumrange: { normalizeParamArray: makePgArray },\n\toid: { normalizeParamArray: makePgArray },\n\tpath: { normalizeParamArray: makePgArray },\n\tpolygon: { normalizeParamArray: makePgArray },\n\traster: { normalizeParamArray: makePgArray },\n\tregclass: { normalizeParamArray: makePgArray },\n\tregconfig: { normalizeParamArray: makePgArray },\n\tregdictionary: { normalizeParamArray: makePgArray },\n\tregnamespace: { normalizeParamArray: makePgArray },\n\tregoper: { normalizeParamArray: makePgArray },\n\tregoperator: { normalizeParamArray: makePgArray },\n\tregproc: { normalizeParamArray: makePgArray },\n\tregprocedure: { normalizeParamArray: makePgArray },\n\tregrole: { normalizeParamArray: makePgArray },\n\tregtype: { normalizeParamArray: makePgArray },\n\tserial: { normalizeParamArray: makePgArray },\n\tsmallint: { normalizeParamArray: makePgArray },\n\tsmallserial: { normalizeParamArray: makePgArray },\n\ttext: { normalizeParamArray: makePgArray },\n\ttime: { normalizeParamArray: makePgArray },\n\ttimetz: { normalizeParamArray: makePgArray },\n\ttsmultirange: { normalizeParamArray: makePgArray },\n\ttsquery: { normalizeParamArray: makePgArray },\n\ttsrange: { normalizeParamArray: makePgArray },\n\ttstzmultirange: { normalizeParamArray: makePgArray },\n\ttstzrange: { normalizeParamArray: makePgArray },\n\ttsvector: { normalizeParamArray: makePgArray },\n\tvarbit: { normalizeParamArray: makePgArray },\n\tvarchar: { normalizeParamArray: makePgArray },\n\txml: { normalizeParamArray: makePgArray },\n\tbytea: { normalizeParamArray: makePgArray },\n\tenum: { normalizeParamArray: makePgArray },\n\tjson: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tjsonb: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tgeometry: {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryXY),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'geometry:tuple': {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryTuple),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tinterval: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tline: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'line:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tmacaddr8: {\n\t\tcastArrayInJson: castToTextArr,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tnumeric: { normalizeParamArray: makePgArray },\n\t'numeric:number': { normalizeParamArray: makePgArray },\n\t'numeric:bigint': { normalizeParamArray: makePgArray },\n\tpoint: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'point:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\thalfvec: { normalizeParamArray: makePgArray },\n\tsparsevec: {\n\t\tnormalizeArray: parsePgArray,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tvector: { normalizeParamArray: makePgArray },\n});\n\nexport class BunSQLDatabase<\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLDatabase';\n}\n\nfunction construct<\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: SQL,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): BunSQLDatabase<TRelations> & {\n\t$client: SQL;\n} {\n\tclient.options.bigint = true;\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: config.codecs ?? bunSqlPgCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new BunSQLSession(client, dialect, relations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\tconst db = new BunSQLDatabase(dialect, session, relations) as BunSQLDatabase<TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends SQL = SQL,\n>(\n\t...params: [\n\t\tstring,\n\t] | [\n\t\tstring,\n\t\tDrizzlePgConfig<TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzlePgConfig<TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | ({ url?: string } & SQL.Options);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): BunSQLDatabase<TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new SQL(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...DrizzlePgConfig } = params[0] as\n\t\t& {\n\t\t\tconnection?: { url?: string } & SQL.Options;\n\t\t\tclient?: TClient;\n\t\t}\n\t\t& DrizzlePgConfig<TRelations>;\n\n\tif (client) return construct(client, DrizzlePgConfig) as any;\n\n\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\tconst { url, ...config } = connection;\n\n\t\tconst instance = new SQL({ url, ...config });\n\t\treturn construct(instance, DrizzlePgConfig) as any;\n\t}\n\n\tconst instance = new SQL(connection);\n\treturn construct(instance, DrizzlePgConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzlePgConfig<TRelations>,\n\t): BunSQLDatabase<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"driver.cjs","names":["makePgArray","castToText","castToTextArr","parseGeometryXY","parseGeometryTuple","parsePgArray","PgAsyncDatabase","entityKind","PgDialect","DefaultLogger","BunSQLSession","SQL"],"sources":["../../../src/bun-sql/postgres/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { SQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { makePgArray, parsePgArray } from '~/pg-core/array.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport {\n\tarrayCompatNormalize,\n\tarrayCompatNormalizeInput,\n\tcastToText,\n\tcastToTextArr,\n\tparseGeometryTuple,\n\tparseGeometryXY,\n\tparsePgArrayAndNormalize,\n\trefineGenericPgCodecs,\n} from '~/pg-core/codecs.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { BunSQLQueryResultHKT } from './session.ts';\nimport { BunSQLSession } from './session.ts';\n\nexport const bunSqlPgCodecs = refineGenericPgCodecs({\n\tdate: { normalizeParamArray: makePgArray },\n\t'date:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tuuid: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\ttimestamp: { normalizeParamArray: makePgArray },\n\ttimestamptz: { normalizeParamArray: makePgArray },\n\t'timestamp:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'timestamptz:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tfloat4: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalize: Number,\n\t\tnormalizeArray: arrayCompatNormalize(Number),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigint: {\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'bigint:number': { normalizeParamArray: makePgArray },\n\t'bigint:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigserial: { normalizeParamArray: makePgArray },\n\t'bigserial:number': { normalizeParamArray: makePgArray },\n\tint: {\n\t\tnormalizeArray: (\n\t\t\tvalue: any,\n\t\t\tdimensions: number,\n\t\t) => {\n\t\t\tif (dimensions <= 1) {\n\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\tif (value instanceof Int32Array) {\n\t\t\t\t\treturn Array.from(value) as any;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tconst stack: { arr: any; depth: number }[] = [{ arr: value, depth: 1 }];\n\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tconst { arr, depth } = stack.pop()!;\n\n\t\t\t\tif (depth === dimensions - 1) {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tconst leaf = arr[i];\n\t\t\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\t\t\tif (leaf instanceof Int32Array) {\n\t\t\t\t\t\t\tarr[i] = Array.from(leaf);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tstack.push({ arr: arr[i], depth: depth + 1 });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\n\tbit: { normalizeParamArray: makePgArray },\n\tbool: { normalizeParamArray: makePgArray },\n\tbox: { normalizeParamArray: makePgArray },\n\tbox2d: { normalizeParamArray: makePgArray },\n\tbox3d: { normalizeParamArray: makePgArray },\n\tchar: { normalizeParamArray: makePgArray },\n\tcidr: { normalizeParamArray: makePgArray },\n\tcircle: { normalizeParamArray: makePgArray },\n\tdatemultirange: { normalizeParamArray: makePgArray },\n\tdaterange: { normalizeParamArray: makePgArray },\n\tfloat8: { normalizeParamArray: makePgArray },\n\tgeography: { normalizeParamArray: makePgArray },\n\tinet: { normalizeParamArray: makePgArray },\n\tint4multirange: { normalizeParamArray: makePgArray },\n\tint4range: { normalizeParamArray: makePgArray },\n\tint8multirange: { normalizeParamArray: makePgArray },\n\tint8range: { normalizeParamArray: makePgArray },\n\tlseg: { normalizeParamArray: makePgArray },\n\tmacaddr: { normalizeParamArray: makePgArray },\n\tmoney: { normalizeParamArray: makePgArray },\n\tnummultirange: { normalizeParamArray: makePgArray },\n\tnumrange: { normalizeParamArray: makePgArray },\n\toid: { normalizeParamArray: makePgArray },\n\tpath: { normalizeParamArray: makePgArray },\n\tpolygon: { normalizeParamArray: makePgArray },\n\traster: { normalizeParamArray: makePgArray },\n\tregclass: { normalizeParamArray: makePgArray },\n\tregconfig: { normalizeParamArray: makePgArray },\n\tregdictionary: { normalizeParamArray: makePgArray },\n\tregnamespace: { normalizeParamArray: makePgArray },\n\tregoper: { normalizeParamArray: makePgArray },\n\tregoperator: { normalizeParamArray: makePgArray },\n\tregproc: { normalizeParamArray: makePgArray },\n\tregprocedure: { normalizeParamArray: makePgArray },\n\tregrole: { normalizeParamArray: makePgArray },\n\tregtype: { normalizeParamArray: makePgArray },\n\tserial: { normalizeParamArray: makePgArray },\n\tsmallint: { normalizeParamArray: makePgArray },\n\tsmallserial: { normalizeParamArray: makePgArray },\n\ttext: { normalizeParamArray: makePgArray },\n\ttime: { normalizeParamArray: makePgArray },\n\ttimetz: { normalizeParamArray: makePgArray },\n\ttsmultirange: { normalizeParamArray: makePgArray },\n\ttsquery: { normalizeParamArray: makePgArray },\n\ttsrange: { normalizeParamArray: makePgArray },\n\ttstzmultirange: { normalizeParamArray: makePgArray },\n\ttstzrange: { normalizeParamArray: makePgArray },\n\ttsvector: { normalizeParamArray: makePgArray },\n\tvarbit: { normalizeParamArray: makePgArray },\n\tvarchar: { normalizeParamArray: makePgArray },\n\txml: { normalizeParamArray: makePgArray },\n\tbytea: { normalizeParamArray: makePgArray },\n\tenum: { normalizeParamArray: makePgArray },\n\tjson: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tjsonb: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tgeometry: {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryXY),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'geometry:tuple': {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryTuple),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tinterval: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tline: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'line:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tmacaddr8: {\n\t\tcastArrayInJson: castToTextArr,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tnumeric: { normalizeParamArray: makePgArray },\n\t'numeric:number': { normalizeParamArray: makePgArray },\n\t'numeric:bigint': { normalizeParamArray: makePgArray },\n\tpoint: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'point:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\thalfvec: { normalizeParamArray: makePgArray },\n\tsparsevec: {\n\t\tnormalizeArray: parsePgArray,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tvector: { normalizeParamArray: makePgArray },\n});\n\nexport class BunSQLDatabase<\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLDatabase';\n}\n\nfunction construct<\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: SQL,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): BunSQLDatabase<TRelations> & {\n\t$client: SQL;\n} {\n\tclient.options.bigint = true;\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: config.codecs ?? bunSqlPgCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new BunSQLSession(client, dialect, relations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\tconst db = new BunSQLDatabase(dialect, session, relations, false, true) as BunSQLDatabase<TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends SQL = SQL,\n>(\n\t...params: [\n\t\tstring,\n\t] | [\n\t\tstring,\n\t\tDrizzlePgConfig<TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzlePgConfig<TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | ({ url?: string } & SQL.Options);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): BunSQLDatabase<TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new SQL(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...DrizzlePgConfig } = params[0] as\n\t\t& {\n\t\t\tconnection?: { url?: string } & SQL.Options;\n\t\t\tclient?: TClient;\n\t\t}\n\t\t& DrizzlePgConfig<TRelations>;\n\n\tif (client) return construct(client, DrizzlePgConfig) as any;\n\n\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\tconst { url, ...config } = connection;\n\n\t\tconst instance = new SQL({ url, ...config });\n\t\treturn construct(instance, DrizzlePgConfig) as any;\n\t}\n\n\tconst instance = new SQL(connection);\n\treturn construct(instance, DrizzlePgConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzlePgConfig<TRelations>,\n\t): BunSQLDatabase<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":"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"}
@@ -190,7 +190,7 @@ function construct(client, config = {}) {
190
190
  const db = new BunSQLDatabase(dialect, new BunSQLSession(client, dialect, relations, {
191
191
  logger,
192
192
  cache: config.cache
193
- }), relations);
193
+ }), relations, false, true);
194
194
  db.$client = client;
195
195
  db.$cache = config.cache;
196
196
  if (db.$cache) db.$cache["invalidate"] = config.cache?.onMutate;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","names":[],"sources":["../../../src/bun-sql/postgres/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { SQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { makePgArray, parsePgArray } from '~/pg-core/array.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport {\n\tarrayCompatNormalize,\n\tarrayCompatNormalizeInput,\n\tcastToText,\n\tcastToTextArr,\n\tparseGeometryTuple,\n\tparseGeometryXY,\n\tparsePgArrayAndNormalize,\n\trefineGenericPgCodecs,\n} from '~/pg-core/codecs.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { BunSQLQueryResultHKT } from './session.ts';\nimport { BunSQLSession } from './session.ts';\n\nexport const bunSqlPgCodecs = refineGenericPgCodecs({\n\tdate: { normalizeParamArray: makePgArray },\n\t'date:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tuuid: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\ttimestamp: { normalizeParamArray: makePgArray },\n\ttimestamptz: { normalizeParamArray: makePgArray },\n\t'timestamp:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'timestamptz:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tfloat4: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalize: Number,\n\t\tnormalizeArray: arrayCompatNormalize(Number),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigint: {\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'bigint:number': { normalizeParamArray: makePgArray },\n\t'bigint:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigserial: { normalizeParamArray: makePgArray },\n\t'bigserial:number': { normalizeParamArray: makePgArray },\n\tint: {\n\t\tnormalizeArray: (\n\t\t\tvalue: any,\n\t\t\tdimensions: number,\n\t\t) => {\n\t\t\tif (dimensions <= 1) {\n\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\tif (value instanceof Int32Array) {\n\t\t\t\t\treturn Array.from(value) as any;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tconst stack: { arr: any; depth: number }[] = [{ arr: value, depth: 1 }];\n\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tconst { arr, depth } = stack.pop()!;\n\n\t\t\t\tif (depth === dimensions - 1) {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tconst leaf = arr[i];\n\t\t\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\t\t\tif (leaf instanceof Int32Array) {\n\t\t\t\t\t\t\tarr[i] = Array.from(leaf);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tstack.push({ arr: arr[i], depth: depth + 1 });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\n\tbit: { normalizeParamArray: makePgArray },\n\tbool: { normalizeParamArray: makePgArray },\n\tbox: { normalizeParamArray: makePgArray },\n\tbox2d: { normalizeParamArray: makePgArray },\n\tbox3d: { normalizeParamArray: makePgArray },\n\tchar: { normalizeParamArray: makePgArray },\n\tcidr: { normalizeParamArray: makePgArray },\n\tcircle: { normalizeParamArray: makePgArray },\n\tdatemultirange: { normalizeParamArray: makePgArray },\n\tdaterange: { normalizeParamArray: makePgArray },\n\tfloat8: { normalizeParamArray: makePgArray },\n\tgeography: { normalizeParamArray: makePgArray },\n\tinet: { normalizeParamArray: makePgArray },\n\tint4multirange: { normalizeParamArray: makePgArray },\n\tint4range: { normalizeParamArray: makePgArray },\n\tint8multirange: { normalizeParamArray: makePgArray },\n\tint8range: { normalizeParamArray: makePgArray },\n\tlseg: { normalizeParamArray: makePgArray },\n\tmacaddr: { normalizeParamArray: makePgArray },\n\tmoney: { normalizeParamArray: makePgArray },\n\tnummultirange: { normalizeParamArray: makePgArray },\n\tnumrange: { normalizeParamArray: makePgArray },\n\toid: { normalizeParamArray: makePgArray },\n\tpath: { normalizeParamArray: makePgArray },\n\tpolygon: { normalizeParamArray: makePgArray },\n\traster: { normalizeParamArray: makePgArray },\n\tregclass: { normalizeParamArray: makePgArray },\n\tregconfig: { normalizeParamArray: makePgArray },\n\tregdictionary: { normalizeParamArray: makePgArray },\n\tregnamespace: { normalizeParamArray: makePgArray },\n\tregoper: { normalizeParamArray: makePgArray },\n\tregoperator: { normalizeParamArray: makePgArray },\n\tregproc: { normalizeParamArray: makePgArray },\n\tregprocedure: { normalizeParamArray: makePgArray },\n\tregrole: { normalizeParamArray: makePgArray },\n\tregtype: { normalizeParamArray: makePgArray },\n\tserial: { normalizeParamArray: makePgArray },\n\tsmallint: { normalizeParamArray: makePgArray },\n\tsmallserial: { normalizeParamArray: makePgArray },\n\ttext: { normalizeParamArray: makePgArray },\n\ttime: { normalizeParamArray: makePgArray },\n\ttimetz: { normalizeParamArray: makePgArray },\n\ttsmultirange: { normalizeParamArray: makePgArray },\n\ttsquery: { normalizeParamArray: makePgArray },\n\ttsrange: { normalizeParamArray: makePgArray },\n\ttstzmultirange: { normalizeParamArray: makePgArray },\n\ttstzrange: { normalizeParamArray: makePgArray },\n\ttsvector: { normalizeParamArray: makePgArray },\n\tvarbit: { normalizeParamArray: makePgArray },\n\tvarchar: { normalizeParamArray: makePgArray },\n\txml: { normalizeParamArray: makePgArray },\n\tbytea: { normalizeParamArray: makePgArray },\n\tenum: { normalizeParamArray: makePgArray },\n\tjson: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tjsonb: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tgeometry: {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryXY),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'geometry:tuple': {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryTuple),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tinterval: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tline: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'line:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tmacaddr8: {\n\t\tcastArrayInJson: castToTextArr,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tnumeric: { normalizeParamArray: makePgArray },\n\t'numeric:number': { normalizeParamArray: makePgArray },\n\t'numeric:bigint': { normalizeParamArray: makePgArray },\n\tpoint: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'point:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\thalfvec: { normalizeParamArray: makePgArray },\n\tsparsevec: {\n\t\tnormalizeArray: parsePgArray,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tvector: { normalizeParamArray: makePgArray },\n});\n\nexport class BunSQLDatabase<\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLDatabase';\n}\n\nfunction construct<\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: SQL,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): BunSQLDatabase<TRelations> & {\n\t$client: SQL;\n} {\n\tclient.options.bigint = true;\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: config.codecs ?? bunSqlPgCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new BunSQLSession(client, dialect, relations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\tconst db = new BunSQLDatabase(dialect, session, relations) as BunSQLDatabase<TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends SQL = SQL,\n>(\n\t...params: [\n\t\tstring,\n\t] | [\n\t\tstring,\n\t\tDrizzlePgConfig<TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzlePgConfig<TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | ({ url?: string } & SQL.Options);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): BunSQLDatabase<TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new SQL(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...DrizzlePgConfig } = params[0] as\n\t\t& {\n\t\t\tconnection?: { url?: string } & SQL.Options;\n\t\t\tclient?: TClient;\n\t\t}\n\t\t& DrizzlePgConfig<TRelations>;\n\n\tif (client) return construct(client, DrizzlePgConfig) as any;\n\n\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\tconst { url, ...config } = connection;\n\n\t\tconst instance = new SQL({ url, ...config });\n\t\treturn construct(instance, DrizzlePgConfig) as any;\n\t}\n\n\tconst instance = new SQL(connection);\n\treturn construct(instance, DrizzlePgConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzlePgConfig<TRelations>,\n\t): BunSQLDatabase<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"driver.js","names":[],"sources":["../../../src/bun-sql/postgres/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { SQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { makePgArray, parsePgArray } from '~/pg-core/array.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport {\n\tarrayCompatNormalize,\n\tarrayCompatNormalizeInput,\n\tcastToText,\n\tcastToTextArr,\n\tparseGeometryTuple,\n\tparseGeometryXY,\n\tparsePgArrayAndNormalize,\n\trefineGenericPgCodecs,\n} from '~/pg-core/codecs.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { DrizzlePgConfig } from '~/pg-core/utils.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { BunSQLQueryResultHKT } from './session.ts';\nimport { BunSQLSession } from './session.ts';\n\nexport const bunSqlPgCodecs = refineGenericPgCodecs({\n\tdate: { normalizeParamArray: makePgArray },\n\t'date:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tuuid: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\ttimestamp: { normalizeParamArray: makePgArray },\n\ttimestamptz: { normalizeParamArray: makePgArray },\n\t'timestamp:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'timestamptz:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tfloat4: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalize: Number,\n\t\tnormalizeArray: arrayCompatNormalize(Number),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigint: {\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'bigint:number': { normalizeParamArray: makePgArray },\n\t'bigint:string': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tbigserial: { normalizeParamArray: makePgArray },\n\t'bigserial:number': { normalizeParamArray: makePgArray },\n\tint: {\n\t\tnormalizeArray: (\n\t\t\tvalue: any,\n\t\t\tdimensions: number,\n\t\t) => {\n\t\t\tif (dimensions <= 1) {\n\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\tif (value instanceof Int32Array) {\n\t\t\t\t\treturn Array.from(value) as any;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tconst stack: { arr: any; depth: number }[] = [{ arr: value, depth: 1 }];\n\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tconst { arr, depth } = stack.pop()!;\n\n\t\t\t\tif (depth === dimensions - 1) {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tconst leaf = arr[i];\n\t\t\t\t\t\t// eslint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\t\t\tif (leaf instanceof Int32Array) {\n\t\t\t\t\t\t\tarr[i] = Array.from(leaf);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\t\t\tstack.push({ arr: arr[i], depth: depth + 1 });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\n\tbit: { normalizeParamArray: makePgArray },\n\tbool: { normalizeParamArray: makePgArray },\n\tbox: { normalizeParamArray: makePgArray },\n\tbox2d: { normalizeParamArray: makePgArray },\n\tbox3d: { normalizeParamArray: makePgArray },\n\tchar: { normalizeParamArray: makePgArray },\n\tcidr: { normalizeParamArray: makePgArray },\n\tcircle: { normalizeParamArray: makePgArray },\n\tdatemultirange: { normalizeParamArray: makePgArray },\n\tdaterange: { normalizeParamArray: makePgArray },\n\tfloat8: { normalizeParamArray: makePgArray },\n\tgeography: { normalizeParamArray: makePgArray },\n\tinet: { normalizeParamArray: makePgArray },\n\tint4multirange: { normalizeParamArray: makePgArray },\n\tint4range: { normalizeParamArray: makePgArray },\n\tint8multirange: { normalizeParamArray: makePgArray },\n\tint8range: { normalizeParamArray: makePgArray },\n\tlseg: { normalizeParamArray: makePgArray },\n\tmacaddr: { normalizeParamArray: makePgArray },\n\tmoney: { normalizeParamArray: makePgArray },\n\tnummultirange: { normalizeParamArray: makePgArray },\n\tnumrange: { normalizeParamArray: makePgArray },\n\toid: { normalizeParamArray: makePgArray },\n\tpath: { normalizeParamArray: makePgArray },\n\tpolygon: { normalizeParamArray: makePgArray },\n\traster: { normalizeParamArray: makePgArray },\n\tregclass: { normalizeParamArray: makePgArray },\n\tregconfig: { normalizeParamArray: makePgArray },\n\tregdictionary: { normalizeParamArray: makePgArray },\n\tregnamespace: { normalizeParamArray: makePgArray },\n\tregoper: { normalizeParamArray: makePgArray },\n\tregoperator: { normalizeParamArray: makePgArray },\n\tregproc: { normalizeParamArray: makePgArray },\n\tregprocedure: { normalizeParamArray: makePgArray },\n\tregrole: { normalizeParamArray: makePgArray },\n\tregtype: { normalizeParamArray: makePgArray },\n\tserial: { normalizeParamArray: makePgArray },\n\tsmallint: { normalizeParamArray: makePgArray },\n\tsmallserial: { normalizeParamArray: makePgArray },\n\ttext: { normalizeParamArray: makePgArray },\n\ttime: { normalizeParamArray: makePgArray },\n\ttimetz: { normalizeParamArray: makePgArray },\n\ttsmultirange: { normalizeParamArray: makePgArray },\n\ttsquery: { normalizeParamArray: makePgArray },\n\ttsrange: { normalizeParamArray: makePgArray },\n\ttstzmultirange: { normalizeParamArray: makePgArray },\n\ttstzrange: { normalizeParamArray: makePgArray },\n\ttsvector: { normalizeParamArray: makePgArray },\n\tvarbit: { normalizeParamArray: makePgArray },\n\tvarchar: { normalizeParamArray: makePgArray },\n\txml: { normalizeParamArray: makePgArray },\n\tbytea: { normalizeParamArray: makePgArray },\n\tenum: { normalizeParamArray: makePgArray },\n\tjson: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tjsonb: {\n\t\tnormalizeParamArray: arrayCompatNormalizeInput((v) => JSON.stringify(v), true),\n\t},\n\tgeometry: {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryXY),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'geometry:tuple': {\n\t\tnormalizeArray: parsePgArrayAndNormalize(parseGeometryTuple),\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tinterval: {\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tline: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'line:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tmacaddr8: {\n\t\tcastArrayInJson: castToTextArr,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tnumeric: { normalizeParamArray: makePgArray },\n\t'numeric:number': { normalizeParamArray: makePgArray },\n\t'numeric:bigint': { normalizeParamArray: makePgArray },\n\tpoint: {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\t'point:tuple': {\n\t\tcast: castToText,\n\t\tcastArray: castToTextArr,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\thalfvec: { normalizeParamArray: makePgArray },\n\tsparsevec: {\n\t\tnormalizeArray: parsePgArray,\n\t\tnormalizeParamArray: makePgArray,\n\t},\n\tvector: { normalizeParamArray: makePgArray },\n});\n\nexport class BunSQLDatabase<\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLDatabase';\n}\n\nfunction construct<\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: SQL,\n\tconfig: DrizzlePgConfig<TRelations> = {},\n): BunSQLDatabase<TRelations> & {\n\t$client: SQL;\n} {\n\tclient.options.bigint = true;\n\tconst dialect = new PgDialect({\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: config.codecs ?? bunSqlPgCodecs,\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new BunSQLSession(client, dialect, relations, {\n\t\tlogger,\n\t\tcache: config.cache,\n\t});\n\tconst db = new BunSQLDatabase(dialect, session, relations, false, true) as BunSQLDatabase<TRelations>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends SQL = SQL,\n>(\n\t...params: [\n\t\tstring,\n\t] | [\n\t\tstring,\n\t\tDrizzlePgConfig<TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzlePgConfig<TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | ({ url?: string } & SQL.Options);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): BunSQLDatabase<TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new SQL(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...DrizzlePgConfig } = params[0] as\n\t\t& {\n\t\t\tconnection?: { url?: string } & SQL.Options;\n\t\t\tclient?: TClient;\n\t\t}\n\t\t& DrizzlePgConfig<TRelations>;\n\n\tif (client) return construct(client, DrizzlePgConfig) as any;\n\n\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\tconst { url, ...config } = connection;\n\n\t\tconst instance = new SQL({ url, ...config });\n\t\treturn construct(instance, DrizzlePgConfig) as any;\n\t}\n\n\tconst instance = new SQL(connection);\n\treturn construct(instance, DrizzlePgConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzlePgConfig<TRelations>,\n\t): BunSQLDatabase<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":"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"}
@@ -19,12 +19,17 @@ var BunSQLSession = class BunSQLSession extends __pg_core_async_session_ts.PgAsy
19
19
  this.cache = options.cache ?? new __cache_core_index_ts.NoopCache();
20
20
  }
21
21
  prepareQuery(query, mode, _name, mapper, queryMetadata, cacheConfig) {
22
- const executor = async (params) => {
22
+ const tagged = query._sql ? query._sql : null;
23
+ return new __pg_core_async_session_ts.PgAsyncPreparedQuery(tagged ? async (params) => {
24
+ const ps = params ? params : [];
25
+ if (mode === "arrays") return this.client(tagged, ...ps).values();
26
+ if (mode === "objects") return this.client(tagged, ...ps);
27
+ return this.client(tagged, ...ps);
28
+ } : async (params) => {
23
29
  if (mode === "arrays") return this.client.unsafe(query.sql, params).values();
24
30
  if (mode === "objects") return this.client.unsafe(query.sql, params);
25
31
  return this.client.unsafe(query.sql, params);
26
- };
27
- return new __pg_core_async_session_ts.PgAsyncPreparedQuery(executor, query, mapper, mode, this.logger, this.cache, queryMetadata, cacheConfig);
32
+ }, query, mapper, mode, this.logger, this.cache, queryMetadata, cacheConfig);
28
33
  }
29
34
  transaction(transaction, config) {
30
35
  return this.client.begin(async (client) => {
@@ -1 +1 @@
1
- {"version":3,"file":"session.cjs","names":["PgAsyncSession","entityKind","NoopLogger","NoopCache","PgAsyncPreparedQuery","PgAsyncTransaction"],"sources":["../../../src/bun-sql/postgres/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport { PgAsyncPreparedQuery, PgAsyncSession, PgAsyncTransaction } from '~/pg-core/async/session.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { Query } from '~/sql/sql.ts';\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTRelations extends AnyRelations,\n> extends PgAsyncSession<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\t_name: string | boolean,\n\t\tmapper: ((rows: any[]) => any) | undefined,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgAsyncPreparedQuery<T> {\n\t\tconst executor = async (params?: unknown[]) => {\n\t\t\tif (mode === 'arrays') {\n\t\t\t\treturn this.client.unsafe(query.sql, params).values();\n\t\t\t}\n\t\t\tif (mode === 'objects') {\n\t\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t\t}\n\n\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t};\n\n\t\treturn new PgAsyncPreparedQuery<T>(\n\t\t\texecutor,\n\t\t\tquery,\n\t\t\tmapper,\n\t\t\tmode,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTRelations extends AnyRelations,\n> extends PgAsyncTransaction<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTRelations\n\t\t>,\n\t\trelations: TRelations,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, nestedIndex, false);\n\t}\n\n\toverride transaction = <T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t): Promise<T> => {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis._.relations,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TRelations>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis._.relations,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t};\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: this['row'][];\n}\n"],"mappings":";;;;;;;;AAmBA,IAAa,gBAAb,MAAa,sBAGHA,0CAAiD;CAC1D,QAA0BC,0BAAsB;CAEhD;CACA,AAAQ;CAER,YACC,AAAS,QACT,SACA,AAAQ,WAER,AAAS,UAAgC,EAAE,EAC1C;AACD,QAAM,QAAQ;EANL;EAED;EAEC;AAGT,OAAK,SAAS,QAAQ,UAAU,IAAIC,wBAAY;AAChD,OAAK,QAAQ,QAAQ,SAAS,IAAIC,iCAAW;;CAG9C,aACC,OACA,MACA,OACA,QACA,eAIA,aAC0B;EAC1B,MAAM,WAAW,OAAO,WAAuB;AAC9C,OAAI,SAAS,SACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO,CAAC,QAAQ;AAEtD,OAAI,SAAS,UACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;AAG7C,UAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;;AAG7C,SAAO,IAAIC,gDACV,UACA,OACA,QACA,MACA,KAAK,QACL,KAAK,OACL,eACA,YACA;;CAGF,AAAS,YACR,aACA,QACa;AACb,SAAO,KAAK,OAAO,MAAM,OAAO,WAAW;GAC1C,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,WACL,KAAK,QACL;GACD,MAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,SAAS,KAAK,UAAU;AACvE,OAAI,OACH,OAAM,GAAG,eAAe,OAAO;AAEhC,UAAO,YAAY,GAAG;IACrB;;;AAIJ,IAAa,oBAAb,MAAa,0BAEHC,8CAAqD;CAC9D,QAA0BJ,0BAAsB;CAEhD,YACC,SAEA,AAAkB,SAIlB,WACA,cAAc,GACb;AACD,QAAM,SAAS,SAAS,WAAW,aAAa,MAAM;EAPpC;;CAUnB,AAAS,eACR,gBACgB;AAChB,SAAQ,KAAK,QAAQ,OAA0B,WAAW,WAAW;GACpE,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,EAAE,WACP,KAAK,QAAQ,QACb;AAMD,UAAO,YALI,IAAI,kBACd,KAAK,SACL,SACA,KAAK,EAAE,UACP,CACqB;IACrB"}
1
+ {"version":3,"file":"session.cjs","names":["PgAsyncSession","entityKind","NoopLogger","NoopCache","PgAsyncPreparedQuery","PgAsyncTransaction"],"sources":["../../../src/bun-sql/postgres/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport { PgAsyncPreparedQuery, PgAsyncSession, PgAsyncTransaction } from '~/pg-core/async/session.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { Query } from '~/sql/sql.ts';\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTRelations extends AnyRelations,\n> extends PgAsyncSession<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\t_name: string | boolean,\n\t\tmapper: ((rows: any[]) => any) | undefined,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgAsyncPreparedQuery<T> {\n\t\tconst tagged = query._sql ? query._sql : null;\n\t\tconst executor = tagged\n\t\t\t? async (params?: unknown[]) => {\n\t\t\t\tconst ps = params ? params : [];\n\t\t\t\tif (mode === 'arrays') {\n\t\t\t\t\treturn this.client(tagged, ...ps).values();\n\t\t\t\t}\n\t\t\t\tif (mode === 'objects') {\n\t\t\t\t\treturn this.client(tagged, ...ps);\n\t\t\t\t}\n\t\t\t\treturn this.client(tagged, ...ps);\n\t\t\t}\n\t\t\t: async (params?: unknown[]) => {\n\t\t\t\tif (mode === 'arrays') {\n\t\t\t\t\treturn this.client.unsafe(query.sql, params).values();\n\t\t\t\t}\n\t\t\t\tif (mode === 'objects') {\n\t\t\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t\t\t}\n\n\t\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t\t};\n\n\t\treturn new PgAsyncPreparedQuery<T>(\n\t\t\texecutor,\n\t\t\tquery,\n\t\t\tmapper,\n\t\t\tmode,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTRelations extends AnyRelations,\n> extends PgAsyncTransaction<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTRelations\n\t\t>,\n\t\trelations: TRelations,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, nestedIndex, false);\n\t}\n\n\toverride transaction = <T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t): Promise<T> => {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis._.relations,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TRelations>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis._.relations,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t};\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: this['row'][];\n}\n"],"mappings":";;;;;;;;AAmBA,IAAa,gBAAb,MAAa,sBAGHA,0CAAiD;CAC1D,QAA0BC,0BAAsB;CAEhD;CACA,AAAQ;CAER,YACC,AAAS,QACT,SACA,AAAQ,WAER,AAAS,UAAgC,EAAE,EAC1C;AACD,QAAM,QAAQ;EANL;EAED;EAEC;AAGT,OAAK,SAAS,QAAQ,UAAU,IAAIC,wBAAY;AAChD,OAAK,QAAQ,QAAQ,SAAS,IAAIC,iCAAW;;CAG9C,aACC,OACA,MACA,OACA,QACA,eAIA,aAC0B;EAC1B,MAAM,SAAS,MAAM,OAAO,MAAM,OAAO;AAuBzC,SAAO,IAAIC,gDAtBM,SACd,OAAO,WAAuB;GAC/B,MAAM,KAAK,SAAS,SAAS,EAAE;AAC/B,OAAI,SAAS,SACZ,QAAO,KAAK,OAAO,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAE3C,OAAI,SAAS,UACZ,QAAO,KAAK,OAAO,QAAQ,GAAG,GAAG;AAElC,UAAO,KAAK,OAAO,QAAQ,GAAG,GAAG;MAEhC,OAAO,WAAuB;AAC/B,OAAI,SAAS,SACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO,CAAC,QAAQ;AAEtD,OAAI,SAAS,UACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;AAG7C,UAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;KAK7C,OACA,QACA,MACA,KAAK,QACL,KAAK,OACL,eACA,YACA;;CAGF,AAAS,YACR,aACA,QACa;AACb,SAAO,KAAK,OAAO,MAAM,OAAO,WAAW;GAC1C,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,WACL,KAAK,QACL;GACD,MAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,SAAS,KAAK,UAAU;AACvE,OAAI,OACH,OAAM,GAAG,eAAe,OAAO;AAEhC,UAAO,YAAY,GAAG;IACrB;;;AAIJ,IAAa,oBAAb,MAAa,0BAEHC,8CAAqD;CAC9D,QAA0BJ,0BAAsB;CAEhD,YACC,SAEA,AAAkB,SAIlB,WACA,cAAc,GACb;AACD,QAAM,SAAS,SAAS,WAAW,aAAa,MAAM;EAPpC;;CAUnB,AAAS,eACR,gBACgB;AAChB,SAAQ,KAAK,QAAQ,OAA0B,WAAW,WAAW;GACpE,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,EAAE,WACP,KAAK,QAAQ,QACb;AAMD,UAAO,YALI,IAAI,kBACd,KAAK,SACL,SACA,KAAK,EAAE,UACP,CACqB;IACrB"}
@@ -17,12 +17,17 @@ var BunSQLSession = class BunSQLSession extends PgAsyncSession {
17
17
  this.cache = options.cache ?? new NoopCache();
18
18
  }
19
19
  prepareQuery(query, mode, _name, mapper, queryMetadata, cacheConfig) {
20
- const executor = async (params) => {
20
+ const tagged = query._sql ? query._sql : null;
21
+ return new PgAsyncPreparedQuery(tagged ? async (params) => {
22
+ const ps = params ? params : [];
23
+ if (mode === "arrays") return this.client(tagged, ...ps).values();
24
+ if (mode === "objects") return this.client(tagged, ...ps);
25
+ return this.client(tagged, ...ps);
26
+ } : async (params) => {
21
27
  if (mode === "arrays") return this.client.unsafe(query.sql, params).values();
22
28
  if (mode === "objects") return this.client.unsafe(query.sql, params);
23
29
  return this.client.unsafe(query.sql, params);
24
- };
25
- return new PgAsyncPreparedQuery(executor, query, mapper, mode, this.logger, this.cache, queryMetadata, cacheConfig);
30
+ }, query, mapper, mode, this.logger, this.cache, queryMetadata, cacheConfig);
26
31
  }
27
32
  transaction(transaction, config) {
28
33
  return this.client.begin(async (client) => {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","names":[],"sources":["../../../src/bun-sql/postgres/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport { PgAsyncPreparedQuery, PgAsyncSession, PgAsyncTransaction } from '~/pg-core/async/session.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { Query } from '~/sql/sql.ts';\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTRelations extends AnyRelations,\n> extends PgAsyncSession<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\t_name: string | boolean,\n\t\tmapper: ((rows: any[]) => any) | undefined,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgAsyncPreparedQuery<T> {\n\t\tconst executor = async (params?: unknown[]) => {\n\t\t\tif (mode === 'arrays') {\n\t\t\t\treturn this.client.unsafe(query.sql, params).values();\n\t\t\t}\n\t\t\tif (mode === 'objects') {\n\t\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t\t}\n\n\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t};\n\n\t\treturn new PgAsyncPreparedQuery<T>(\n\t\t\texecutor,\n\t\t\tquery,\n\t\t\tmapper,\n\t\t\tmode,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTRelations extends AnyRelations,\n> extends PgAsyncTransaction<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTRelations\n\t\t>,\n\t\trelations: TRelations,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, nestedIndex, false);\n\t}\n\n\toverride transaction = <T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t): Promise<T> => {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis._.relations,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TRelations>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis._.relations,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t};\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: this['row'][];\n}\n"],"mappings":";;;;;;AAmBA,IAAa,gBAAb,MAAa,sBAGH,eAAiD;CAC1D,QAA0B,cAAsB;CAEhD;CACA,AAAQ;CAER,YACC,AAAS,QACT,SACA,AAAQ,WAER,AAAS,UAAgC,EAAE,EAC1C;AACD,QAAM,QAAQ;EANL;EAED;EAEC;AAGT,OAAK,SAAS,QAAQ,UAAU,IAAI,YAAY;AAChD,OAAK,QAAQ,QAAQ,SAAS,IAAI,WAAW;;CAG9C,aACC,OACA,MACA,OACA,QACA,eAIA,aAC0B;EAC1B,MAAM,WAAW,OAAO,WAAuB;AAC9C,OAAI,SAAS,SACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO,CAAC,QAAQ;AAEtD,OAAI,SAAS,UACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;AAG7C,UAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;;AAG7C,SAAO,IAAI,qBACV,UACA,OACA,QACA,MACA,KAAK,QACL,KAAK,OACL,eACA,YACA;;CAGF,AAAS,YACR,aACA,QACa;AACb,SAAO,KAAK,OAAO,MAAM,OAAO,WAAW;GAC1C,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,WACL,KAAK,QACL;GACD,MAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,SAAS,KAAK,UAAU;AACvE,OAAI,OACH,OAAM,GAAG,eAAe,OAAO;AAEhC,UAAO,YAAY,GAAG;IACrB;;;AAIJ,IAAa,oBAAb,MAAa,0BAEH,mBAAqD;CAC9D,QAA0B,cAAsB;CAEhD,YACC,SAEA,AAAkB,SAIlB,WACA,cAAc,GACb;AACD,QAAM,SAAS,SAAS,WAAW,aAAa,MAAM;EAPpC;;CAUnB,AAAS,eACR,gBACgB;AAChB,SAAQ,KAAK,QAAQ,OAA0B,WAAW,WAAW;GACpE,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,EAAE,WACP,KAAK,QAAQ,QACb;AAMD,UAAO,YALI,IAAI,kBACd,KAAK,SACL,SACA,KAAK,EAAE,UACP,CACqB;IACrB"}
1
+ {"version":3,"file":"session.js","names":[],"sources":["../../../src/bun-sql/postgres/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport { PgAsyncPreparedQuery, PgAsyncSession, PgAsyncTransaction } from '~/pg-core/async/session.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { Query } from '~/sql/sql.ts';\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTRelations extends AnyRelations,\n> extends PgAsyncSession<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\t_name: string | boolean,\n\t\tmapper: ((rows: any[]) => any) | undefined,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgAsyncPreparedQuery<T> {\n\t\tconst tagged = query._sql ? query._sql : null;\n\t\tconst executor = tagged\n\t\t\t? async (params?: unknown[]) => {\n\t\t\t\tconst ps = params ? params : [];\n\t\t\t\tif (mode === 'arrays') {\n\t\t\t\t\treturn this.client(tagged, ...ps).values();\n\t\t\t\t}\n\t\t\t\tif (mode === 'objects') {\n\t\t\t\t\treturn this.client(tagged, ...ps);\n\t\t\t\t}\n\t\t\t\treturn this.client(tagged, ...ps);\n\t\t\t}\n\t\t\t: async (params?: unknown[]) => {\n\t\t\t\tif (mode === 'arrays') {\n\t\t\t\t\treturn this.client.unsafe(query.sql, params).values();\n\t\t\t\t}\n\t\t\t\tif (mode === 'objects') {\n\t\t\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t\t\t}\n\n\t\t\t\treturn this.client.unsafe(query.sql, params);\n\t\t\t};\n\n\t\treturn new PgAsyncPreparedQuery<T>(\n\t\t\texecutor,\n\t\t\tquery,\n\t\t\tmapper,\n\t\t\tmode,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.relations);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTRelations extends AnyRelations,\n> extends PgAsyncTransaction<BunSQLQueryResultHKT, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<\n\t\t\tTransactionSQL | SavepointSQL,\n\t\t\tTRelations\n\t\t>,\n\t\trelations: TRelations,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, nestedIndex, false);\n\t}\n\n\toverride transaction = <T>(\n\t\ttransaction: (tx: BunSQLTransaction<TRelations>) => Promise<T>,\n\t): Promise<T> => {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TRelations>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis._.relations,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TRelations>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis._.relations,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t};\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: this['row'][];\n}\n"],"mappings":";;;;;;AAmBA,IAAa,gBAAb,MAAa,sBAGH,eAAiD;CAC1D,QAA0B,cAAsB;CAEhD;CACA,AAAQ;CAER,YACC,AAAS,QACT,SACA,AAAQ,WAER,AAAS,UAAgC,EAAE,EAC1C;AACD,QAAM,QAAQ;EANL;EAED;EAEC;AAGT,OAAK,SAAS,QAAQ,UAAU,IAAI,YAAY;AAChD,OAAK,QAAQ,QAAQ,SAAS,IAAI,WAAW;;CAG9C,aACC,OACA,MACA,OACA,QACA,eAIA,aAC0B;EAC1B,MAAM,SAAS,MAAM,OAAO,MAAM,OAAO;AAuBzC,SAAO,IAAI,qBAtBM,SACd,OAAO,WAAuB;GAC/B,MAAM,KAAK,SAAS,SAAS,EAAE;AAC/B,OAAI,SAAS,SACZ,QAAO,KAAK,OAAO,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAE3C,OAAI,SAAS,UACZ,QAAO,KAAK,OAAO,QAAQ,GAAG,GAAG;AAElC,UAAO,KAAK,OAAO,QAAQ,GAAG,GAAG;MAEhC,OAAO,WAAuB;AAC/B,OAAI,SAAS,SACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO,CAAC,QAAQ;AAEtD,OAAI,SAAS,UACZ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;AAG7C,UAAO,KAAK,OAAO,OAAO,MAAM,KAAK,OAAO;KAK7C,OACA,QACA,MACA,KAAK,QACL,KAAK,OACL,eACA,YACA;;CAGF,AAAS,YACR,aACA,QACa;AACb,SAAO,KAAK,OAAO,MAAM,OAAO,WAAW;GAC1C,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,WACL,KAAK,QACL;GACD,MAAM,KAAK,IAAI,kBAAkB,KAAK,SAAS,SAAS,KAAK,UAAU;AACvE,OAAI,OACH,OAAM,GAAG,eAAe,OAAO;AAEhC,UAAO,YAAY,GAAG;IACrB;;;AAIJ,IAAa,oBAAb,MAAa,0BAEH,mBAAqD;CAC9D,QAA0B,cAAsB;CAEhD,YACC,SAEA,AAAkB,SAIlB,WACA,cAAc,GACb;AACD,QAAM,SAAS,SAAS,WAAW,aAAa,MAAM;EAPpC;;CAUnB,AAAS,eACR,gBACgB;AAChB,SAAQ,KAAK,QAAQ,OAA0B,WAAW,WAAW;GACpE,MAAM,UAAU,IAAI,cACnB,QACA,KAAK,SACL,KAAK,EAAE,WACP,KAAK,QAAQ,QACb;AAMD,UAAO,YALI,IAAI,kBACd,KAAK,SACL,SACA,KAAK,EAAE,UACP,CACqB;IACrB"}
@@ -8,7 +8,7 @@ import * as Schema$1 from "effect/Schema";
8
8
  //#region src/cache/core/cache-effect.d.ts
9
9
  declare const EffectCache_base: Effect.Service.Class<EffectCache, "drizzle-orm/EffectCache", {
10
10
  readonly sync: () => {
11
- strategy: () => "all" | "explicit";
11
+ strategy: () => "explicit" | "all";
12
12
  get: (key: string, tables: string[], isTag: boolean, isAutoInvalidate?: boolean | undefined) => Effect.Effect<any[] | undefined, EffectCacheError, never>;
13
13
  put: (hashedQuery: string, response: any, tables: string[], isTag: boolean, config?: CacheConfig | undefined) => Effect.Effect<void, EffectCacheError, never>;
14
14
  onMutate: (params: MutationOption) => Effect.Effect<void, EffectCacheError, never>;
@@ -8,7 +8,7 @@ import * as Schema$1 from "effect/Schema";
8
8
  //#region src/cache/core/cache-effect.d.ts
9
9
  declare const EffectCache_base: Effect.Service.Class<EffectCache, "drizzle-orm/EffectCache", {
10
10
  readonly sync: () => {
11
- strategy: () => "all" | "explicit";
11
+ strategy: () => "explicit" | "all";
12
12
  get: (key: string, tables: string[], isTag: boolean, isAutoInvalidate?: boolean | undefined) => Effect.Effect<any[] | undefined, EffectCacheError, never>;
13
13
  put: (hashedQuery: string, response: any, tables: string[], isTag: boolean, config?: CacheConfig | undefined) => Effect.Effect<void, EffectCacheError, never>;
14
14
  onMutate: (params: MutationOption) => Effect.Effect<void, EffectCacheError, never>;
@@ -44,7 +44,7 @@ declare class UpstashCache extends Cache {
44
44
  private luaScripts;
45
45
  private internalConfig;
46
46
  constructor(redis: Redis, config?: CacheConfig, useGlobally?: boolean | undefined);
47
- strategy(): "all" | "explicit";
47
+ strategy(): "explicit" | "all";
48
48
  private toInternalConfig;
49
49
  get(key: string, tables: string[], isTag?: boolean, isAutoInvalidate?: boolean): Promise<any[] | undefined>;
50
50
  put(key: string, response: any, tables: string[], isTag?: boolean, config?: CacheConfig): Promise<void>;
@@ -44,7 +44,7 @@ declare class UpstashCache extends Cache {
44
44
  private luaScripts;
45
45
  private internalConfig;
46
46
  constructor(redis: Redis, config?: CacheConfig, useGlobally?: boolean | undefined);
47
- strategy(): "all" | "explicit";
47
+ strategy(): "explicit" | "all";
48
48
  private toInternalConfig;
49
49
  get(key: string, tables: string[], isTag?: boolean, isAutoInvalidate?: boolean): Promise<any[] | undefined>;
50
50
  put(key: string, response: any, tables: string[], isTag?: boolean, config?: CacheConfig): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "1.0.0-beta.22-db6c385",
3
+ "version": "1.0.0-beta.22-aaec768",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -19,9 +19,10 @@ let __pg_core_query_builders_index_ts = require("../query-builders/index.cjs");
19
19
  var PgAsyncDatabase = class {
20
20
  static [__entity_ts.entityKind] = "PgAsyncDatabase";
21
21
  query;
22
- constructor(dialect, session, relations, parseRqbJson = false) {
22
+ constructor(dialect, session, relations, parseRqbJson = false, tagged = false) {
23
23
  this.dialect = dialect;
24
24
  this.session = session;
25
+ this.tagged = tagged;
25
26
  this._ = {
26
27
  relations,
27
28
  session
@@ -109,7 +110,8 @@ var PgAsyncDatabase = class {
109
110
  fields: fields ?? void 0,
110
111
  session: self.session,
111
112
  dialect: self.dialect,
112
- withList: queries
113
+ withList: queries,
114
+ tagged: self.tagged
113
115
  });
114
116
  }
115
117
  function selectDistinct(fields) {
@@ -227,7 +229,8 @@ var PgAsyncDatabase = class {
227
229
  return new require_pg_core_async_select.PgAsyncSelectBase({
228
230
  fields: fields ?? void 0,
229
231
  session: this.session,
230
- dialect: this.dialect
232
+ dialect: this.dialect,
233
+ tagged: this.tagged
231
234
  });
232
235
  }
233
236
  selectDistinct(fields) {
@@ -235,7 +238,8 @@ var PgAsyncDatabase = class {
235
238
  fields: fields ?? void 0,
236
239
  session: this.session,
237
240
  dialect: this.dialect,
238
- distinct: true
241
+ distinct: true,
242
+ tagged: this.tagged
239
243
  });
240
244
  }
241
245
  selectDistinctOn(on, fields) {
@@ -243,7 +247,8 @@ var PgAsyncDatabase = class {
243
247
  fields: fields ?? void 0,
244
248
  session: this.session,
245
249
  dialect: this.dialect,
246
- distinct: { on }
250
+ distinct: { on },
251
+ tagged: this.tagged
247
252
  });
248
253
  }
249
254
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"db.cjs","names":["entityKind","RelationalQueryBuilder","PgAsyncRelationalQuery","QueryBuilder","WithSubquery","SelectionProxyHandler","PgAsyncCountBuilder","PgAsyncSelectBase","PgUpdateBuilder","PgAsyncUpdateBase","PgInsertBuilder","PgAsyncInsertBase","PgAsyncDeleteBase","PgAsyncRefreshMaterializedView","sql","PgAsyncRaw"],"sources":["../../../src/pg-core/async/db.ts"],"sourcesContent":["import type { Cache } from '~/cache/core/cache.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { PgAsyncSession, PgAsyncTransaction } from '~/pg-core/async/session.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgInsertBuilder, PgUpdateBuilder, QueryBuilder } from '~/pg-core/query-builders/index.ts';\nimport type { PgQueryResultHKT, PgQueryResultKind, PgTransactionConfig } from '~/pg-core/session.ts';\nimport type { PgTable } from '~/pg-core/table.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { type ColumnsSelection, type SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport type { PgColumn } from '../columns/index.ts';\nimport { RelationalQueryBuilder } from '../query-builders/query.ts';\nimport type { SelectedFields } from '../query-builders/select.types.ts';\nimport type { PreparedQueryConfig } from '../session.ts';\nimport type { WithBuilder } from '../subquery.ts';\nimport type { PgViewBase } from '../view-base.ts';\nimport type { PgMaterializedView } from '../view.ts';\nimport { PgAsyncCountBuilder } from './count.ts';\nimport { PgAsyncDeleteBase } from './delete.ts';\nimport { PgAsyncInsertBase, type PgAsyncInsertHKT } from './insert.ts';\nimport { PgAsyncRelationalQuery, type PgAsyncRelationalQueryHKT } from './query.ts';\nimport { PgAsyncRaw } from './raw.ts';\nimport { PgAsyncRefreshMaterializedView } from './refresh-materialized-view.ts';\nimport { PgAsyncSelectBase, type PgAsyncSelectBuilder } from './select.ts';\nimport { PgAsyncUpdateBase, type PgAsyncUpdateHKT } from './update.ts';\n\nexport class PgAsyncDatabase<\n\tTQueryResult extends PgQueryResultHKT,\n\tTRelations extends AnyRelations = EmptyRelations,\n> {\n\tstatic readonly [entityKind]: string = 'PgAsyncDatabase';\n\n\tdeclare readonly _: {\n\t\treadonly relations: TRelations;\n\t\treadonly session: PgAsyncSession<TQueryResult, TRelations>;\n\t};\n\n\t// TO-DO: Figure out how to pass DrizzleTypeError without breaking withReplicas\n\tquery: {\n\t\t[K in keyof TRelations]: RelationalQueryBuilder<\n\t\t\tTRelations,\n\t\t\tTRelations[K],\n\t\t\tPgAsyncRelationalQueryHKT\n\t\t>;\n\t};\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: PgDialect,\n\t\t/** @internal */\n\t\treadonly session: PgAsyncSession<any, any>,\n\t\trelations: TRelations,\n\t\tparseRqbJson: boolean = false,\n\t) {\n\t\tthis._ = {\n\t\t\trelations: relations,\n\t\t\tsession,\n\t\t};\n\n\t\tthis.query = {} as typeof this['query'];\n\t\tfor (const [tableName, relation] of Object.entries(relations)) {\n\t\t\t(this.query as PgAsyncDatabase<\n\t\t\t\tTQueryResult,\n\t\t\t\tAnyRelations\n\t\t\t>['query'])[tableName] = new RelationalQueryBuilder(\n\t\t\t\trelations,\n\t\t\t\trelations[relation.name]!.table as PgTable,\n\t\t\t\trelation,\n\t\t\t\tdialect,\n\t\t\t\tsession,\n\t\t\t\tparseRqbJson,\n\t\t\t\tPgAsyncRelationalQuery,\n\t\t\t);\n\t\t}\n\n\t\tthis.$cache = { invalidate: async (_params: any) => {} };\n\t}\n\n\t/**\n\t * Creates a subquery that defines a temporary named result set as a CTE.\n\t *\n\t * It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param alias The alias for the subquery.\n\t *\n\t * Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Create a subquery with alias 'sq' and use it in the select query\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t *\n\t * To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them:\n\t *\n\t * ```ts\n\t * // Select an arbitrary SQL value as a field in a CTE and reference it in the main query\n\t * const sq = db.$with('sq').as(db.select({\n\t * name: sql<string>`upper(${users.name})`.as('name'),\n\t * })\n\t * .from(users));\n\t *\n\t * const result = await db.with(sq).select({ name: sq.name }).from(sq);\n\t * ```\n\t */\n\t$with: WithBuilder = (alias: string, selection?: ColumnsSelection) => {\n\t\tconst as = (\n\t\t\tqb:\n\t\t\t\t| TypedQueryBuilder<ColumnsSelection | undefined>\n\t\t\t\t| SQL\n\t\t\t\t| ((qb: QueryBuilder) => TypedQueryBuilder<ColumnsSelection | undefined> | SQL),\n\t\t) => {\n\t\t\tif (typeof qb === 'function') {\n\t\t\t\tqb = qb(new QueryBuilder(this.dialect));\n\t\t\t}\n\n\t\t\tconst sql = ('withoutSelectionCastCodecs' in qb ? qb.withoutSelectionCastCodecs() : qb).getSQL();\n\t\t\treturn new Proxy(\n\t\t\t\tnew WithSubquery(\n\t\t\t\t\tsql,\n\t\t\t\t\tselection ?? ('getSelectedFields' in qb ? qb.getSelectedFields() ?? {} : {}) as SelectedFields,\n\t\t\t\t\talias,\n\t\t\t\t\ttrue,\n\t\t\t\t\tsql.usedTables ?? [],\n\t\t\t\t),\n\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t);\n\t\t};\n\t\treturn { as };\n\t};\n\n\t$count(\n\t\tsource: PgTable | PgViewBase | SQL | SQLWrapper,\n\t\tfilters?: SQL<unknown>,\n\t) {\n\t\treturn new PgAsyncCountBuilder({ source, filters, session: this.session, dialect: this.dialect });\n\t}\n\n\t$cache: { invalidate: Cache['onMutate'] };\n\n\t/**\n\t * Incorporates a previously defined CTE (using `$with`) into the main query.\n\t *\n\t * This method allows the main query to reference a temporary named result set.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param queries The CTEs to incorporate into the main query.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Define a subquery 'sq' as a CTE using $with\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * // Incorporate the CTE 'sq' into the main query and select from it\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t */\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\t/**\n\t\t * Creates a select query.\n\t\t *\n\t\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Select all columns and all rows from the 'cars' table\n\t\t * const allCars: Car[] = await db.select().from(cars);\n\t\t *\n\t\t * // Select specific columns and all rows from the 'cars' table\n\t\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * brand: cars.brand\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t *\n\t\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t\t *\n\t\t * ```ts\n\t\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * lowerBrand: sql<string>`lower(${cars.brand})`,\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t */\n\t\tfunction select(): PgAsyncSelectBuilder<undefined>;\n\t\tfunction select<TSelection extends SelectedFields>(fields: TSelection): PgAsyncSelectBuilder<TSelection>;\n\t\tfunction select<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\t\treturn new PgAsyncSelectBase({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Adds `distinct` expression to the select query.\n\t\t *\n\t\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t * ```ts\n\t\t * // Select all unique rows from the 'cars' table\n\t\t * await db.selectDistinct()\n\t\t * .from(cars)\n\t\t * .orderBy(cars.id, cars.brand, cars.color);\n\t\t *\n\t\t * // Select all unique brands from the 'cars' table\n\t\t * await db.selectDistinct({ brand: cars.brand })\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand);\n\t\t * ```\n\t\t */\n\t\tfunction selectDistinct(): PgAsyncSelectBuilder<undefined>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\t\treturn new PgAsyncSelectBase({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: true,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Adds `distinct on` expression to the select query.\n\t\t *\n\t\t * Calling this method will specify how the unique rows are determined.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t\t *\n\t\t * @param on The expression defining uniqueness.\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t * ```ts\n\t\t * // Select the first row for each unique brand from the 'cars' table\n\t\t * await db.selectDistinctOn([cars.brand])\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand);\n\t\t *\n\t\t * // Selects the first occurrence of each unique car brand along with its color from the 'cars' table\n\t\t * await db.selectDistinctOn([cars.brand], { brand: cars.brand, color: cars.color })\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand, cars.color);\n\t\t * ```\n\t\t */\n\t\tfunction selectDistinctOn(on: (PgColumn | SQLWrapper)[]): PgAsyncSelectBuilder<undefined>;\n\t\tfunction selectDistinctOn<TSelection extends SelectedFields>(\n\t\t\ton: (PgColumn | SQLWrapper)[],\n\t\t\tfields: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection>;\n\t\tfunction selectDistinctOn<TSelection extends SelectedFields>(\n\t\t\ton: (PgColumn | SQLWrapper)[],\n\t\t\tfields?: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\t\treturn new PgAsyncSelectBase({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: { on },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Creates an update query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t\t *\n\t\t * Use `.set()` method to specify which values to update.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t\t *\n\t\t * @param table The table to update.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Update all rows in the 'cars' table\n\t\t * await db.update(cars).set({ color: 'red' });\n\t\t *\n\t\t * // Update rows with filters and conditions\n\t\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t\t *\n\t\t * // Update with returning clause\n\t\t * const updatedCar: Car[] = await db.update(cars)\n\t\t * .set({ color: 'red' })\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction update<TTable extends PgTable>(table: TTable): PgUpdateBuilder<TTable, TQueryResult, PgAsyncUpdateHKT> {\n\t\t\treturn new PgUpdateBuilder(table, self.session, self.dialect, queries, PgAsyncUpdateBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates an insert query.\n\t\t *\n\t\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t\t *\n\t\t * @param table The table to insert into.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Insert one row\n\t\t * await db.insert(cars).values({ brand: 'BMW' });\n\t\t *\n\t\t * // Insert multiple rows\n\t\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t\t *\n\t\t * // Insert with returning clause\n\t\t * const insertedCar: Car[] = await db.insert(cars)\n\t\t * .values({ brand: 'BMW' })\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction insert<TTable extends PgTable>(\n\t\t\ttable: TTable,\n\t\t): PgInsertBuilder<TTable, TQueryResult, false, PgAsyncInsertHKT> {\n\t\t\treturn new PgInsertBuilder(table, self.session, self.dialect, queries, undefined, PgAsyncInsertBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates a delete query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t\t *\n\t\t * @param table The table to delete from.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Delete all rows in the 'cars' table\n\t\t * await db.delete(cars);\n\t\t *\n\t\t * // Delete rows with filters and conditions\n\t\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t\t *\n\t\t * // Delete with returning clause\n\t\t * const deletedCar: Car[] = await db.delete(cars)\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction delete_<TTable extends PgTable>(table: TTable): PgAsyncDeleteBase<TTable, TQueryResult> {\n\t\t\treturn new PgAsyncDeleteBase(table, self.session, self.dialect, queries);\n\t\t}\n\n\t\treturn { select, selectDistinct, selectDistinctOn, update, insert, delete: delete_ };\n\t}\n\n\t/**\n\t * Creates a select query.\n\t *\n\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all columns and all rows from the 'cars' table\n\t * const allCars: Car[] = await db.select().from(cars);\n\t *\n\t * // Select specific columns and all rows from the 'cars' table\n\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t * id: cars.id,\n\t * brand: cars.brand\n\t * })\n\t * .from(cars);\n\t * ```\n\t *\n\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t *\n\t * ```ts\n\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t * id: cars.id,\n\t * lowerBrand: sql<string>`lower(${cars.brand})`,\n\t * })\n\t * .from(cars);\n\t * ```\n\t */\n\tselect(): PgAsyncSelectBuilder<undefined>;\n\tselect<TSelection extends SelectedFields>(fields: TSelection): PgAsyncSelectBuilder<TSelection>;\n\tselect<TSelection extends SelectedFields | undefined>(\n\t\tfields?: TSelection,\n\t): PgAsyncSelectBuilder<TSelection> {\n\t\treturn new PgAsyncSelectBase({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t}) as PgAsyncSelectBuilder<TSelection>;\n\t}\n\n\t/**\n\t * Adds `distinct` expression to the select query.\n\t *\n\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t * ```ts\n\t * // Select all unique rows from the 'cars' table\n\t * await db.selectDistinct()\n\t * .from(cars)\n\t * .orderBy(cars.id, cars.brand, cars.color);\n\t *\n\t * // Select all unique brands from the 'cars' table\n\t * await db.selectDistinct({ brand: cars.brand })\n\t * .from(cars)\n\t * .orderBy(cars.brand);\n\t * ```\n\t */\n\tselectDistinct(): PgAsyncSelectBuilder<undefined>;\n\tselectDistinct<TSelection extends SelectedFields>(fields: TSelection): PgAsyncSelectBuilder<TSelection>;\n\tselectDistinct<TSelection extends SelectedFields | undefined>(\n\t\tfields?: TSelection,\n\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\treturn new PgAsyncSelectBase({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\tdistinct: true,\n\t\t});\n\t}\n\n\t/**\n\t * Adds `distinct on` expression to the select query.\n\t *\n\t * Calling this method will specify how the unique rows are determined.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t *\n\t * @param on The expression defining uniqueness.\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t * ```ts\n\t * // Select the first row for each unique brand from the 'cars' table\n\t * await db.selectDistinctOn([cars.brand])\n\t * .from(cars)\n\t * .orderBy(cars.brand);\n\t *\n\t * // Selects the first occurrence of each unique car brand along with its color from the 'cars' table\n\t * await db.selectDistinctOn([cars.brand], { brand: cars.brand, color: cars.color })\n\t * .from(cars)\n\t * .orderBy(cars.brand, cars.color);\n\t * ```\n\t */\n\tselectDistinctOn(on: (PgColumn | SQLWrapper)[]): PgAsyncSelectBuilder<undefined>;\n\tselectDistinctOn<TSelection extends SelectedFields>(\n\t\ton: (PgColumn | SQLWrapper)[],\n\t\tfields: TSelection,\n\t): PgAsyncSelectBuilder<TSelection>;\n\tselectDistinctOn<TSelection extends SelectedFields | undefined>(\n\t\ton: (PgColumn | SQLWrapper)[],\n\t\tfields?: TSelection,\n\t): PgAsyncSelectBuilder<TSelection> {\n\t\treturn new PgAsyncSelectBase({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\tdistinct: { on },\n\t\t});\n\t}\n\n\t/**\n\t * Creates an update query.\n\t *\n\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t *\n\t * Use `.set()` method to specify which values to update.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param table The table to update.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Update all rows in the 'cars' table\n\t * await db.update(cars).set({ color: 'red' });\n\t *\n\t * // Update rows with filters and conditions\n\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t *\n\t * // Update with returning clause\n\t * const updatedCar: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tupdate<TTable extends PgTable>(table: TTable): PgUpdateBuilder<TTable, TQueryResult, PgAsyncUpdateHKT> {\n\t\treturn new PgUpdateBuilder(table, this.session, this.dialect, undefined, PgAsyncUpdateBase);\n\t}\n\n\t/**\n\t * Creates an insert query.\n\t *\n\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t *\n\t * @param table The table to insert into.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Insert one row\n\t * await db.insert(cars).values({ brand: 'BMW' });\n\t *\n\t * // Insert multiple rows\n\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t *\n\t * // Insert with returning clause\n\t * const insertedCar: Car[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning();\n\t * ```\n\t */\n\tinsert<TTable extends PgTable>(table: TTable): PgInsertBuilder<TTable, TQueryResult, false, PgAsyncInsertHKT> {\n\t\treturn new PgInsertBuilder(table, this.session, this.dialect, undefined, undefined, PgAsyncInsertBase);\n\t}\n\n\t/**\n\t * Creates a delete query.\n\t *\n\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t *\n\t * @param table The table to delete from.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Delete all rows in the 'cars' table\n\t * await db.delete(cars);\n\t *\n\t * // Delete rows with filters and conditions\n\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t *\n\t * // Delete with returning clause\n\t * const deletedCar: Car[] = await db.delete(cars)\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tdelete<TTable extends PgTable>(table: TTable): PgAsyncDeleteBase<TTable, TQueryResult> {\n\t\treturn new PgAsyncDeleteBase(table, this.session, this.dialect);\n\t}\n\n\trefreshMaterializedView<TView extends PgMaterializedView>(view: TView): PgAsyncRefreshMaterializedView<TQueryResult> {\n\t\treturn new PgAsyncRefreshMaterializedView(view, this.session, this.dialect);\n\t}\n\n\texecute<TRow extends Record<string, unknown> = Record<string, unknown>>(\n\t\tquery: SQLWrapper | string,\n\t): PgAsyncRaw<PgQueryResultKind<TQueryResult, TRow>> {\n\t\tconst sequel = typeof query === 'string' ? sql.raw(query) : query.getSQL();\n\t\tconst builtQuery = this.dialect.sqlToQuery(sequel);\n\t\tconst prepared = this.session.prepareQuery<\n\t\t\tPreparedQueryConfig & { execute: PgQueryResultKind<TQueryResult, TRow> }\n\t\t>(builtQuery, 'raw', false);\n\t\treturn new PgAsyncRaw(\n\t\t\t() => prepared.execute(),\n\t\t\tsequel,\n\t\t\tbuiltQuery,\n\t\t\t(result) => prepared.mapResult(result, true),\n\t\t);\n\t}\n\n\ttransaction: <T>(\n\t\ttransaction: (tx: PgAsyncTransaction<TQueryResult, TRelations>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t) => Promise<T> = (tx, cfg) => this.session.transaction(tx, cfg);\n}\n\nexport type PgAsyncWithReplicas<Q> = Q & { $primary: Q; $replicas: Q[] };\n\nexport const withReplicas = <\n\tHKT extends PgQueryResultHKT,\n\tTRelations extends AnyRelations,\n\tQ extends PgAsyncDatabase<HKT, TRelations>,\n>(\n\tprimary: Q,\n\treplicas: [Q, ...Q[]],\n\tgetReplica: (replicas: Q[]) => Q = () => replicas[Math.floor(Math.random() * replicas.length)]!,\n): PgAsyncWithReplicas<Q> => {\n\tconst select: Q['select'] = (...args: []) => getReplica(replicas).select(...args);\n\tconst selectDistinct: Q['selectDistinct'] = (...args: []) => getReplica(replicas).selectDistinct(...args);\n\tconst selectDistinctOn: Q['selectDistinctOn'] = (...args: [any]) => getReplica(replicas).selectDistinctOn(...args);\n\tconst $count: Q['$count'] = (...args: [any]) => getReplica(replicas).$count(...args);\n\tconst _with: Q['with'] = (...args: any) => getReplica(replicas).with(...args);\n\tconst $with: Q['$with'] = (arg: any) => getReplica(replicas).$with(arg) as any;\n\n\tconst update: Q['update'] = (...args: [any]) => primary.update(...args);\n\tconst insert: Q['insert'] = (...args: [any]) => primary.insert(...args);\n\tconst $delete: Q['delete'] = (...args: [any]) => primary.delete(...args);\n\tconst execute: Q['execute'] = (...args: [any]) => primary.execute(...args);\n\tconst transaction: Q['transaction'] = (...args: [any]) => primary.transaction(...args);\n\n\tconst refreshMaterializedView: Q['refreshMaterializedView'] = (...args: [any]) =>\n\t\tprimary.refreshMaterializedView(...args);\n\n\treturn {\n\t\t...primary,\n\t\tupdate,\n\t\tinsert,\n\t\tdelete: $delete,\n\t\texecute,\n\t\ttransaction,\n\t\trefreshMaterializedView,\n\t\t$primary: primary,\n\t\t$replicas: replicas,\n\t\tselect,\n\t\tselectDistinct,\n\t\tselectDistinctOn,\n\t\t$count,\n\t\t$with,\n\t\twith: _with,\n\t\tget query() {\n\t\t\treturn getReplica(replicas).query;\n\t\t},\n\t};\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"db.cjs","names":["entityKind","RelationalQueryBuilder","PgAsyncRelationalQuery","QueryBuilder","WithSubquery","SelectionProxyHandler","PgAsyncCountBuilder","PgAsyncSelectBase","PgUpdateBuilder","PgAsyncUpdateBase","PgInsertBuilder","PgAsyncInsertBase","PgAsyncDeleteBase","PgAsyncRefreshMaterializedView","sql","PgAsyncRaw"],"sources":["../../../src/pg-core/async/db.ts"],"sourcesContent":["import type { Cache } from '~/cache/core/cache.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { PgAsyncSession, PgAsyncTransaction } from '~/pg-core/async/session.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgInsertBuilder, PgUpdateBuilder, QueryBuilder } from '~/pg-core/query-builders/index.ts';\nimport type { PgQueryResultHKT, PgQueryResultKind, PgTransactionConfig } from '~/pg-core/session.ts';\nimport type { PgTable } from '~/pg-core/table.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { type ColumnsSelection, type SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport type { PgColumn } from '../columns/index.ts';\nimport { RelationalQueryBuilder } from '../query-builders/query.ts';\nimport type { SelectedFields } from '../query-builders/select.types.ts';\nimport type { PreparedQueryConfig } from '../session.ts';\nimport type { WithBuilder } from '../subquery.ts';\nimport type { PgViewBase } from '../view-base.ts';\nimport type { PgMaterializedView } from '../view.ts';\nimport { PgAsyncCountBuilder } from './count.ts';\nimport { PgAsyncDeleteBase } from './delete.ts';\nimport { PgAsyncInsertBase, type PgAsyncInsertHKT } from './insert.ts';\nimport { PgAsyncRelationalQuery, type PgAsyncRelationalQueryHKT } from './query.ts';\nimport { PgAsyncRaw } from './raw.ts';\nimport { PgAsyncRefreshMaterializedView } from './refresh-materialized-view.ts';\nimport { PgAsyncSelectBase, type PgAsyncSelectBuilder } from './select.ts';\nimport { PgAsyncUpdateBase, type PgAsyncUpdateHKT } from './update.ts';\n\nexport class PgAsyncDatabase<\n\tTQueryResult extends PgQueryResultHKT,\n\tTRelations extends AnyRelations = EmptyRelations,\n> {\n\tstatic readonly [entityKind]: string = 'PgAsyncDatabase';\n\n\tdeclare readonly _: {\n\t\treadonly relations: TRelations;\n\t\treadonly session: PgAsyncSession<TQueryResult, TRelations>;\n\t};\n\n\t// TO-DO: Figure out how to pass DrizzleTypeError without breaking withReplicas\n\tquery: {\n\t\t[K in keyof TRelations]: RelationalQueryBuilder<\n\t\t\tTRelations,\n\t\t\tTRelations[K],\n\t\t\tPgAsyncRelationalQueryHKT\n\t\t>;\n\t};\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: PgDialect,\n\t\t/** @internal */\n\t\treadonly session: PgAsyncSession<any, any>,\n\t\trelations: TRelations,\n\t\tparseRqbJson: boolean = false,\n\t\treadonly tagged: boolean = false,\n\t) {\n\t\tthis._ = {\n\t\t\trelations: relations,\n\t\t\tsession,\n\t\t};\n\n\t\tthis.query = {} as typeof this['query'];\n\t\tfor (const [tableName, relation] of Object.entries(relations)) {\n\t\t\t(this.query as PgAsyncDatabase<\n\t\t\t\tTQueryResult,\n\t\t\t\tAnyRelations\n\t\t\t>['query'])[tableName] = new RelationalQueryBuilder(\n\t\t\t\trelations,\n\t\t\t\trelations[relation.name]!.table as PgTable,\n\t\t\t\trelation,\n\t\t\t\tdialect,\n\t\t\t\tsession,\n\t\t\t\tparseRqbJson,\n\t\t\t\tPgAsyncRelationalQuery,\n\t\t\t);\n\t\t}\n\n\t\tthis.$cache = { invalidate: async (_params: any) => {} };\n\t}\n\n\t/**\n\t * Creates a subquery that defines a temporary named result set as a CTE.\n\t *\n\t * It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param alias The alias for the subquery.\n\t *\n\t * Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Create a subquery with alias 'sq' and use it in the select query\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t *\n\t * To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them:\n\t *\n\t * ```ts\n\t * // Select an arbitrary SQL value as a field in a CTE and reference it in the main query\n\t * const sq = db.$with('sq').as(db.select({\n\t * name: sql<string>`upper(${users.name})`.as('name'),\n\t * })\n\t * .from(users));\n\t *\n\t * const result = await db.with(sq).select({ name: sq.name }).from(sq);\n\t * ```\n\t */\n\t$with: WithBuilder = (alias: string, selection?: ColumnsSelection) => {\n\t\tconst as = (\n\t\t\tqb:\n\t\t\t\t| TypedQueryBuilder<ColumnsSelection | undefined>\n\t\t\t\t| SQL\n\t\t\t\t| ((qb: QueryBuilder) => TypedQueryBuilder<ColumnsSelection | undefined> | SQL),\n\t\t) => {\n\t\t\tif (typeof qb === 'function') {\n\t\t\t\tqb = qb(new QueryBuilder(this.dialect));\n\t\t\t}\n\n\t\t\tconst sql = ('withoutSelectionCastCodecs' in qb ? qb.withoutSelectionCastCodecs() : qb).getSQL();\n\t\t\treturn new Proxy(\n\t\t\t\tnew WithSubquery(\n\t\t\t\t\tsql,\n\t\t\t\t\tselection ?? ('getSelectedFields' in qb ? qb.getSelectedFields() ?? {} : {}) as SelectedFields,\n\t\t\t\t\talias,\n\t\t\t\t\ttrue,\n\t\t\t\t\tsql.usedTables ?? [],\n\t\t\t\t),\n\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t);\n\t\t};\n\t\treturn { as };\n\t};\n\n\t$count(\n\t\tsource: PgTable | PgViewBase | SQL | SQLWrapper,\n\t\tfilters?: SQL<unknown>,\n\t) {\n\t\treturn new PgAsyncCountBuilder({ source, filters, session: this.session, dialect: this.dialect });\n\t}\n\n\t$cache: { invalidate: Cache['onMutate'] };\n\n\t/**\n\t * Incorporates a previously defined CTE (using `$with`) into the main query.\n\t *\n\t * This method allows the main query to reference a temporary named result set.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param queries The CTEs to incorporate into the main query.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Define a subquery 'sq' as a CTE using $with\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * // Incorporate the CTE 'sq' into the main query and select from it\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t */\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\t/**\n\t\t * Creates a select query.\n\t\t *\n\t\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Select all columns and all rows from the 'cars' table\n\t\t * const allCars: Car[] = await db.select().from(cars);\n\t\t *\n\t\t * // Select specific columns and all rows from the 'cars' table\n\t\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * brand: cars.brand\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t *\n\t\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t\t *\n\t\t * ```ts\n\t\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * lowerBrand: sql<string>`lower(${cars.brand})`,\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t */\n\t\tfunction select(): PgAsyncSelectBuilder<undefined>;\n\t\tfunction select<TSelection extends SelectedFields>(fields: TSelection): PgAsyncSelectBuilder<TSelection>;\n\t\tfunction select<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\t\treturn new PgAsyncSelectBase({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\ttagged: self.tagged,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Adds `distinct` expression to the select query.\n\t\t *\n\t\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t * ```ts\n\t\t * // Select all unique rows from the 'cars' table\n\t\t * await db.selectDistinct()\n\t\t * .from(cars)\n\t\t * .orderBy(cars.id, cars.brand, cars.color);\n\t\t *\n\t\t * // Select all unique brands from the 'cars' table\n\t\t * await db.selectDistinct({ brand: cars.brand })\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand);\n\t\t * ```\n\t\t */\n\t\tfunction selectDistinct(): PgAsyncSelectBuilder<undefined>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\t\treturn new PgAsyncSelectBase({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: true,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Adds `distinct on` expression to the select query.\n\t\t *\n\t\t * Calling this method will specify how the unique rows are determined.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t\t *\n\t\t * @param on The expression defining uniqueness.\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t * ```ts\n\t\t * // Select the first row for each unique brand from the 'cars' table\n\t\t * await db.selectDistinctOn([cars.brand])\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand);\n\t\t *\n\t\t * // Selects the first occurrence of each unique car brand along with its color from the 'cars' table\n\t\t * await db.selectDistinctOn([cars.brand], { brand: cars.brand, color: cars.color })\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand, cars.color);\n\t\t * ```\n\t\t */\n\t\tfunction selectDistinctOn(on: (PgColumn | SQLWrapper)[]): PgAsyncSelectBuilder<undefined>;\n\t\tfunction selectDistinctOn<TSelection extends SelectedFields>(\n\t\t\ton: (PgColumn | SQLWrapper)[],\n\t\t\tfields: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection>;\n\t\tfunction selectDistinctOn<TSelection extends SelectedFields>(\n\t\t\ton: (PgColumn | SQLWrapper)[],\n\t\t\tfields?: TSelection,\n\t\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\t\treturn new PgAsyncSelectBase({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: { on },\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Creates an update query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t\t *\n\t\t * Use `.set()` method to specify which values to update.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t\t *\n\t\t * @param table The table to update.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Update all rows in the 'cars' table\n\t\t * await db.update(cars).set({ color: 'red' });\n\t\t *\n\t\t * // Update rows with filters and conditions\n\t\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t\t *\n\t\t * // Update with returning clause\n\t\t * const updatedCar: Car[] = await db.update(cars)\n\t\t * .set({ color: 'red' })\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction update<TTable extends PgTable>(table: TTable): PgUpdateBuilder<TTable, TQueryResult, PgAsyncUpdateHKT> {\n\t\t\treturn new PgUpdateBuilder(table, self.session, self.dialect, queries, PgAsyncUpdateBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates an insert query.\n\t\t *\n\t\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t\t *\n\t\t * @param table The table to insert into.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Insert one row\n\t\t * await db.insert(cars).values({ brand: 'BMW' });\n\t\t *\n\t\t * // Insert multiple rows\n\t\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t\t *\n\t\t * // Insert with returning clause\n\t\t * const insertedCar: Car[] = await db.insert(cars)\n\t\t * .values({ brand: 'BMW' })\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction insert<TTable extends PgTable>(\n\t\t\ttable: TTable,\n\t\t): PgInsertBuilder<TTable, TQueryResult, false, PgAsyncInsertHKT> {\n\t\t\treturn new PgInsertBuilder(table, self.session, self.dialect, queries, undefined, PgAsyncInsertBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates a delete query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t\t *\n\t\t * @param table The table to delete from.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Delete all rows in the 'cars' table\n\t\t * await db.delete(cars);\n\t\t *\n\t\t * // Delete rows with filters and conditions\n\t\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t\t *\n\t\t * // Delete with returning clause\n\t\t * const deletedCar: Car[] = await db.delete(cars)\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction delete_<TTable extends PgTable>(table: TTable): PgAsyncDeleteBase<TTable, TQueryResult> {\n\t\t\treturn new PgAsyncDeleteBase(table, self.session, self.dialect, queries);\n\t\t}\n\n\t\treturn { select, selectDistinct, selectDistinctOn, update, insert, delete: delete_ };\n\t}\n\n\t/**\n\t * Creates a select query.\n\t *\n\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all columns and all rows from the 'cars' table\n\t * const allCars: Car[] = await db.select().from(cars);\n\t *\n\t * // Select specific columns and all rows from the 'cars' table\n\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t * id: cars.id,\n\t * brand: cars.brand\n\t * })\n\t * .from(cars);\n\t * ```\n\t *\n\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t *\n\t * ```ts\n\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t * id: cars.id,\n\t * lowerBrand: sql<string>`lower(${cars.brand})`,\n\t * })\n\t * .from(cars);\n\t * ```\n\t */\n\tselect(): PgAsyncSelectBuilder<undefined>;\n\tselect<TSelection extends SelectedFields>(fields: TSelection): PgAsyncSelectBuilder<TSelection>;\n\tselect<TSelection extends SelectedFields | undefined>(\n\t\tfields?: TSelection,\n\t): PgAsyncSelectBuilder<TSelection> {\n\t\treturn new PgAsyncSelectBase({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\ttagged: this.tagged,\n\t\t}) as PgAsyncSelectBuilder<TSelection>;\n\t}\n\n\t/**\n\t * Adds `distinct` expression to the select query.\n\t *\n\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t * ```ts\n\t * // Select all unique rows from the 'cars' table\n\t * await db.selectDistinct()\n\t * .from(cars)\n\t * .orderBy(cars.id, cars.brand, cars.color);\n\t *\n\t * // Select all unique brands from the 'cars' table\n\t * await db.selectDistinct({ brand: cars.brand })\n\t * .from(cars)\n\t * .orderBy(cars.brand);\n\t * ```\n\t */\n\tselectDistinct(): PgAsyncSelectBuilder<undefined>;\n\tselectDistinct<TSelection extends SelectedFields>(fields: TSelection): PgAsyncSelectBuilder<TSelection>;\n\tselectDistinct<TSelection extends SelectedFields | undefined>(\n\t\tfields?: TSelection,\n\t): PgAsyncSelectBuilder<TSelection | undefined> {\n\t\treturn new PgAsyncSelectBase({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\tdistinct: true,\n\t\t\ttagged: this.tagged,\n\t\t});\n\t}\n\n\t/**\n\t * Adds `distinct on` expression to the select query.\n\t *\n\t * Calling this method will specify how the unique rows are determined.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t *\n\t * @param on The expression defining uniqueness.\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t * ```ts\n\t * // Select the first row for each unique brand from the 'cars' table\n\t * await db.selectDistinctOn([cars.brand])\n\t * .from(cars)\n\t * .orderBy(cars.brand);\n\t *\n\t * // Selects the first occurrence of each unique car brand along with its color from the 'cars' table\n\t * await db.selectDistinctOn([cars.brand], { brand: cars.brand, color: cars.color })\n\t * .from(cars)\n\t * .orderBy(cars.brand, cars.color);\n\t * ```\n\t */\n\tselectDistinctOn(on: (PgColumn | SQLWrapper)[]): PgAsyncSelectBuilder<undefined>;\n\tselectDistinctOn<TSelection extends SelectedFields>(\n\t\ton: (PgColumn | SQLWrapper)[],\n\t\tfields: TSelection,\n\t): PgAsyncSelectBuilder<TSelection>;\n\tselectDistinctOn<TSelection extends SelectedFields | undefined>(\n\t\ton: (PgColumn | SQLWrapper)[],\n\t\tfields?: TSelection,\n\t): PgAsyncSelectBuilder<TSelection> {\n\t\treturn new PgAsyncSelectBase({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\tdistinct: { on },\n\t\t\ttagged: this.tagged,\n\t\t});\n\t}\n\n\t/**\n\t * Creates an update query.\n\t *\n\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t *\n\t * Use `.set()` method to specify which values to update.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param table The table to update.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Update all rows in the 'cars' table\n\t * await db.update(cars).set({ color: 'red' });\n\t *\n\t * // Update rows with filters and conditions\n\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t *\n\t * // Update with returning clause\n\t * const updatedCar: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tupdate<TTable extends PgTable>(table: TTable): PgUpdateBuilder<TTable, TQueryResult, PgAsyncUpdateHKT> {\n\t\treturn new PgUpdateBuilder(table, this.session, this.dialect, undefined, PgAsyncUpdateBase);\n\t}\n\n\t/**\n\t * Creates an insert query.\n\t *\n\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t *\n\t * @param table The table to insert into.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Insert one row\n\t * await db.insert(cars).values({ brand: 'BMW' });\n\t *\n\t * // Insert multiple rows\n\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t *\n\t * // Insert with returning clause\n\t * const insertedCar: Car[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning();\n\t * ```\n\t */\n\tinsert<TTable extends PgTable>(table: TTable): PgInsertBuilder<TTable, TQueryResult, false, PgAsyncInsertHKT> {\n\t\treturn new PgInsertBuilder(table, this.session, this.dialect, undefined, undefined, PgAsyncInsertBase);\n\t}\n\n\t/**\n\t * Creates a delete query.\n\t *\n\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t *\n\t * @param table The table to delete from.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Delete all rows in the 'cars' table\n\t * await db.delete(cars);\n\t *\n\t * // Delete rows with filters and conditions\n\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t *\n\t * // Delete with returning clause\n\t * const deletedCar: Car[] = await db.delete(cars)\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tdelete<TTable extends PgTable>(table: TTable): PgAsyncDeleteBase<TTable, TQueryResult> {\n\t\treturn new PgAsyncDeleteBase(table, this.session, this.dialect);\n\t}\n\n\trefreshMaterializedView<TView extends PgMaterializedView>(view: TView): PgAsyncRefreshMaterializedView<TQueryResult> {\n\t\treturn new PgAsyncRefreshMaterializedView(view, this.session, this.dialect);\n\t}\n\n\texecute<TRow extends Record<string, unknown> = Record<string, unknown>>(\n\t\tquery: SQLWrapper | string,\n\t): PgAsyncRaw<PgQueryResultKind<TQueryResult, TRow>> {\n\t\tconst sequel = typeof query === 'string' ? sql.raw(query) : query.getSQL();\n\t\tconst builtQuery = this.dialect.sqlToQuery(sequel);\n\t\tconst prepared = this.session.prepareQuery<\n\t\t\tPreparedQueryConfig & { execute: PgQueryResultKind<TQueryResult, TRow> }\n\t\t>(builtQuery, 'raw', false);\n\t\treturn new PgAsyncRaw(\n\t\t\t() => prepared.execute(),\n\t\t\tsequel,\n\t\t\tbuiltQuery,\n\t\t\t(result) => prepared.mapResult(result, true),\n\t\t);\n\t}\n\n\ttransaction: <T>(\n\t\ttransaction: (tx: PgAsyncTransaction<TQueryResult, TRelations>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t) => Promise<T> = (tx, cfg) => this.session.transaction(tx, cfg);\n}\n\nexport type PgAsyncWithReplicas<Q> = Q & { $primary: Q; $replicas: Q[] };\n\nexport const withReplicas = <\n\tHKT extends PgQueryResultHKT,\n\tTRelations extends AnyRelations,\n\tQ extends PgAsyncDatabase<HKT, TRelations>,\n>(\n\tprimary: Q,\n\treplicas: [Q, ...Q[]],\n\tgetReplica: (replicas: Q[]) => Q = () => replicas[Math.floor(Math.random() * replicas.length)]!,\n): PgAsyncWithReplicas<Q> => {\n\tconst select: Q['select'] = (...args: []) => getReplica(replicas).select(...args);\n\tconst selectDistinct: Q['selectDistinct'] = (...args: []) => getReplica(replicas).selectDistinct(...args);\n\tconst selectDistinctOn: Q['selectDistinctOn'] = (...args: [any]) => getReplica(replicas).selectDistinctOn(...args);\n\tconst $count: Q['$count'] = (...args: [any]) => getReplica(replicas).$count(...args);\n\tconst _with: Q['with'] = (...args: any) => getReplica(replicas).with(...args);\n\tconst $with: Q['$with'] = (arg: any) => getReplica(replicas).$with(arg) as any;\n\n\tconst update: Q['update'] = (...args: [any]) => primary.update(...args);\n\tconst insert: Q['insert'] = (...args: [any]) => primary.insert(...args);\n\tconst $delete: Q['delete'] = (...args: [any]) => primary.delete(...args);\n\tconst execute: Q['execute'] = (...args: [any]) => primary.execute(...args);\n\tconst transaction: Q['transaction'] = (...args: [any]) => primary.transaction(...args);\n\n\tconst refreshMaterializedView: Q['refreshMaterializedView'] = (...args: [any]) =>\n\t\tprimary.refreshMaterializedView(...args);\n\n\treturn {\n\t\t...primary,\n\t\tupdate,\n\t\tinsert,\n\t\tdelete: $delete,\n\t\texecute,\n\t\ttransaction,\n\t\trefreshMaterializedView,\n\t\t$primary: primary,\n\t\t$replicas: replicas,\n\t\tselect,\n\t\tselectDistinct,\n\t\tselectDistinctOn,\n\t\t$count,\n\t\t$with,\n\t\twith: _with,\n\t\tget query() {\n\t\t\treturn getReplica(replicas).query;\n\t\t},\n\t};\n};\n"],"mappings":"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"}
@@ -25,6 +25,7 @@ import { PgAsyncSession, PgAsyncTransaction } from "./session.cjs";
25
25
 
26
26
  //#region src/pg-core/async/db.d.ts
27
27
  declare class PgAsyncDatabase<TQueryResult extends PgQueryResultHKT, TRelations extends AnyRelations = EmptyRelations> {
28
+ readonly tagged: boolean;
28
29
  static readonly [entityKind]: string;
29
30
  readonly _: {
30
31
  readonly relations: TRelations;
@@ -35,7 +36,7 @@ declare class PgAsyncDatabase<TQueryResult extends PgQueryResultHKT, TRelations
35
36
 
36
37
  dialect: PgDialect, /** @internal */
37
38
 
38
- session: PgAsyncSession<any, any>, relations: TRelations, parseRqbJson?: boolean);
39
+ session: PgAsyncSession<any, any>, relations: TRelations, parseRqbJson?: boolean, tagged?: boolean);
39
40
  /**
40
41
  * Creates a subquery that defines a temporary named result set as a CTE.
41
42
  *
@@ -25,6 +25,7 @@ import { PgQueryResultHKT, PgQueryResultKind, PgTransactionConfig } from "../ses
25
25
 
26
26
  //#region src/pg-core/async/db.d.ts
27
27
  declare class PgAsyncDatabase<TQueryResult extends PgQueryResultHKT, TRelations extends AnyRelations = EmptyRelations> {
28
+ readonly tagged: boolean;
28
29
  static readonly [entityKind]: string;
29
30
  readonly _: {
30
31
  readonly relations: TRelations;
@@ -35,7 +36,7 @@ declare class PgAsyncDatabase<TQueryResult extends PgQueryResultHKT, TRelations
35
36
 
36
37
  dialect: PgDialect, /** @internal */
37
38
 
38
- session: PgAsyncSession<any, any>, relations: TRelations, parseRqbJson?: boolean);
39
+ session: PgAsyncSession<any, any>, relations: TRelations, parseRqbJson?: boolean, tagged?: boolean);
39
40
  /**
40
41
  * Creates a subquery that defines a temporary named result set as a CTE.
41
42
  *
@@ -17,9 +17,10 @@ import { PgInsertBuilder, PgUpdateBuilder, QueryBuilder } from "../query-builder
17
17
  var PgAsyncDatabase = class {
18
18
  static [entityKind] = "PgAsyncDatabase";
19
19
  query;
20
- constructor(dialect, session, relations, parseRqbJson = false) {
20
+ constructor(dialect, session, relations, parseRqbJson = false, tagged = false) {
21
21
  this.dialect = dialect;
22
22
  this.session = session;
23
+ this.tagged = tagged;
23
24
  this._ = {
24
25
  relations,
25
26
  session
@@ -107,7 +108,8 @@ var PgAsyncDatabase = class {
107
108
  fields: fields ?? void 0,
108
109
  session: self.session,
109
110
  dialect: self.dialect,
110
- withList: queries
111
+ withList: queries,
112
+ tagged: self.tagged
111
113
  });
112
114
  }
113
115
  function selectDistinct(fields) {
@@ -225,7 +227,8 @@ var PgAsyncDatabase = class {
225
227
  return new PgAsyncSelectBase({
226
228
  fields: fields ?? void 0,
227
229
  session: this.session,
228
- dialect: this.dialect
230
+ dialect: this.dialect,
231
+ tagged: this.tagged
229
232
  });
230
233
  }
231
234
  selectDistinct(fields) {
@@ -233,7 +236,8 @@ var PgAsyncDatabase = class {
233
236
  fields: fields ?? void 0,
234
237
  session: this.session,
235
238
  dialect: this.dialect,
236
- distinct: true
239
+ distinct: true,
240
+ tagged: this.tagged
237
241
  });
238
242
  }
239
243
  selectDistinctOn(on, fields) {
@@ -241,7 +245,8 @@ var PgAsyncDatabase = class {
241
245
  fields: fields ?? void 0,
242
246
  session: this.session,
243
247
  dialect: this.dialect,
244
- distinct: { on }
248
+ distinct: { on },
249
+ tagged: this.tagged
245
250
  });
246
251
  }
247
252
  /**