drizzle-orm 1.0.0-beta.15-ab3fb94 → 1.0.0-beta.15-3dbc8ad
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.
- package/aws-data-api/common/index.cjs +2 -0
- package/aws-data-api/common/index.cjs.map +1 -1
- package/aws-data-api/common/index.js +2 -0
- package/aws-data-api/common/index.js.map +1 -1
- package/aws-data-api/pg/driver.cjs +2 -2
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +2 -2
- package/aws-data-api/pg/driver.d.ts +2 -2
- package/aws-data-api/pg/driver.js +2 -2
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/migrator.d.cts +2 -2
- package/aws-data-api/pg/migrator.d.ts +2 -2
- package/aws-data-api/pg/session.cjs +1 -0
- package/aws-data-api/pg/session.cjs.map +1 -1
- package/aws-data-api/pg/session.js +1 -0
- package/aws-data-api/pg/session.js.map +1 -1
- package/better-sqlite3/migrator.d.cts +2 -2
- package/better-sqlite3/migrator.d.ts +2 -2
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/migrator.d.cts +5 -5
- package/bun-sql/migrator.d.ts +5 -5
- package/bun-sql/mysql/migrator.d.cts +2 -2
- package/bun-sql/mysql/migrator.d.ts +2 -2
- package/bun-sql/mysql/session.cjs.map +1 -1
- package/bun-sql/mysql/session.js.map +1 -1
- package/bun-sql/postgres/driver.d.cts +2 -2
- package/bun-sql/postgres/migrator.d.cts +2 -2
- package/bun-sql/postgres/migrator.d.ts +2 -2
- package/bun-sql/postgres/session.cjs +3 -3
- package/bun-sql/postgres/session.cjs.map +1 -1
- package/bun-sql/postgres/session.js +3 -3
- package/bun-sql/postgres/session.js.map +1 -1
- package/bun-sql/sqlite/migrator.d.cts +2 -2
- package/bun-sql/sqlite/migrator.d.ts +2 -2
- package/bun-sql/sqlite/session.cjs.map +1 -1
- package/bun-sql/sqlite/session.js.map +1 -1
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.js.map +1 -1
- package/cockroach/migrator.d.cts +2 -2
- package/cockroach/migrator.d.ts +2 -2
- package/cockroach/session.cjs.map +1 -1
- package/cockroach/session.js.map +1 -1
- package/d1/session.cjs.map +1 -1
- package/d1/session.js.map +1 -1
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.js.map +1 -1
- package/effect-postgres/driver.d.cts +2 -2
- package/effect-postgres/driver.d.ts +2 -2
- package/effect-postgres/migrator.d.cts +1 -1
- package/effect-postgres/migrator.d.ts +1 -1
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.js.map +1 -1
- package/gel/session.cjs.map +1 -1
- package/gel/session.js.map +1 -1
- package/gel-core/utils.d.cts +3 -3
- package/gel-core/utils.d.ts +3 -3
- package/index.cjs +2 -0
- package/index.d.cts +3 -3
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.js.map +1 -1
- package/mysql-core/utils.d.ts +2 -2
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/migrator.d.cts +2 -2
- package/mysql2/migrator.d.ts +2 -2
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.js.map +1 -1
- package/neon/rls.d.cts +2 -2
- package/neon-http/driver.d.cts +2 -2
- package/neon-serverless/driver.d.ts +2 -2
- package/neon-serverless/migrator.d.cts +2 -2
- package/neon-serverless/migrator.d.ts +2 -2
- package/node-mssql/migrator.d.cts +2 -2
- package/node-mssql/migrator.d.ts +2 -2
- package/node-mssql/session.cjs.map +1 -1
- package/node-mssql/session.js.map +1 -1
- package/node-postgres/migrator.d.ts +2 -2
- package/op-sqlite/migrator.d.cts +2 -2
- package/op-sqlite/migrator.d.ts +2 -2
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.js.map +1 -1
- package/package.json +1 -1
- package/pg-core/async/db.cjs +5 -2
- package/pg-core/async/db.cjs.map +1 -1
- package/pg-core/async/db.js +5 -2
- package/pg-core/async/db.js.map +1 -1
- package/pg-core/async/delete.cjs +1 -5
- package/pg-core/async/delete.cjs.map +1 -1
- package/pg-core/async/delete.js +2 -6
- package/pg-core/async/delete.js.map +1 -1
- package/pg-core/async/insert.cjs +1 -5
- package/pg-core/async/insert.cjs.map +1 -1
- package/pg-core/async/insert.js +2 -6
- package/pg-core/async/insert.js.map +1 -1
- package/pg-core/async/query.cjs +2 -7
- package/pg-core/async/query.cjs.map +1 -1
- package/pg-core/async/query.js +2 -7
- package/pg-core/async/query.js.map +1 -1
- package/pg-core/async/select.cjs +1 -5
- package/pg-core/async/select.cjs.map +1 -1
- package/pg-core/async/select.js +2 -6
- package/pg-core/async/select.js.map +1 -1
- package/pg-core/async/update.cjs +1 -5
- package/pg-core/async/update.cjs.map +1 -1
- package/pg-core/async/update.js +2 -6
- package/pg-core/async/update.js.map +1 -1
- package/pg-core/dialect.cjs +9 -5
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +9 -3
- package/pg-core/dialect.d.ts +9 -3
- package/pg-core/dialect.js +11 -7
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/effect/db.cjs +5 -2
- package/pg-core/effect/db.cjs.map +1 -1
- package/pg-core/effect/db.js +5 -2
- package/pg-core/effect/db.js.map +1 -1
- package/pg-core/effect/delete.cjs +1 -6
- package/pg-core/effect/delete.cjs.map +1 -1
- package/pg-core/effect/delete.js +1 -6
- package/pg-core/effect/delete.js.map +1 -1
- package/pg-core/effect/insert.cjs +1 -6
- package/pg-core/effect/insert.cjs.map +1 -1
- package/pg-core/effect/insert.js +1 -6
- package/pg-core/effect/insert.js.map +1 -1
- package/pg-core/effect/query.cjs +2 -7
- package/pg-core/effect/query.cjs.map +1 -1
- package/pg-core/effect/query.js +2 -7
- package/pg-core/effect/query.js.map +1 -1
- package/pg-core/effect/select.cjs +1 -5
- package/pg-core/effect/select.cjs.map +1 -1
- package/pg-core/effect/select.js +2 -6
- package/pg-core/effect/select.js.map +1 -1
- package/pg-core/effect/session.d.cts +1 -1
- package/pg-core/effect/session.d.ts +1 -1
- package/pg-core/effect/update.cjs +1 -6
- package/pg-core/effect/update.cjs.map +1 -1
- package/pg-core/effect/update.js +1 -6
- package/pg-core/effect/update.js.map +1 -1
- package/pglite/migrator.d.cts +2 -2
- package/pglite/migrator.d.ts +2 -2
- package/planetscale-serverless/migrator.d.cts +2 -2
- package/planetscale-serverless/migrator.d.ts +2 -2
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/driver.d.cts +2 -2
- package/postgres-js/migrator.d.cts +2 -2
- package/postgres-js/migrator.d.ts +2 -2
- package/prisma/pg/driver.d.cts +2 -2
- package/relations.cjs +9 -0
- package/relations.cjs.map +1 -1
- package/relations.d.cts +15 -3
- package/relations.d.ts +15 -3
- package/relations.js +9 -1
- package/relations.js.map +1 -1
- package/singlestore/migrator.d.cts +2 -2
- package/singlestore/migrator.d.ts +2 -2
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.js.map +1 -1
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.js.map +1 -1
- package/sql-js/migrator.d.cts +2 -2
- package/sql-js/migrator.d.ts +2 -2
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.js.map +1 -1
- package/sqlite-cloud/session.cjs.map +1 -1
- package/sqlite-cloud/session.js.map +1 -1
- package/sqlite-core/query-builders/raw.d.cts +2 -2
- package/sqlite-core/query-builders/raw.d.ts +2 -2
- package/sqlite-core/utils.d.cts +2 -2
- package/sqlite-core/utils.d.ts +2 -2
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.js.map +1 -1
- package/supabase/rls.d.ts +3 -3
- package/tidb-serverless/migrator.d.cts +2 -2
- package/tidb-serverless/migrator.d.ts +2 -2
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.js.map +1 -1
- package/tursodatabase/migrator.d.ts +2 -2
- package/tursodatabase/session.cjs.map +1 -1
- package/tursodatabase/session.js.map +1 -1
- package/utils.cjs +44 -0
- package/utils.cjs.map +1 -1
- package/utils.d.cts +4 -3
- package/utils.d.ts +4 -3
- package/utils.js +44 -1
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.d.cts +2 -2
- package/vercel-postgres/migrator.d.cts +2 -2
- package/vercel-postgres/migrator.d.ts +2 -2
- package/xata-http/driver.d.cts +2 -2
- package/xata-http/driver.d.ts +2 -2
|
@@ -54,6 +54,8 @@ function toValueParam(value, typings) {
|
|
|
54
54
|
else if (typeof value === "number" && !Number.isInteger(value)) response.value = { doubleValue: value };
|
|
55
55
|
else if (typeof value === "boolean") response.value = { booleanValue: value };
|
|
56
56
|
else if (value instanceof Date) response.value = { stringValue: value.toISOString().replace("T", " ").replace("Z", "") };
|
|
57
|
+
else if (typeof value === "bigint") response.value = { stringValue: value.toString() };
|
|
58
|
+
else if (typeof Buffer !== "undefined" && Buffer.isBuffer(value) || value instanceof Uint8Array) response.value = { blobValue: value };
|
|
57
59
|
else throw new Error(`Unknown type for ${value}`);
|
|
58
60
|
return response;
|
|
59
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["typeHint: { [K in TypeHint]: K }","response: { value: Field; typeHint?: TypeHint }"],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";;AAIA,MAAaA,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAMC,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["typeHint: { [K in TypeHint]: K }","response: { value: Field; typeHint?: TypeHint }"],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else if (typeof value === 'bigint') {\n\t\tresponse.value = { stringValue: value.toString() };\n\t} else if ((typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) || value instanceof Uint8Array) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\tresponse.value = { blobValue: value };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";;AAIA,MAAaA,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAMC,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;UAC9E,OAAO,UAAU,SAC3B,UAAS,QAAQ,EAAE,aAAa,MAAM,UAAU,EAAE;UACvC,OAAO,WAAW,eAAe,OAAO,SAAS,MAAM,IAAK,iBAAiB,WACxF,UAAS,QAAQ,EAAE,WAAW,OAAO;KAErC,OAAM,IAAI,MAAM,oBAAoB,QAAQ;AAG7C,QAAO"}
|
|
@@ -53,6 +53,8 @@ function toValueParam(value, typings) {
|
|
|
53
53
|
else if (typeof value === "number" && !Number.isInteger(value)) response.value = { doubleValue: value };
|
|
54
54
|
else if (typeof value === "boolean") response.value = { booleanValue: value };
|
|
55
55
|
else if (value instanceof Date) response.value = { stringValue: value.toISOString().replace("T", " ").replace("Z", "") };
|
|
56
|
+
else if (typeof value === "bigint") response.value = { stringValue: value.toString() };
|
|
57
|
+
else if (typeof Buffer !== "undefined" && Buffer.isBuffer(value) || value instanceof Uint8Array) response.value = { blobValue: value };
|
|
56
58
|
else throw new Error(`Unknown type for ${value}`);
|
|
57
59
|
return response;
|
|
58
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["typeHint: { [K in TypeHint]: K }","response: { value: Field; typeHint?: TypeHint }"],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";AAIA,MAAaA,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAMC,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","names":["typeHint: { [K in TypeHint]: K }","response: { value: Field; typeHint?: TypeHint }"],"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport type { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport const typeHint: { [K in TypeHint]: K } = {\n\tDATE: 'DATE',\n\tDECIMAL: 'DECIMAL',\n\tJSON: 'JSON',\n\tTIME: 'TIME',\n\tTIMESTAMP: 'TIMESTAMP',\n\tUUID: 'UUID',\n};\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn typeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn typeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn typeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn typeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn typeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn typeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase typeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase typeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else if (typeof value === 'bigint') {\n\t\tresponse.value = { stringValue: value.toString() };\n\t} else if ((typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) || value instanceof Uint8Array) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\tresponse.value = { blobValue: value };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";AAIA,MAAaA,WAAmC;CAC/C,MAAM;CACN,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN;AAED,SAAgB,oBAAoB,OAAc;AACjD,KAAI,MAAM,gBAAgB,OACzB,QAAO,MAAM;UACH,MAAM,iBAAiB,OACjC,QAAO,MAAM;UACH,MAAM,gBAAgB,OAChC,QAAO,MAAM;UACH,MAAM,WAAW,OAC3B,QAAO;UACG,MAAM,cAAc,OAC9B,QAAO,MAAM;UACH,MAAM,cAAc,OAC9B,QAAO,MAAM;UAEH,MAAM,eAAe,QAAW;AAC1C,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,eAAe,OACnC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,iBAAiB,OACrC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,kBAAkB,OACtC,QAAO,MAAM,WAAW;AAEzB,MAAI,MAAM,WAAW,gBAAgB,OACpC,QAAO,MAAM,WAAW;AAGzB,QAAM,IAAI,MAAM,qBAAqB;OAErC,OAAM,IAAI,MAAM,eAAe;;AAIjC,SAAgB,qBAAqB,SAAmD;AACvF,KAAI,YAAY,OACf,QAAO,SAAS;UACN,YAAY,UACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;UACN,YAAY,YACtB,QAAO,SAAS;UACN,YAAY,OACtB,QAAO,SAAS;KAEhB;;AAIF,SAAgB,aAAa,OAAY,SAAoE;CAC5G,MAAMC,WAAkD;EACvD,OAAO,EAAE;EACT,UAAU,qBAAqB,QAAQ;EACvC;AAED,KAAI,UAAU,KACb,UAAS,QAAQ,EAAE,QAAQ,MAAM;UACvB,OAAO,UAAU,SAC3B,SAAQ,SAAS,UAAjB;EACC,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,IAAI,CAAC,IAAK;AACtD;EAED,KAAK,SAAS;AACb,YAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAC1E;EAED;AACC,YAAS,QAAQ,EAAE,aAAa,OAAO;AACvC;;UAGQ,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,CAC9D,UAAS,QAAQ,EAAE,WAAW,OAAO;UAC3B,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,CAC/D,UAAS,QAAQ,EAAE,aAAa,OAAO;UAC7B,OAAO,UAAU,UAC3B,UAAS,QAAQ,EAAE,cAAc,OAAO;UAC9B,iBAAiB,KAE3B,UAAS,QAAQ,EAAE,aAAa,MAAM,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;UAC9E,OAAO,UAAU,SAC3B,UAAS,QAAQ,EAAE,aAAa,MAAM,UAAU,EAAE;UACvC,OAAO,WAAW,eAAe,OAAO,SAAS,MAAM,IAAK,iBAAiB,WACxF,UAAS,QAAQ,EAAE,WAAW,OAAO;KAErC,OAAM,IAAI,MAAM,oBAAoB,QAAQ;AAG7C,QAAO"}
|
|
@@ -26,7 +26,7 @@ var AwsPgDialect = class extends __pg_core_dialect_ts.PgDialect {
|
|
|
26
26
|
if (!select) for (const value of values) for (const fieldName of Object.keys(columns)) {
|
|
27
27
|
const colValue = value[fieldName];
|
|
28
28
|
const column = columns[fieldName];
|
|
29
|
-
if ((0, __entity_ts.is)(colValue, __sql_sql_ts.Param) && colValue.value !== void 0 && (0, __entity_ts.is)(column, __pg_core_columns_common_ts.PgColumn) && column.dimensions && Array.isArray(colValue.value)) value[fieldName] = __sql_sql_ts.sql`cast(${colValue} as ${__sql_sql_ts.sql.raw(column.getSQLType())})`;
|
|
29
|
+
if ((0, __entity_ts.is)(colValue, __sql_sql_ts.Param) && colValue.value !== void 0 && (0, __entity_ts.is)(column, __pg_core_columns_common_ts.PgColumn) && column.dimensions && Array.isArray(colValue.value)) value[fieldName] = __sql_sql_ts.sql`cast(${colValue} as ${__sql_sql_ts.sql.raw(column.getSQLType())}${column.dimensions ? __sql_sql_ts.sql.raw("[]".repeat(column.dimensions)) : void 0})`;
|
|
30
30
|
}
|
|
31
31
|
return super.buildInsertQuery({
|
|
32
32
|
table,
|
|
@@ -40,7 +40,7 @@ var AwsPgDialect = class extends __pg_core_dialect_ts.PgDialect {
|
|
|
40
40
|
const columns = table[__table_ts.Table.Symbol.Columns];
|
|
41
41
|
for (const [colName, colValue] of Object.entries(set)) {
|
|
42
42
|
const currentColumn = columns[colName];
|
|
43
|
-
if (currentColumn && (0, __entity_ts.is)(colValue, __sql_sql_ts.Param) && colValue.value !== void 0 && (0, __entity_ts.is)(currentColumn, __pg_core_columns_common_ts.PgColumn) && currentColumn.dimensions && Array.isArray(colValue.value)) set[colName] = __sql_sql_ts.sql`cast(${colValue} as ${__sql_sql_ts.sql.raw(currentColumn.getSQLType())})`;
|
|
43
|
+
if (currentColumn && (0, __entity_ts.is)(colValue, __sql_sql_ts.Param) && colValue.value !== void 0 && (0, __entity_ts.is)(currentColumn, __pg_core_columns_common_ts.PgColumn) && currentColumn.dimensions && Array.isArray(colValue.value)) set[colName] = __sql_sql_ts.sql`cast(${colValue} as ${__sql_sql_ts.sql.raw(currentColumn.getSQLType())}${currentColumn.dimensions ? __sql_sql_ts.sql.raw("[]".repeat(currentColumn.dimensions)) : void 0})`;
|
|
44
44
|
}
|
|
45
45
|
return super.buildUpdateSet(table, set);
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.cjs","names":["PgAsyncDatabase","entityKind","PgDialect","columns: Record<string, PgColumn>","Table","Param","PgColumn","sql","DefaultLogger","schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined","V1","AwsDataApiSession","drizzleConfig","RDSDataClient"],"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { RDSDataClient, type RDSDataClientConfig } from '@aws-sdk/client-rds-data';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { extendGenericPgCodecs } from '~/pg-core/codecs.ts';\nimport { PgColumn } from '~/pg-core/columns/common.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgInsertConfig } from '~/pg-core/query-builders/insert.ts';\nimport type { PgTable, TableConfig } from '~/pg-core/table.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { Param, type SQL, sql } from '~/sql/sql.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends DrizzleConfig<TSchema, TRelations> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<AwsDataApiPgQueryResultHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic override readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tif (!select) {\n\t\t\tfor (const value of (values as Record<string, Param | SQL>[])) {\n\t\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tconst column = columns[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined\n\t\t\t\t\t\t&& is(column, PgColumn) && column.dimensions\n\t\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(column.getSQLType())})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning, withList });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined\n\t\t\t\t&& is(currentColumn, PgColumn) && currentColumn.dimensions\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(currentColumn.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport const awsDataApiPgCodecs = extendGenericPgCodecs({\n\tqueryNormalize: {\n\t\tjson: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t\tjsonb: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t},\n});\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect({\n\t\tcasing: config.casing,\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: awsDataApiPgCodecs,\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new AwsDataApiSession(client, dialect, relations, schema, {\n\t\t...config,\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMapper: config.useJitMappers,\n\t}, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, relations, schema as V1.RelationalSchemaConfig<any>, true);\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\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends AwsDataApiClient = RDSDataClient,\n>(\n\t...params: [\n\t\t(\n\t\t\t| (\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t\t\t\t}\n\t\t\t)\n\t\t\t| (\n\t\t\t\t& DrizzleAwsDataApiPgConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t}\n\t\t\t)\n\t\t),\n\t]\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif ((params[0] as { client?: TClient }).client) {\n\t\tconst { client, ...drizzleConfig } = params[0] as {\n\t\t\tclient: TClient;\n\t\t} & DrizzleAwsDataApiPgConfig<TSchema, TRelations>;\n\n\t\treturn construct(client, drizzleConfig) as any;\n\t}\n\n\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t} & DrizzleConfig<TSchema, TRelations>;\n\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\tconst instance = new RDSDataClient(rdsConfig);\n\treturn construct(instance, { resourceArn, database, secretArn, ...drizzleConfig }) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAmCA,IAAa,uBAAb,cAGUA,sCAAiE;CAC1E,QAA0BC,0BAAsB;;AAGjD,IAAa,eAAb,cAAkCC,+BAAU;CAC3C,QAA0BD,0BAAsB;CAEhD,AAAS,YAAY,KAAqB;AACzC,SAAO,IAAI,MAAM;;CAGlB,AAAS,iBACR,EAAE,OAAO,QAAQ,YAAY,WAAW,QAAQ,YACjC;EACf,MAAME,UAAoC,MAAMC,iBAAM,OAAO;AAE7D,MAAI,CAAC,OACJ,MAAK,MAAM,SAAU,OACpB,MAAK,MAAM,aAAa,OAAO,KAAK,QAAQ,EAAE;GAC7C,MAAM,WAAW,MAAM;GACvB,MAAM,SAAS,QAAQ;AACvB,2BACI,UAAUC,mBAAM,IAAI,SAAS,UAAU,8BACpC,QAAQC,qCAAS,IAAI,OAAO,cAC/B,MAAM,QAAQ,SAAS,MAAM,CAEhC,OAAM,aAAa,gBAAG,QAAQ,SAAS,MAAMC,iBAAI,IAAI,OAAO,YAAY,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"driver.cjs","names":["PgAsyncDatabase","entityKind","PgDialect","columns: Record<string, PgColumn>","Table","Param","PgColumn","sql","DefaultLogger","schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined","V1","AwsDataApiSession","drizzleConfig","RDSDataClient"],"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { RDSDataClient, type RDSDataClientConfig } from '@aws-sdk/client-rds-data';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { extendGenericPgCodecs } from '~/pg-core/codecs.ts';\nimport { PgColumn } from '~/pg-core/columns/common.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgInsertConfig } from '~/pg-core/query-builders/insert.ts';\nimport type { PgTable, TableConfig } from '~/pg-core/table.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { Param, type SQL, sql } from '~/sql/sql.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends DrizzleConfig<TSchema, TRelations> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<AwsDataApiPgQueryResultHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic override readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tif (!select) {\n\t\t\tfor (const value of (values as Record<string, Param | SQL>[])) {\n\t\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tconst column = columns[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined\n\t\t\t\t\t\t&& is(column, PgColumn) && column.dimensions\n\t\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(column.getSQLType())}${\n\t\t\t\t\t\t\tcolumn.dimensions ? sql.raw('[]'.repeat(column.dimensions)) : undefined\n\t\t\t\t\t\t})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning, withList });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined\n\t\t\t\t&& is(currentColumn, PgColumn) && currentColumn.dimensions\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(currentColumn.getSQLType())}${\n\t\t\t\t\tcurrentColumn.dimensions ? sql.raw('[]'.repeat(currentColumn.dimensions)) : undefined\n\t\t\t\t})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport const awsDataApiPgCodecs = extendGenericPgCodecs({\n\tqueryNormalize: {\n\t\tjson: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t\tjsonb: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t},\n});\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect({\n\t\tcasing: config.casing,\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: awsDataApiPgCodecs,\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new AwsDataApiSession(client, dialect, relations, schema, {\n\t\t...config,\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMapper: config.useJitMappers,\n\t}, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, relations, schema as V1.RelationalSchemaConfig<any>, true);\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\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends AwsDataApiClient = RDSDataClient,\n>(\n\t...params: [\n\t\t(\n\t\t\t| (\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t\t\t\t}\n\t\t\t)\n\t\t\t| (\n\t\t\t\t& DrizzleAwsDataApiPgConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t}\n\t\t\t)\n\t\t),\n\t]\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif ((params[0] as { client?: TClient }).client) {\n\t\tconst { client, ...drizzleConfig } = params[0] as {\n\t\t\tclient: TClient;\n\t\t} & DrizzleAwsDataApiPgConfig<TSchema, TRelations>;\n\n\t\treturn construct(client, drizzleConfig) as any;\n\t}\n\n\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t} & DrizzleConfig<TSchema, TRelations>;\n\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\tconst instance = new RDSDataClient(rdsConfig);\n\treturn construct(instance, { resourceArn, database, secretArn, ...drizzleConfig }) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { PgTable, TableConfig } from "../../pg-core/table.cjs";
|
|
|
7
7
|
import { PgDialect } from "../../pg-core/dialect.cjs";
|
|
8
8
|
import { Logger } from "../../logger.cjs";
|
|
9
9
|
import { RDSDataClient, RDSDataClientConfig } from "@aws-sdk/client-rds-data";
|
|
10
|
-
import * as
|
|
10
|
+
import * as __pg_core_codecs_ts6 from "../../pg-core/codecs.cjs";
|
|
11
11
|
import { PgAsyncDatabase } from "../../pg-core/async/db.cjs";
|
|
12
12
|
import { PgInsertConfig } from "../../pg-core/query-builders/insert.cjs";
|
|
13
13
|
|
|
@@ -40,7 +40,7 @@ declare class AwsPgDialect extends PgDialect {
|
|
|
40
40
|
}: PgInsertConfig<PgTable<TableConfig>>): SQL<unknown>;
|
|
41
41
|
buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown>;
|
|
42
42
|
}
|
|
43
|
-
declare const awsDataApiPgCodecs:
|
|
43
|
+
declare const awsDataApiPgCodecs: __pg_core_codecs_ts6.PgCodecs;
|
|
44
44
|
declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends AwsDataApiClient = RDSDataClient>(...params: [((DrizzleConfig<TSchema, TRelations> & {
|
|
45
45
|
connection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;
|
|
46
46
|
}) | (DrizzleAwsDataApiPgConfig<TSchema, TRelations> & {
|
|
@@ -4,7 +4,7 @@ import { DrizzleConfig, UpdateSet } from "../../utils.js";
|
|
|
4
4
|
import { SQL } from "../../sql/sql.js";
|
|
5
5
|
import { Logger } from "../../logger.js";
|
|
6
6
|
import { PgAsyncDatabase } from "../../pg-core/async/db.js";
|
|
7
|
-
import * as
|
|
7
|
+
import * as __pg_core_codecs_ts6 from "../../pg-core/codecs.js";
|
|
8
8
|
import { PgDialect } from "../../pg-core/dialect.js";
|
|
9
9
|
import { AnyRelations, EmptyRelations } from "../../relations.js";
|
|
10
10
|
import { PgTable, TableConfig } from "../../pg-core/table.js";
|
|
@@ -40,7 +40,7 @@ declare class AwsPgDialect extends PgDialect {
|
|
|
40
40
|
}: PgInsertConfig<PgTable<TableConfig>>): SQL<unknown>;
|
|
41
41
|
buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown>;
|
|
42
42
|
}
|
|
43
|
-
declare const awsDataApiPgCodecs:
|
|
43
|
+
declare const awsDataApiPgCodecs: __pg_core_codecs_ts6.PgCodecs;
|
|
44
44
|
declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends AwsDataApiClient = RDSDataClient>(...params: [((DrizzleConfig<TSchema, TRelations> & {
|
|
45
45
|
connection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;
|
|
46
46
|
}) | (DrizzleAwsDataApiPgConfig<TSchema, TRelations> & {
|
|
@@ -24,7 +24,7 @@ var AwsPgDialect = class extends PgDialect {
|
|
|
24
24
|
if (!select) for (const value of values) for (const fieldName of Object.keys(columns)) {
|
|
25
25
|
const colValue = value[fieldName];
|
|
26
26
|
const column = columns[fieldName];
|
|
27
|
-
if (is(colValue, Param) && colValue.value !== void 0 && is(column, PgColumn) && column.dimensions && Array.isArray(colValue.value)) value[fieldName] = sql`cast(${colValue} as ${sql.raw(column.getSQLType())})`;
|
|
27
|
+
if (is(colValue, Param) && colValue.value !== void 0 && is(column, PgColumn) && column.dimensions && Array.isArray(colValue.value)) value[fieldName] = sql`cast(${colValue} as ${sql.raw(column.getSQLType())}${column.dimensions ? sql.raw("[]".repeat(column.dimensions)) : void 0})`;
|
|
28
28
|
}
|
|
29
29
|
return super.buildInsertQuery({
|
|
30
30
|
table,
|
|
@@ -38,7 +38,7 @@ var AwsPgDialect = class extends PgDialect {
|
|
|
38
38
|
const columns = table[Table.Symbol.Columns];
|
|
39
39
|
for (const [colName, colValue] of Object.entries(set)) {
|
|
40
40
|
const currentColumn = columns[colName];
|
|
41
|
-
if (currentColumn && is(colValue, Param) && colValue.value !== void 0 && is(currentColumn, PgColumn) && currentColumn.dimensions && Array.isArray(colValue.value)) set[colName] = sql`cast(${colValue} as ${sql.raw(currentColumn.getSQLType())})`;
|
|
41
|
+
if (currentColumn && is(colValue, Param) && colValue.value !== void 0 && is(currentColumn, PgColumn) && currentColumn.dimensions && Array.isArray(colValue.value)) set[colName] = sql`cast(${colValue} as ${sql.raw(currentColumn.getSQLType())}${currentColumn.dimensions ? sql.raw("[]".repeat(currentColumn.dimensions)) : void 0})`;
|
|
42
42
|
}
|
|
43
43
|
return super.buildUpdateSet(table, set);
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","names":["columns: Record<string, PgColumn>","schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined","drizzleConfig"],"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { RDSDataClient, type RDSDataClientConfig } from '@aws-sdk/client-rds-data';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { extendGenericPgCodecs } from '~/pg-core/codecs.ts';\nimport { PgColumn } from '~/pg-core/columns/common.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgInsertConfig } from '~/pg-core/query-builders/insert.ts';\nimport type { PgTable, TableConfig } from '~/pg-core/table.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { Param, type SQL, sql } from '~/sql/sql.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends DrizzleConfig<TSchema, TRelations> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<AwsDataApiPgQueryResultHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic override readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tif (!select) {\n\t\t\tfor (const value of (values as Record<string, Param | SQL>[])) {\n\t\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tconst column = columns[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined\n\t\t\t\t\t\t&& is(column, PgColumn) && column.dimensions\n\t\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(column.getSQLType())})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning, withList });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined\n\t\t\t\t&& is(currentColumn, PgColumn) && currentColumn.dimensions\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(currentColumn.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport const awsDataApiPgCodecs = extendGenericPgCodecs({\n\tqueryNormalize: {\n\t\tjson: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t\tjsonb: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t},\n});\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect({\n\t\tcasing: config.casing,\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: awsDataApiPgCodecs,\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new AwsDataApiSession(client, dialect, relations, schema, {\n\t\t...config,\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMapper: config.useJitMappers,\n\t}, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, relations, schema as V1.RelationalSchemaConfig<any>, true);\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\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends AwsDataApiClient = RDSDataClient,\n>(\n\t...params: [\n\t\t(\n\t\t\t| (\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t\t\t\t}\n\t\t\t)\n\t\t\t| (\n\t\t\t\t& DrizzleAwsDataApiPgConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t}\n\t\t\t)\n\t\t),\n\t]\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif ((params[0] as { client?: TClient }).client) {\n\t\tconst { client, ...drizzleConfig } = params[0] as {\n\t\t\tclient: TClient;\n\t\t} & DrizzleAwsDataApiPgConfig<TSchema, TRelations>;\n\n\t\treturn construct(client, drizzleConfig) as any;\n\t}\n\n\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t} & DrizzleConfig<TSchema, TRelations>;\n\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\tconst instance = new RDSDataClient(rdsConfig);\n\treturn construct(instance, { resourceArn, database, secretArn, ...drizzleConfig }) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AAmCA,IAAa,uBAAb,cAGU,gBAAiE;CAC1E,QAA0B,cAAsB;;AAGjD,IAAa,eAAb,cAAkC,UAAU;CAC3C,QAA0B,cAAsB;CAEhD,AAAS,YAAY,KAAqB;AACzC,SAAO,IAAI,MAAM;;CAGlB,AAAS,iBACR,EAAE,OAAO,QAAQ,YAAY,WAAW,QAAQ,YACjC;EACf,MAAMA,UAAoC,MAAM,MAAM,OAAO;AAE7D,MAAI,CAAC,OACJ,MAAK,MAAM,SAAU,OACpB,MAAK,MAAM,aAAa,OAAO,KAAK,QAAQ,EAAE;GAC7C,MAAM,WAAW,MAAM;GACvB,MAAM,SAAS,QAAQ;AACvB,OACC,GAAG,UAAU,MAAM,IAAI,SAAS,UAAU,UACvC,GAAG,QAAQ,SAAS,IAAI,OAAO,cAC/B,MAAM,QAAQ,SAAS,MAAM,CAEhC,OAAM,aAAa,GAAG,QAAQ,SAAS,MAAM,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"driver.js","names":["columns: Record<string, PgColumn>","schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined","drizzleConfig"],"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { RDSDataClient, type RDSDataClientConfig } from '@aws-sdk/client-rds-data';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgAsyncDatabase } from '~/pg-core/async/db.ts';\nimport { extendGenericPgCodecs } from '~/pg-core/codecs.ts';\nimport { PgColumn } from '~/pg-core/columns/common.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgInsertConfig } from '~/pg-core/query-builders/insert.ts';\nimport type { PgTable, TableConfig } from '~/pg-core/table.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { Param, type SQL, sql } from '~/sql/sql.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends DrizzleConfig<TSchema, TRelations> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgAsyncDatabase<AwsDataApiPgQueryResultHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic override readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tif (!select) {\n\t\t\tfor (const value of (values as Record<string, Param | SQL>[])) {\n\t\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tconst column = columns[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined\n\t\t\t\t\t\t&& is(column, PgColumn) && column.dimensions\n\t\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(column.getSQLType())}${\n\t\t\t\t\t\t\tcolumn.dimensions ? sql.raw('[]'.repeat(column.dimensions)) : undefined\n\t\t\t\t\t\t})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning, withList });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined\n\t\t\t\t&& is(currentColumn, PgColumn) && currentColumn.dimensions\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(currentColumn.getSQLType())}${\n\t\t\t\t\tcurrentColumn.dimensions ? sql.raw('[]'.repeat(currentColumn.dimensions)) : undefined\n\t\t\t\t})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport const awsDataApiPgCodecs = extendGenericPgCodecs({\n\tqueryNormalize: {\n\t\tjson: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t\tjsonb: {\n\t\t\titem: (v) => JSON.parse(v),\n\t\t},\n\t},\n});\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect({\n\t\tcasing: config.casing,\n\t\tuseJitMappers: config.useJitMappers,\n\t\tcodecs: awsDataApiPgCodecs,\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new AwsDataApiSession(client, dialect, relations, schema, {\n\t\t...config,\n\t\tlogger,\n\t\tcache: config.cache,\n\t\tuseJitMapper: config.useJitMappers,\n\t}, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, relations, schema as V1.RelationalSchemaConfig<any>, true);\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\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends AwsDataApiClient = RDSDataClient,\n>(\n\t...params: [\n\t\t(\n\t\t\t| (\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t\t\t\t}\n\t\t\t)\n\t\t\t| (\n\t\t\t\t& DrizzleAwsDataApiPgConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t}\n\t\t\t)\n\t\t),\n\t]\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif ((params[0] as { client?: TClient }).client) {\n\t\tconst { client, ...drizzleConfig } = params[0] as {\n\t\t\tclient: TClient;\n\t\t} & DrizzleAwsDataApiPgConfig<TSchema, TRelations>;\n\n\t\treturn construct(client, drizzleConfig) as any;\n\t}\n\n\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t} & DrizzleConfig<TSchema, TRelations>;\n\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\tconst instance = new RDSDataClient(rdsConfig);\n\treturn construct(instance, { resourceArn, database, secretArn, ...drizzleConfig }) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AwsDataApiPgDatabase } from "./driver.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as __migrator_ts13 from "../../migrator.cjs";
|
|
3
3
|
import { MigrationConfig } from "../../migrator.cjs";
|
|
4
4
|
import { AnyRelations } from "../../relations.cjs";
|
|
5
5
|
|
|
6
6
|
//#region src/aws-data-api/pg/migrator.d.ts
|
|
7
|
-
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: AwsDataApiPgDatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void |
|
|
7
|
+
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: AwsDataApiPgDatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void | __migrator_ts13.MigratorInitFailResponse>;
|
|
8
8
|
//#endregion
|
|
9
9
|
export { migrate };
|
|
10
10
|
//# sourceMappingURL=migrator.d.cts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AwsDataApiPgDatabase } from "./driver.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as __migrator_ts16 from "../../migrator.js";
|
|
3
3
|
import { MigrationConfig } from "../../migrator.js";
|
|
4
4
|
import { AnyRelations } from "../../relations.js";
|
|
5
5
|
|
|
6
6
|
//#region src/aws-data-api/pg/migrator.d.ts
|
|
7
|
-
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: AwsDataApiPgDatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void |
|
|
7
|
+
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: AwsDataApiPgDatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void | __migrator_ts16.MigratorInitFailResponse>;
|
|
8
8
|
//#endregion
|
|
9
9
|
export { migrate };
|
|
10
10
|
//# sourceMappingURL=migrator.d.ts.map
|
|
@@ -60,6 +60,7 @@ var AwsDataApiSession = class AwsDataApiSession extends __pg_core_async_session_
|
|
|
60
60
|
}
|
|
61
61
|
return row;
|
|
62
62
|
});
|
|
63
|
+
if (mode === "objects") return mappedRows;
|
|
63
64
|
return Object.assign(result, { rows: mappedRows });
|
|
64
65
|
};
|
|
65
66
|
return new __pg_core_async_session_ts.PgAsyncPreparedQuery(executor, query, mapper, mode, this.logger, this.cache, queryMetadata, cacheConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.cjs","names":["PgAsyncSession","entityKind","client: AwsDataApiClient","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: AwsDataApiSessionOptions","transactionId: string | undefined","NoopCache","NoopLogger","ExecuteStatementCommand","toValueParam","getValueFromDataApi","row: Record<string, unknown>","PgAsyncPreparedQuery","BeginTransactionCommand","CommitTransactionCommand","RollbackTransactionCommand","PgAsyncTransaction","sql"],"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ExecuteStatementCommandOutput, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport type * as V1 from '~/_relations.ts';\nimport type { Cache } from '~/cache/core/cache.ts';\nimport { NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, 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 QueryWithTypings, sql } from '~/sql/sql.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n\tuseJitMapper?: boolean;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncSession<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\tprivate cache: Cache;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\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\tconst command = new ExecuteStatementCommand({\n\t\t\t\tsql: query.sql,\n\t\t\t\tparameters: params\n\t\t\t\t\t? params.map((param, index) => ({\n\t\t\t\t\t\tname: `${index + 1}`,\n\t\t\t\t\t\t...toValueParam(param, query.typings?.[index]),\n\t\t\t\t\t}))\n\t\t\t\t\t: [],\n\t\t\t\tsecretArn: this.options.secretArn,\n\t\t\t\tresourceArn: this.options.resourceArn,\n\t\t\t\tdatabase: this.options.database,\n\t\t\t\ttransactionId: this.transactionId,\n\t\t\t\tincludeResultMetadata: mode === 'objects' || mode === 'raw',\n\t\t\t});\n\n\t\t\tconst result = await this.client.send(command);\n\t\t\tconst rows = result.records?.map((row) => {\n\t\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t\t}) ?? [];\n\n\t\t\tif (mode === 'arrays') return rows;\n\n\t\t\tconst { columnMetadata } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn Object.assign(result, { rows });\n\t\t\t}\n\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\t\t\treturn Object.assign(result, { rows: mappedRows });\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 async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\ttransactionId,\n\t\t);\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride transaction = async <T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> => {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis._.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t\ttrue,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t};\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<this['row']>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.cjs","names":["PgAsyncSession","entityKind","client: AwsDataApiClient","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: AwsDataApiSessionOptions","transactionId: string | undefined","NoopCache","NoopLogger","ExecuteStatementCommand","toValueParam","getValueFromDataApi","row: Record<string, unknown>","PgAsyncPreparedQuery","BeginTransactionCommand","CommitTransactionCommand","RollbackTransactionCommand","PgAsyncTransaction","sql"],"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ExecuteStatementCommandOutput, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport type * as V1 from '~/_relations.ts';\nimport type { Cache } from '~/cache/core/cache.ts';\nimport { NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, 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 QueryWithTypings, sql } from '~/sql/sql.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n\tuseJitMapper?: boolean;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncSession<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\tprivate cache: Cache;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\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\tconst command = new ExecuteStatementCommand({\n\t\t\t\tsql: query.sql,\n\t\t\t\tparameters: params\n\t\t\t\t\t? params.map((param, index) => ({\n\t\t\t\t\t\tname: `${index + 1}`,\n\t\t\t\t\t\t...toValueParam(param, query.typings?.[index]),\n\t\t\t\t\t}))\n\t\t\t\t\t: [],\n\t\t\t\tsecretArn: this.options.secretArn,\n\t\t\t\tresourceArn: this.options.resourceArn,\n\t\t\t\tdatabase: this.options.database,\n\t\t\t\ttransactionId: this.transactionId,\n\t\t\t\tincludeResultMetadata: mode === 'objects' || mode === 'raw',\n\t\t\t});\n\n\t\t\tconst result = await this.client.send(command);\n\t\t\tconst rows = result.records?.map((row) => {\n\t\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t\t}) ?? [];\n\n\t\t\tif (mode === 'arrays') return rows;\n\n\t\t\tconst { columnMetadata } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn Object.assign(result, { rows });\n\t\t\t}\n\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\n\t\t\tif (mode === 'objects') return mappedRows;\n\t\t\treturn Object.assign(result, { rows: mappedRows });\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 async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\ttransactionId,\n\t\t);\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride transaction = async <T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> => {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis._.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t\ttrue,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t};\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<this['row']>;\n}\n"],"mappings":"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"}
|
|
@@ -59,6 +59,7 @@ var AwsDataApiSession = class AwsDataApiSession extends PgAsyncSession {
|
|
|
59
59
|
}
|
|
60
60
|
return row;
|
|
61
61
|
});
|
|
62
|
+
if (mode === "objects") return mappedRows;
|
|
62
63
|
return Object.assign(result, { rows: mappedRows });
|
|
63
64
|
};
|
|
64
65
|
return new PgAsyncPreparedQuery(executor, query, mapper, mode, this.logger, this.cache, queryMetadata, cacheConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","names":["client: AwsDataApiClient","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: AwsDataApiSessionOptions","transactionId: string | undefined","row: Record<string, unknown>"],"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ExecuteStatementCommandOutput, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport type * as V1 from '~/_relations.ts';\nimport type { Cache } from '~/cache/core/cache.ts';\nimport { NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, 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 QueryWithTypings, sql } from '~/sql/sql.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n\tuseJitMapper?: boolean;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncSession<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\tprivate cache: Cache;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\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\tconst command = new ExecuteStatementCommand({\n\t\t\t\tsql: query.sql,\n\t\t\t\tparameters: params\n\t\t\t\t\t? params.map((param, index) => ({\n\t\t\t\t\t\tname: `${index + 1}`,\n\t\t\t\t\t\t...toValueParam(param, query.typings?.[index]),\n\t\t\t\t\t}))\n\t\t\t\t\t: [],\n\t\t\t\tsecretArn: this.options.secretArn,\n\t\t\t\tresourceArn: this.options.resourceArn,\n\t\t\t\tdatabase: this.options.database,\n\t\t\t\ttransactionId: this.transactionId,\n\t\t\t\tincludeResultMetadata: mode === 'objects' || mode === 'raw',\n\t\t\t});\n\n\t\t\tconst result = await this.client.send(command);\n\t\t\tconst rows = result.records?.map((row) => {\n\t\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t\t}) ?? [];\n\n\t\t\tif (mode === 'arrays') return rows;\n\n\t\t\tconst { columnMetadata } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn Object.assign(result, { rows });\n\t\t\t}\n\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\t\t\treturn Object.assign(result, { rows: mappedRows });\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 async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\ttransactionId,\n\t\t);\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride transaction = async <T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> => {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis._.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t\ttrue,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t};\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<this['row']>;\n}\n"],"mappings":";;;;;;;;;AAqCA,IAAa,oBAAb,MAAa,0BAIH,eAA6E;CACtF,QAA0B,cAAsB;;CAGhD,AAAS;CACT,AAAQ;CACR,AAAQ;CAER,YAEC,AAASA,QACT,SACA,AAAQC,WACR,AAAQC,QACR,AAAQC,SAER,AAASC,eACR;AACD,QAAM,QAAQ;EARL;EAED;EACA;EACA;EAEC;AAGT,OAAK,WAAW;GACf,WAAW,QAAQ;GACnB,aAAa,QAAQ;GACrB,UAAU,QAAQ;GAClB;AACD,OAAK,QAAQ,QAAQ,SAAS,IAAI,WAAW;AAC7C,OAAK,SAAS,QAAQ,UAAU,IAAI,YAAY;;CAGjD,aACC,OACA,MACA,OACA,QACA,eAIA,aAC0B;EAC1B,MAAM,WAAW,OAAO,WAAuB;GAC9C,MAAM,UAAU,IAAI,wBAAwB;IAC3C,KAAK,MAAM;IACX,YAAY,SACT,OAAO,KAAK,OAAO,WAAW;KAC/B,MAAM,GAAG,QAAQ;KACjB,GAAG,aAAa,OAAO,MAAM,UAAU,OAAO;KAC9C,EAAE,GACD,EAAE;IACL,WAAW,KAAK,QAAQ;IACxB,aAAa,KAAK,QAAQ;IAC1B,UAAU,KAAK,QAAQ;IACvB,eAAe,KAAK;IACpB,uBAAuB,SAAS,aAAa,SAAS;IACtD,CAAC;GAEF,MAAM,SAAS,MAAM,KAAK,OAAO,KAAK,QAAQ;GAC9C,MAAM,OAAO,OAAO,SAAS,KAAK,QAAQ;AACzC,WAAO,IAAI,KAAK,UAAU,oBAAoB,MAAM,CAAC;KACpD,IAAI,EAAE;AAER,OAAI,SAAS,SAAU,QAAO;GAE9B,MAAM,EAAE,mBAAmB;AAC3B,OAAI,CAAC,eACJ,QAAO,OAAO,OAAO,QAAQ,EAAE,MAAM,CAAC;GAGvC,MAAM,aAAa,KAAK,KAAK,cAAc;IAC1C,MAAMC,MAA+B,EAAE;AACvC,SAAK,MAAM,CAAC,OAAO,UAAU,UAAU,SAAS,EAAE;KACjD,MAAM,WAAW,eAAe;AAChC,SAAI,CAAC,SACJ,OAAM,IAAI,MACT,wDAAwD,MAAM,qGAC9D;AAEF,SAAI,CAAC,SAAS,KACb,OAAM,IAAI,MACT,8CAA8C,MAAM,kIACpD;AAEF,SAAI,SAAS,QAAQ;;AAEtB,WAAO;KACN;
|
|
1
|
+
{"version":3,"file":"session.js","names":["client: AwsDataApiClient","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: AwsDataApiSessionOptions","transactionId: string | undefined","row: Record<string, unknown>"],"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ExecuteStatementCommandOutput, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport type * as V1 from '~/_relations.ts';\nimport type { Cache } from '~/cache/core/cache.ts';\nimport { NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, 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 QueryWithTypings, sql } from '~/sql/sql.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n\tuseJitMapper?: boolean;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncSession<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\tprivate cache: Cache;\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: QueryWithTypings,\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\tconst command = new ExecuteStatementCommand({\n\t\t\t\tsql: query.sql,\n\t\t\t\tparameters: params\n\t\t\t\t\t? params.map((param, index) => ({\n\t\t\t\t\t\tname: `${index + 1}`,\n\t\t\t\t\t\t...toValueParam(param, query.typings?.[index]),\n\t\t\t\t\t}))\n\t\t\t\t\t: [],\n\t\t\t\tsecretArn: this.options.secretArn,\n\t\t\t\tresourceArn: this.options.resourceArn,\n\t\t\t\tdatabase: this.options.database,\n\t\t\t\ttransactionId: this.transactionId,\n\t\t\t\tincludeResultMetadata: mode === 'objects' || mode === 'raw',\n\t\t\t});\n\n\t\t\tconst result = await this.client.send(command);\n\t\t\tconst rows = result.records?.map((row) => {\n\t\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t\t}) ?? [];\n\n\t\t\tif (mode === 'arrays') return rows;\n\n\t\t\tconst { columnMetadata } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn Object.assign(result, { rows });\n\t\t\t}\n\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\n\t\t\tif (mode === 'objects') return mappedRows;\n\t\t\treturn Object.assign(result, { rows: mappedRows });\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 async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(\n\t\t\tthis.client,\n\t\t\tthis.dialect,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t\ttransactionId,\n\t\t);\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tsession,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgAsyncTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride transaction = async <T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> => {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis._.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t\ttrue,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t};\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<this['row']>;\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BetterSQLite3Database } from "./driver.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as __migrator_ts21 from "../migrator.cjs";
|
|
3
3
|
import { MigrationConfig } from "../migrator.cjs";
|
|
4
4
|
import { AnyRelations } from "../relations.cjs";
|
|
5
5
|
|
|
6
6
|
//#region src/better-sqlite3/migrator.d.ts
|
|
7
|
-
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: BetterSQLite3Database<TSchema, TRelations>, config: MigrationConfig): void |
|
|
7
|
+
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: BetterSQLite3Database<TSchema, TRelations>, config: MigrationConfig): void | __migrator_ts21.MigratorInitFailResponse;
|
|
8
8
|
//#endregion
|
|
9
9
|
export { migrate };
|
|
10
10
|
//# sourceMappingURL=migrator.d.cts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BetterSQLite3Database } from "./driver.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as __migrator_ts20 from "../migrator.js";
|
|
3
3
|
import { MigrationConfig } from "../migrator.js";
|
|
4
4
|
import { AnyRelations } from "../relations.js";
|
|
5
5
|
|
|
6
6
|
//#region src/better-sqlite3/migrator.d.ts
|
|
7
|
-
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: BetterSQLite3Database<TSchema, TRelations>, config: MigrationConfig): void |
|
|
7
|
+
declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: BetterSQLite3Database<TSchema, TRelations>, config: MigrationConfig): void | __migrator_ts20.MigratorInitFailResponse;
|
|
8
8
|
//#endregion
|
|
9
9
|
export { migrate };
|
|
10
10
|
//# sourceMappingURL=migrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.cjs","names":["SQLiteSession","entityKind","client: Database","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: BetterSQLiteSessionOptions","NoopLogger","NoopCache","SQLiteTransaction","sql","PreparedQueryBase","stmt: Statement","logger: Logger","fields: SelectedFieldsOrdered | undefined","useJitMapper: boolean | undefined","customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown","isRqbV2Query?: TIsRqbV2","rqbConfig?: RelationalQueryMapperConfig"],"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport type * as V1 from '~/_relations.ts';\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 {\n\ttype AnyRelations,\n\tmakeRqbJitMapper,\n\ttype RelationalQueryJitMapper,\n\ttype RelationalQueryMapperConfig,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, type JitMapper, makeJitQueryMapper, mapResultRow } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: BetterSQLiteSessionOptions = {},\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 Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\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): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): PreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\tprivate jitMapper?: JitMapper | RelationalQueryJitMapper;\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as JitMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as JitMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = stmt.all(...params) as Record<string, unknown>[];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalQueryJitMapper<T['all']>\n\t\t\t\t?? makeRqbJitMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\trows,\n\t\t\t);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\n\t\tconst row = stmt.get(...params) as Record<string, unknown>;\n\t\tif (row === undefined) return row;\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalQueryJitMapper<T['get'][]>\n\t\t\t\t?? makeRqbJitMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\t[row],\n\t\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.cjs","names":["SQLiteSession","entityKind","client: Database","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: BetterSQLiteSessionOptions","NoopLogger","NoopCache","SQLiteTransaction","sql","PreparedQueryBase","stmt: Statement","logger: Logger","fields: SelectedFieldsOrdered | undefined","useJitMapper: boolean | undefined","customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown","isRqbV2Query?: TIsRqbV2","rqbConfig?: RelationalQueryMapperConfig"],"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport type * as V1 from '~/_relations.ts';\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 {\n\ttype AnyRelations,\n\tmakeRqbJitMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: BetterSQLiteSessionOptions = {},\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 Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\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): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): PreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper | RelationalRowsMapper;\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = stmt.all(...params) as Record<string, unknown>[];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeRqbJitMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\trows,\n\t\t\t);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\n\t\tconst row = stmt.get(...params) as Record<string, unknown>;\n\t\tif (row === undefined) return row;\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeRqbJitMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\t[row],\n\t\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","names":["SQLiteSession","client: Database","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: BetterSQLiteSessionOptions","PreparedQueryBase","stmt: Statement","logger: Logger","fields: SelectedFieldsOrdered | undefined","useJitMapper: boolean | undefined","customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown","isRqbV2Query?: TIsRqbV2","rqbConfig?: RelationalQueryMapperConfig"],"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport type * as V1 from '~/_relations.ts';\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 {\n\ttype AnyRelations,\n\tmakeRqbJitMapper,\n\ttype RelationalQueryJitMapper,\n\ttype RelationalQueryMapperConfig,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, type JitMapper, makeJitQueryMapper, mapResultRow } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: BetterSQLiteSessionOptions = {},\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 Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\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): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): PreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\tprivate jitMapper?: JitMapper | RelationalQueryJitMapper;\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as JitMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as JitMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = stmt.all(...params) as Record<string, unknown>[];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalQueryJitMapper<T['all']>\n\t\t\t\t?? makeRqbJitMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\trows,\n\t\t\t);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\n\t\tconst row = stmt.get(...params) as Record<string, unknown>;\n\t\tif (row === undefined) return row;\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalQueryJitMapper<T['get'][]>\n\t\t\t\t?? makeRqbJitMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\t[row],\n\t\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","names":["SQLiteSession","client: Database","relations: TRelations","schema: V1.RelationalSchemaConfig<TSchema> | undefined","options: BetterSQLiteSessionOptions","PreparedQueryBase","stmt: Statement","logger: Logger","fields: SelectedFieldsOrdered | undefined","useJitMapper: boolean | undefined","customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown","isRqbV2Query?: TIsRqbV2","rqbConfig?: RelationalQueryMapperConfig"],"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport type * as V1 from '~/_relations.ts';\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 {\n\ttype AnyRelations,\n\tmakeRqbJitMapper,\n\ttype RelationalQueryMapperConfig,\n\ttype RelationalRowsMapper,\n} from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: BetterSQLiteSessionOptions = {},\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 Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\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): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t\tconfig: RelationalQueryMapperConfig,\n\t): PreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t\tconfig,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: BetterSQLiteTransaction<TFullSchema, TRelations, TSchema>,\n\t\t) => T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\">\n\t\t\t: T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result as T;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\tprivate jitMapper?: RowsMapper | RelationalRowsMapper;\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t\tprivate rqbConfig?: RelationalQueryMapperConfig,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(rows)\n\t\t\t: rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper\n\t\t\t\t?? makeJitQueryMapper<T['execute']>(fields!, joinsNotNullableMap))(\n\t\t\t\t\t[row],\n\t\t\t\t)[0]\n\t\t\t: mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = stmt.all(...params) as Record<string, unknown>[];\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeRqbJitMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\trows,\n\t\t\t);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\n\t\tconst row = stmt.get(...params) as Record<string, unknown>;\n\t\tif (row === undefined) return row;\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeRqbJitMapper<T['get'][]>(this.rqbConfig!))([row])\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t\t[row],\n\t\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n}\n"],"mappings":"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"}
|