drizzle-orm 1.0.0-beta.22-eaa25cd → 1.0.0-beta.22-46020ee
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.d.cts +1 -1
- package/aws-data-api/common/index.d.ts +1 -1
- package/aws-data-api/pg/codecs.cjs +162 -0
- package/aws-data-api/pg/codecs.cjs.map +1 -0
- package/aws-data-api/pg/codecs.d.cts +9 -0
- package/aws-data-api/pg/codecs.d.ts +9 -0
- package/aws-data-api/pg/codecs.js +160 -0
- package/aws-data-api/pg/codecs.js.map +1 -0
- package/aws-data-api/pg/driver.cjs +4 -157
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +1 -5
- package/aws-data-api/pg/driver.d.ts +1 -5
- package/aws-data-api/pg/driver.js +4 -156
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/index.cjs +2 -1
- package/aws-data-api/pg/index.d.cts +2 -1
- package/aws-data-api/pg/index.d.ts +2 -1
- package/aws-data-api/pg/index.js +2 -1
- package/better-sqlite3/driver.cjs +2 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.js +2 -1
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/session.cjs +8 -8
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +3 -3
- package/better-sqlite3/session.d.ts +3 -3
- package/better-sqlite3/session.js +8 -8
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/mysql/driver.cjs +2 -1
- package/bun-sql/mysql/driver.cjs.map +1 -1
- package/bun-sql/mysql/driver.js +2 -1
- package/bun-sql/mysql/driver.js.map +1 -1
- package/bun-sql/mysql/session.cjs +8 -8
- package/bun-sql/mysql/session.cjs.map +1 -1
- package/bun-sql/mysql/session.d.cts +3 -3
- package/bun-sql/mysql/session.d.ts +3 -3
- package/bun-sql/mysql/session.js +8 -8
- package/bun-sql/mysql/session.js.map +1 -1
- package/bun-sql/postgres/codecs.cjs +176 -0
- package/bun-sql/postgres/codecs.cjs.map +1 -0
- package/bun-sql/postgres/codecs.d.cts +9 -0
- package/bun-sql/postgres/codecs.d.ts +9 -0
- package/bun-sql/postgres/codecs.js +174 -0
- package/bun-sql/postgres/codecs.js.map +1 -0
- package/bun-sql/postgres/driver.cjs +4 -171
- package/bun-sql/postgres/driver.cjs.map +1 -1
- package/bun-sql/postgres/driver.d.cts +1 -5
- package/bun-sql/postgres/driver.d.ts +1 -5
- package/bun-sql/postgres/driver.js +4 -170
- package/bun-sql/postgres/driver.js.map +1 -1
- package/bun-sql/postgres/index.cjs +2 -1
- package/bun-sql/postgres/index.d.cts +2 -1
- package/bun-sql/postgres/index.d.ts +2 -1
- package/bun-sql/postgres/index.js +2 -1
- package/bun-sql/sqlite/driver.cjs +2 -1
- package/bun-sql/sqlite/driver.cjs.map +1 -1
- package/bun-sql/sqlite/driver.js +2 -1
- package/bun-sql/sqlite/driver.js.map +1 -1
- package/bun-sql/sqlite/session.cjs +8 -8
- package/bun-sql/sqlite/session.cjs.map +1 -1
- package/bun-sql/sqlite/session.d.cts +3 -3
- package/bun-sql/sqlite/session.d.ts +3 -3
- package/bun-sql/sqlite/session.js +8 -8
- package/bun-sql/sqlite/session.js.map +1 -1
- package/bun-sqlite/driver.cjs +2 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.js +2 -1
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/session.cjs +8 -8
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.d.cts +3 -3
- package/bun-sqlite/session.d.ts +3 -3
- package/bun-sqlite/session.js +8 -8
- package/bun-sqlite/session.js.map +1 -1
- package/cockroach/driver.cjs +3 -2
- package/cockroach/driver.cjs.map +1 -1
- package/cockroach/driver.d.cts +1 -1
- package/cockroach/driver.d.ts +1 -1
- package/cockroach/driver.js +3 -2
- package/cockroach/driver.js.map +1 -1
- package/cockroach/session.cjs +4 -4
- package/cockroach/session.cjs.map +1 -1
- package/cockroach/session.d.cts +3 -3
- package/cockroach/session.d.ts +3 -3
- package/cockroach/session.js +4 -4
- package/cockroach/session.js.map +1 -1
- package/durable-sqlite/driver.cjs +2 -1
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.js +2 -1
- package/durable-sqlite/driver.js.map +1 -1
- package/durable-sqlite/session.cjs +8 -8
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.d.cts +3 -3
- package/durable-sqlite/session.d.ts +3 -3
- package/durable-sqlite/session.js +8 -8
- package/durable-sqlite/session.js.map +1 -1
- package/effect-postgres/codecs.cjs +175 -0
- package/effect-postgres/codecs.cjs.map +1 -0
- package/effect-postgres/codecs.d.cts +9 -0
- package/effect-postgres/codecs.d.ts +9 -0
- package/effect-postgres/codecs.js +173 -0
- package/effect-postgres/codecs.js.map +1 -0
- package/effect-postgres/driver.cjs +5 -171
- package/effect-postgres/driver.cjs.map +1 -1
- package/effect-postgres/driver.d.cts +3 -7
- package/effect-postgres/driver.d.ts +3 -7
- package/effect-postgres/driver.js +5 -170
- package/effect-postgres/driver.js.map +1 -1
- package/effect-postgres/index.cjs +2 -1
- package/effect-postgres/index.d.cts +2 -1
- package/effect-postgres/index.d.ts +2 -1
- package/effect-postgres/index.js +2 -1
- package/effect-postgres/migrator.d.cts +1 -1
- package/effect-postgres/migrator.d.ts +1 -1
- package/effect-postgres/session.cjs.map +1 -1
- package/effect-postgres/session.d.cts +1 -1
- package/effect-postgres/session.d.ts +1 -1
- package/effect-postgres/session.js.map +1 -1
- package/expo-sqlite/driver.cjs +2 -1
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.js +2 -1
- package/expo-sqlite/driver.js.map +1 -1
- package/expo-sqlite/session.cjs +8 -8
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.d.cts +3 -3
- package/expo-sqlite/session.d.ts +3 -3
- package/expo-sqlite/session.js +8 -8
- package/expo-sqlite/session.js.map +1 -1
- package/index.cjs +1 -0
- package/index.js +2 -2
- package/libsql/driver-core.cjs +2 -1
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +2 -1
- package/libsql/driver-core.js.map +1 -1
- package/libsql/session.cjs +8 -8
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +3 -3
- package/libsql/session.d.ts +3 -3
- package/libsql/session.js +8 -8
- package/libsql/session.js.map +1 -1
- package/mysql-proxy/driver.cjs +2 -1
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.js +2 -1
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql-proxy/session.cjs +6 -6
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +3 -3
- package/mysql-proxy/session.d.ts +3 -3
- package/mysql-proxy/session.js +6 -6
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +2 -1
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +1 -1
- package/mysql2/driver.d.ts +1 -1
- package/mysql2/driver.js +2 -1
- package/mysql2/driver.js.map +1 -1
- package/mysql2/session.cjs +7 -7
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +3 -3
- package/mysql2/session.d.ts +3 -3
- package/mysql2/session.js +7 -7
- package/mysql2/session.js.map +1 -1
- package/neon-http/codecs.cjs +66 -0
- package/neon-http/codecs.cjs.map +1 -0
- package/neon-http/codecs.d.cts +9 -0
- package/neon-http/codecs.d.ts +9 -0
- package/neon-http/codecs.js +64 -0
- package/neon-http/codecs.js.map +1 -0
- package/neon-http/driver.cjs +4 -61
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +1 -5
- package/neon-http/driver.d.ts +1 -5
- package/neon-http/driver.js +4 -60
- package/neon-http/driver.js.map +1 -1
- package/neon-http/index.cjs +2 -1
- package/neon-http/index.d.cts +2 -1
- package/neon-http/index.d.ts +2 -1
- package/neon-http/index.js +2 -1
- package/neon-serverless/codecs.cjs +65 -0
- package/neon-serverless/codecs.cjs.map +1 -0
- package/neon-serverless/codecs.d.cts +9 -0
- package/neon-serverless/codecs.d.ts +9 -0
- package/neon-serverless/codecs.js +63 -0
- package/neon-serverless/codecs.js.map +1 -0
- package/neon-serverless/driver.cjs +4 -60
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +2 -6
- package/neon-serverless/driver.d.ts +2 -6
- package/neon-serverless/driver.js +4 -59
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/index.cjs +2 -1
- package/neon-serverless/index.d.cts +2 -1
- package/neon-serverless/index.d.ts +2 -1
- package/neon-serverless/index.js +2 -1
- package/netlify-db/codecs.cjs +122 -0
- package/netlify-db/codecs.cjs.map +1 -0
- package/netlify-db/codecs.d.cts +10 -0
- package/netlify-db/codecs.d.ts +10 -0
- package/netlify-db/codecs.js +119 -0
- package/netlify-db/codecs.js.map +1 -0
- package/netlify-db/driver.cjs +4 -118
- package/netlify-db/driver.cjs.map +1 -1
- package/netlify-db/driver.d.cts +1 -6
- package/netlify-db/driver.d.ts +1 -6
- package/netlify-db/driver.js +4 -116
- package/netlify-db/driver.js.map +1 -1
- package/netlify-db/index.cjs +3 -2
- package/netlify-db/index.d.cts +2 -1
- package/netlify-db/index.d.ts +2 -1
- package/netlify-db/index.js +2 -1
- package/netlify-db/session.d.ts +1 -1
- package/node-mssql/driver.cjs +3 -2
- package/node-mssql/driver.cjs.map +1 -1
- package/node-mssql/driver.d.cts +1 -1
- package/node-mssql/driver.d.ts +1 -1
- package/node-mssql/driver.js +3 -2
- package/node-mssql/driver.js.map +1 -1
- package/node-mssql/session.cjs +5 -5
- package/node-mssql/session.cjs.map +1 -1
- package/node-mssql/session.d.cts +3 -3
- package/node-mssql/session.d.ts +3 -3
- package/node-mssql/session.js +5 -5
- package/node-mssql/session.js.map +1 -1
- package/node-postgres/codecs.cjs +65 -0
- package/node-postgres/codecs.cjs.map +1 -0
- package/node-postgres/codecs.d.cts +9 -0
- package/node-postgres/codecs.d.ts +9 -0
- package/node-postgres/codecs.js +63 -0
- package/node-postgres/codecs.js.map +1 -0
- package/node-postgres/driver.cjs +4 -60
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +1 -5
- package/node-postgres/driver.d.ts +1 -5
- package/node-postgres/driver.js +4 -59
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/index.cjs +2 -1
- package/node-postgres/index.d.cts +2 -1
- package/node-postgres/index.d.ts +2 -1
- package/node-postgres/index.js +2 -1
- package/node-sqlite/driver.cjs +5 -1
- package/node-sqlite/driver.cjs.map +1 -1
- package/node-sqlite/driver.js +5 -1
- package/node-sqlite/driver.js.map +1 -1
- package/node-sqlite/session.cjs +14 -8
- package/node-sqlite/session.cjs.map +1 -1
- package/node-sqlite/session.d.cts +8 -3
- package/node-sqlite/session.d.ts +8 -3
- package/node-sqlite/session.js +15 -9
- package/node-sqlite/session.js.map +1 -1
- package/op-sqlite/driver.cjs +2 -1
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.js +2 -1
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/session.cjs +8 -8
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +3 -3
- package/op-sqlite/session.d.ts +3 -3
- package/op-sqlite/session.js +8 -8
- package/op-sqlite/session.js.map +1 -1
- package/package.json +133 -1
- package/pg-core/effect/session.d.cts +1 -1
- package/pg-core/effect/session.d.ts +1 -1
- package/pg-proxy/driver.cjs +4 -4
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.d.ts +1 -1
- package/pg-proxy/driver.js +4 -4
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +0 -1
- package/pg-proxy/session.d.ts +0 -1
- package/pg-proxy/session.js.map +1 -1
- package/pglite/codecs.cjs +92 -0
- package/pglite/codecs.cjs.map +1 -0
- package/pglite/codecs.d.cts +9 -0
- package/pglite/codecs.d.ts +9 -0
- package/pglite/codecs.js +90 -0
- package/pglite/codecs.js.map +1 -0
- package/pglite/driver.cjs +3 -86
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +1 -5
- package/pglite/driver.d.ts +1 -5
- package/pglite/driver.js +4 -86
- package/pglite/driver.js.map +1 -1
- package/pglite/index.cjs +2 -1
- package/pglite/index.d.cts +2 -1
- package/pglite/index.d.ts +2 -1
- package/pglite/index.js +2 -1
- package/planetscale-serverless/driver.cjs +2 -1
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +1 -1
- package/planetscale-serverless/driver.d.ts +1 -1
- package/planetscale-serverless/driver.js +2 -1
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/session.cjs +6 -6
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +3 -3
- package/planetscale-serverless/session.d.ts +3 -3
- package/planetscale-serverless/session.js +6 -6
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/codecs.cjs +147 -0
- package/postgres-js/codecs.cjs.map +1 -0
- package/postgres-js/codecs.d.cts +9 -0
- package/postgres-js/codecs.d.ts +9 -0
- package/postgres-js/codecs.js +145 -0
- package/postgres-js/codecs.js.map +1 -0
- package/postgres-js/driver.cjs +4 -142
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +1 -5
- package/postgres-js/driver.d.ts +1 -5
- package/postgres-js/driver.js +4 -141
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/index.cjs +2 -1
- package/postgres-js/index.d.cts +2 -1
- package/postgres-js/index.d.ts +2 -1
- package/postgres-js/index.js +2 -1
- package/singlestore/driver.cjs +3 -2
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +1 -1
- package/singlestore/driver.d.ts +1 -1
- package/singlestore/driver.js +3 -2
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs +7 -7
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +3 -3
- package/singlestore/session.d.ts +3 -3
- package/singlestore/session.js +7 -7
- package/singlestore/session.js.map +1 -1
- package/singlestore-proxy/driver.cjs +2 -1
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.js +2 -1
- package/singlestore-proxy/driver.js.map +1 -1
- package/singlestore-proxy/session.cjs +6 -6
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.d.cts +3 -3
- package/singlestore-proxy/session.d.ts +3 -3
- package/singlestore-proxy/session.js +6 -6
- package/singlestore-proxy/session.js.map +1 -1
- package/sql-js/driver.cjs +2 -1
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.js +2 -1
- package/sql-js/driver.js.map +1 -1
- package/sql-js/session.cjs +8 -8
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.d.cts +3 -3
- package/sql-js/session.d.ts +3 -3
- package/sql-js/session.js +8 -8
- package/sql-js/session.js.map +1 -1
- package/sqlite-cloud/driver.cjs +2 -1
- package/sqlite-cloud/driver.cjs.map +1 -1
- package/sqlite-cloud/driver.js +2 -1
- package/sqlite-cloud/driver.js.map +1 -1
- package/sqlite-cloud/session.cjs +8 -8
- package/sqlite-cloud/session.cjs.map +1 -1
- package/sqlite-cloud/session.d.cts +3 -3
- package/sqlite-cloud/session.d.ts +3 -3
- package/sqlite-cloud/session.js +8 -8
- package/sqlite-cloud/session.js.map +1 -1
- package/sqlite-proxy/driver.cjs +2 -1
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.js +2 -1
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/session.cjs +8 -8
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +3 -3
- package/sqlite-proxy/session.d.ts +3 -3
- package/sqlite-proxy/session.js +8 -8
- package/sqlite-proxy/session.js.map +1 -1
- package/tidb-serverless/driver.cjs +2 -1
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +1 -1
- package/tidb-serverless/driver.d.ts +1 -1
- package/tidb-serverless/driver.js +2 -1
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/session.cjs +6 -6
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +3 -3
- package/tidb-serverless/session.d.ts +3 -3
- package/tidb-serverless/session.js +6 -6
- package/tidb-serverless/session.js.map +1 -1
- package/tursodatabase/driver-core.cjs +2 -1
- package/tursodatabase/driver-core.cjs.map +1 -1
- package/tursodatabase/driver-core.js +2 -1
- package/tursodatabase/driver-core.js.map +1 -1
- package/tursodatabase/session.cjs +8 -8
- package/tursodatabase/session.cjs.map +1 -1
- package/tursodatabase/session.d.cts +3 -3
- package/tursodatabase/session.d.ts +3 -3
- package/tursodatabase/session.js +8 -8
- package/tursodatabase/session.js.map +1 -1
- package/utils.cjs +17 -0
- package/utils.cjs.map +1 -1
- package/utils.js +17 -1
- package/utils.js.map +1 -1
- package/vercel-postgres/codecs.cjs +65 -0
- package/vercel-postgres/codecs.cjs.map +1 -0
- package/vercel-postgres/codecs.d.cts +9 -0
- package/vercel-postgres/codecs.d.ts +9 -0
- package/vercel-postgres/codecs.js +63 -0
- package/vercel-postgres/codecs.js.map +1 -0
- package/vercel-postgres/driver.cjs +3 -60
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +1 -5
- package/vercel-postgres/driver.d.ts +1 -5
- package/vercel-postgres/driver.js +4 -60
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/index.cjs +2 -1
- package/vercel-postgres/index.d.cts +2 -1
- package/vercel-postgres/index.d.ts +2 -1
- package/vercel-postgres/index.js +2 -1
- package/version.cjs +1 -1
- package/version.cjs.map +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/xata-http/codecs.cjs +168 -0
- package/xata-http/codecs.cjs.map +1 -0
- package/xata-http/codecs.d.cts +9 -0
- package/xata-http/codecs.d.ts +9 -0
- package/xata-http/codecs.js +166 -0
- package/xata-http/codecs.js.map +1 -0
- package/xata-http/driver.cjs +4 -163
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +1 -5
- package/xata-http/driver.d.ts +1 -5
- package/xata-http/driver.js +4 -162
- package/xata-http/driver.js.map +1 -1
- package/xata-http/index.cjs +2 -1
- package/xata-http/index.d.cts +2 -1
- package/xata-http/index.d.ts +2 -1
- package/xata-http/index.js +2 -1
package/bun-sqlite/session.d.cts
CHANGED
|
@@ -14,7 +14,7 @@ import { Database, Statement } from "bun:sqlite";
|
|
|
14
14
|
//#region src/bun-sqlite/session.d.ts
|
|
15
15
|
interface SQLiteBunSessionOptions {
|
|
16
16
|
logger?: Logger;
|
|
17
|
-
|
|
17
|
+
useJitMappers?: boolean;
|
|
18
18
|
}
|
|
19
19
|
type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
|
|
20
20
|
type Statement$1 = Statement<any>;
|
|
@@ -46,13 +46,13 @@ declare class PreparedQuery<T extends PreparedQueryConfig$1 = PreparedQueryConfi
|
|
|
46
46
|
private stmt;
|
|
47
47
|
private logger;
|
|
48
48
|
private fields;
|
|
49
|
-
private
|
|
49
|
+
private useJitMappers;
|
|
50
50
|
private customResultMapper?;
|
|
51
51
|
private isRqbV2Query?;
|
|
52
52
|
private rqbConfig?;
|
|
53
53
|
static readonly [entityKind]: string;
|
|
54
54
|
private jitMapper?;
|
|
55
|
-
constructor(stmt: Statement$1, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod,
|
|
55
|
+
constructor(stmt: Statement$1, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
|
|
56
56
|
run(placeholderValues?: Record<string, unknown>): bun_sqlite0.Changes;
|
|
57
57
|
all(placeholderValues?: Record<string, unknown>): T['all'];
|
|
58
58
|
get(placeholderValues?: Record<string, unknown>): T['get'];
|
package/bun-sqlite/session.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { SelectedFieldsOrdered } from "../sqlite-core/query-builders/select.type
|
|
|
14
14
|
//#region src/bun-sqlite/session.d.ts
|
|
15
15
|
interface SQLiteBunSessionOptions {
|
|
16
16
|
logger?: Logger;
|
|
17
|
-
|
|
17
|
+
useJitMappers?: boolean;
|
|
18
18
|
}
|
|
19
19
|
type PreparedQueryConfig$1 = Omit<PreparedQueryConfig, 'statement' | 'run'>;
|
|
20
20
|
type Statement$1 = Statement<any>;
|
|
@@ -46,13 +46,13 @@ declare class PreparedQuery<T extends PreparedQueryConfig$1 = PreparedQueryConfi
|
|
|
46
46
|
private stmt;
|
|
47
47
|
private logger;
|
|
48
48
|
private fields;
|
|
49
|
-
private
|
|
49
|
+
private useJitMappers;
|
|
50
50
|
private customResultMapper?;
|
|
51
51
|
private isRqbV2Query?;
|
|
52
52
|
private rqbConfig?;
|
|
53
53
|
static readonly [entityKind]: string;
|
|
54
54
|
private jitMapper?;
|
|
55
|
-
constructor(stmt: Statement$1, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod,
|
|
55
|
+
constructor(stmt: Statement$1, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, useJitMappers: boolean | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined, rqbConfig?: RelationalQueryMapperConfig | undefined);
|
|
56
56
|
run(placeholderValues?: Record<string, unknown>): bun_sqlite0.Changes;
|
|
57
57
|
all(placeholderValues?: Record<string, unknown>): T['all'];
|
|
58
58
|
get(placeholderValues?: Record<string, unknown>): T['get'];
|
package/bun-sqlite/session.js
CHANGED
|
@@ -22,10 +22,10 @@ var SQLiteBunSession = class extends SQLiteSession {
|
|
|
22
22
|
this.client.exec(query);
|
|
23
23
|
}
|
|
24
24
|
prepareQuery(query, fields, executeMethod, customResultMapper) {
|
|
25
|
-
return new PreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, this.options.
|
|
25
|
+
return new PreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, this.options.useJitMappers, customResultMapper);
|
|
26
26
|
}
|
|
27
27
|
prepareRelationalQuery(query, fields, executeMethod, customResultMapper, config) {
|
|
28
|
-
return new PreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, this.options.
|
|
28
|
+
return new PreparedQuery(this.client.prepare(query.sql), query, this.logger, fields, executeMethod, this.options.useJitMappers, customResultMapper, true, config);
|
|
29
29
|
}
|
|
30
30
|
transaction(transaction, config = {}) {
|
|
31
31
|
const tx = new SQLiteBunTransaction("sync", this.dialect, this, this.relations, this.schema);
|
|
@@ -55,12 +55,12 @@ var SQLiteBunTransaction = class SQLiteBunTransaction extends SQLiteTransaction
|
|
|
55
55
|
var PreparedQuery = class extends SQLitePreparedQuery {
|
|
56
56
|
static [entityKind] = "SQLiteBunPreparedQuery";
|
|
57
57
|
jitMapper;
|
|
58
|
-
constructor(stmt, query, logger, fields, executeMethod,
|
|
58
|
+
constructor(stmt, query, logger, fields, executeMethod, useJitMappers, customResultMapper, isRqbV2Query, rqbConfig) {
|
|
59
59
|
super("sync", executeMethod, query);
|
|
60
60
|
this.stmt = stmt;
|
|
61
61
|
this.logger = logger;
|
|
62
62
|
this.fields = fields;
|
|
63
|
-
this.
|
|
63
|
+
this.useJitMappers = useJitMappers;
|
|
64
64
|
this.customResultMapper = customResultMapper;
|
|
65
65
|
this.isRqbV2Query = isRqbV2Query;
|
|
66
66
|
this.rqbConfig = rqbConfig;
|
|
@@ -80,7 +80,7 @@ var PreparedQuery = class extends SQLitePreparedQuery {
|
|
|
80
80
|
}
|
|
81
81
|
const rows = this.values(placeholderValues);
|
|
82
82
|
if (customResultMapper) return customResultMapper(rows);
|
|
83
|
-
return this.
|
|
83
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))(rows) : rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
|
84
84
|
}
|
|
85
85
|
get(placeholderValues) {
|
|
86
86
|
if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
|
|
@@ -95,14 +95,14 @@ var PreparedQuery = class extends SQLitePreparedQuery {
|
|
|
95
95
|
const row = this.stmt.values(...params)[0];
|
|
96
96
|
if (!row) return;
|
|
97
97
|
if (customResultMapper) return customResultMapper([row]);
|
|
98
|
-
return this.
|
|
98
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitQueryMapper(fields, joinsNotNullableMap))([row])[0] : mapResultRow(fields, row, joinsNotNullableMap);
|
|
99
99
|
}
|
|
100
100
|
allRqbV2(placeholderValues) {
|
|
101
101
|
const { query, logger, stmt, customResultMapper } = this;
|
|
102
102
|
const params = fillPlaceholders(query.params, placeholderValues ?? {});
|
|
103
103
|
logger.logQuery(query.sql, params);
|
|
104
104
|
const rows = stmt.all(...params);
|
|
105
|
-
return this.
|
|
105
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))(rows) : customResultMapper(rows);
|
|
106
106
|
}
|
|
107
107
|
getRqbV2(placeholderValues) {
|
|
108
108
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
@@ -110,7 +110,7 @@ var PreparedQuery = class extends SQLitePreparedQuery {
|
|
|
110
110
|
const { stmt, customResultMapper } = this;
|
|
111
111
|
const row = stmt.get(...params);
|
|
112
112
|
if (!row) return void 0;
|
|
113
|
-
return this.
|
|
113
|
+
return this.useJitMappers ? (this.jitMapper = this.jitMapper ?? makeJitRqbMapper(this.rqbConfig))([row]) : customResultMapper([row]);
|
|
114
114
|
}
|
|
115
115
|
values(placeholderValues) {
|
|
116
116
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","names":["PreparedQueryBase"],"sources":["../../src/bun-sqlite/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { Database, Statement as BunStatement } from 'bun:sqlite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\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 type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface SQLiteBunSessionOptions {\n\tlogger?: Logger;\n\tuseJitMapper?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\ntype Statement = BunStatement<any>;\n\nexport class SQLiteBunSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', void, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBunSession';\n\n\tprivate logger: Logger;\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: SQLiteBunSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\texec(query: string): void {\n\t\tthis.client.exec(query);\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): 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\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\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: SQLiteBunTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new SQLiteBunTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tlet result: T | undefined;\n\t\tconst nativeTx = this.client.transaction(() => {\n\t\t\tresult = transaction(tx);\n\t\t});\n\t\tnativeTx[config.behavior ?? 'deferred']();\n\t\treturn result!;\n\t}\n}\n\nexport class SQLiteBunTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', void, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBunTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: SQLiteBunTransaction<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 SQLiteBunTransaction(\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: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteBunPreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\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);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>) {\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, query, logger, joinsNotNullableMap, 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\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<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(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, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst row = this.stmt.get(...params);\n\t\t\tif (!row) return undefined;\n\n\t\t\treturn row;\n\t\t}\n\n\t\tconst row = this.stmt.values(...params)[0];\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<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(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\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\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?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows);\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) return undefined;\n\n\t\treturn this.useJitMapper\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<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.values(...params);\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","names":["PreparedQueryBase"],"sources":["../../src/bun-sqlite/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { Database, Statement as BunStatement } from 'bun:sqlite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport {\n\ttype AnyRelations,\n\tmakeJitRqbMapper,\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 type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { type DrizzleTypeError, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nexport interface SQLiteBunSessionOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\ntype Statement = BunStatement<any>;\n\nexport class SQLiteBunSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', void, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBunSession';\n\n\tprivate logger: Logger;\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: SQLiteBunSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\texec(query: string): void {\n\t\tthis.client.exec(query);\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): 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\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\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\tfields,\n\t\t\texecuteMethod,\n\t\t\tthis.options.useJitMappers,\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: SQLiteBunTransaction<TFullSchema, TRelations, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new SQLiteBunTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tlet result: T | undefined;\n\t\tconst nativeTx = this.client.transaction(() => {\n\t\t\tresult = transaction(tx);\n\t\t});\n\t\tnativeTx[config.behavior ?? 'deferred']();\n\t\treturn result!;\n\t}\n}\n\nexport class SQLiteBunTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', void, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBunTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: SQLiteBunTransaction<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 SQLiteBunTransaction(\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: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteBunPreparedQuery';\n\tprivate jitMapper?: RowsMapper<any> | RelationalRowsMapper<any>;\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate useJitMappers: 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);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>) {\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, query, logger, joinsNotNullableMap, 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\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.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['all']>\n\t\t\t\t?? makeJitQueryMapper<T['all']>(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, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst row = this.stmt.get(...params);\n\t\t\tif (!row) return undefined;\n\n\t\t\treturn row;\n\t\t}\n\n\t\tconst row = this.stmt.values(...params)[0];\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.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RowsMapper<T['get'][]>\n\t\t\t\t?? makeJitQueryMapper<T['get'][]>(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\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = stmt.all(...params) as Record<string, unknown>[];\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['all']>\n\t\t\t\t?? makeJitRqbMapper<T['all']>(this.rqbConfig!))(rows)\n\t\t\t: (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(rows);\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) return undefined;\n\n\t\treturn this.useJitMappers\n\t\t\t? (this.jitMapper = this.jitMapper as RelationalRowsMapper<T['get'][]>\n\t\t\t\t?? makeJitRqbMapper<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.values(...params);\n\t}\n}\n"],"mappings":"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"}
|
package/cockroach/driver.cjs
CHANGED
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
3
|
const require_cockroach_session = require('./session.cjs');
|
|
4
4
|
let __entity_ts = require("../entity.cjs");
|
|
5
|
+
let __utils_ts = require("../utils.cjs");
|
|
5
6
|
let __logger_ts = require("../logger.cjs");
|
|
6
7
|
let ___relations_ts = require("../_relations.cjs");
|
|
7
8
|
___relations_ts = require_runtime.__toESM(___relations_ts);
|
|
@@ -21,7 +22,7 @@ var NodeCockroachDriver = class {
|
|
|
21
22
|
createSession(schema) {
|
|
22
23
|
return new require_cockroach_session.NodeCockroachSession(this.client, this.dialect, schema, {
|
|
23
24
|
logger: this.options.logger,
|
|
24
|
-
|
|
25
|
+
useJitMappers: this.options.useJitMappers
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
};
|
|
@@ -44,7 +45,7 @@ function construct(client, config = {}) {
|
|
|
44
45
|
}
|
|
45
46
|
const db = new NodeCockroachDatabase(dialect, new NodeCockroachDriver(client, dialect, {
|
|
46
47
|
logger,
|
|
47
|
-
|
|
48
|
+
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.useJitMappers)
|
|
48
49
|
}).createSession(schema), schema);
|
|
49
50
|
db.$client = client;
|
|
50
51
|
return db;
|
package/cockroach/driver.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.cjs","names":["entityKind","NodeCockroachSession","CockroachDatabase","CockroachDialect","DefaultLogger","V1"],"sources":["../../src/cockroach/driver.ts"],"sourcesContent":["import pg, { type Pool, type PoolConfig } from 'pg';\nimport * as V1 from '~/_relations.ts';\nimport { CockroachDatabase } from '~/cockroach-core/db.ts';\nimport { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type
|
|
1
|
+
{"version":3,"file":"driver.cjs","names":["entityKind","NodeCockroachSession","CockroachDatabase","CockroachDialect","DefaultLogger","V1"],"sources":["../../src/cockroach/driver.ts"],"sourcesContent":["import pg, { type Pool, type PoolConfig } from 'pg';\nimport * as V1 from '~/_relations.ts';\nimport { CockroachDatabase } from '~/cockroach-core/db.ts';\nimport { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';\nimport type { NodeCockroachClient, NodeCockroachQueryResultHKT } from './session.ts';\nimport { NodeCockroachSession } from './session.ts';\n\nexport interface CockroachDriverOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\nexport class NodeCockroachDriver {\n\tstatic readonly [entityKind]: string = 'NodeCockroachDriver';\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tprivate dialect: CockroachDialect,\n\t\tprivate options: CockroachDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined,\n\t): NodeCockroachSession<Record<string, unknown>, V1.TablesRelationalConfig> {\n\t\treturn new NodeCockroachSession(this.client, this.dialect, schema, {\n\t\t\tlogger: this.options.logger,\n\t\t\tuseJitMappers: this.options.useJitMappers,\n\t\t});\n\t}\n}\n\nexport class NodeCockroachDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends CockroachDatabase<NodeCockroachQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NodeCockroachClient = NodeCockroachClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NodeCockroachDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new CockroachDialect();\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 driver = new NodeCockroachDriver(client, dialect, {\n\t\tlogger,\n\t\tuseJitMappers: jitCompatCheck(config.useJitMappers),\n\t});\n\tconst session = driver.createSession(schema);\n\tconst db = new NodeCockroachDatabase(dialect, session, schema as any) as NodeCockroachDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NodeCockroachClient = Pool,\n>(\n\t...params:\n\t\t| [\n\t\t\tstring,\n\t\t]\n\t\t| [\n\t\t\tstring,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection: string | PoolConfig;\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): NodeCockroachDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new pg.Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tconst { connection, client, ...drizzleConfig } = params[0] as (\n\t\t& ({ connection?: PoolConfig | string; client?: TClient })\n\t\t& DrizzleConfig<TSchema>\n\t);\n\n\tif (client) return construct(client, drizzleConfig);\n\n\tconst instance = typeof connection === 'string'\n\t\t? new pg.Pool({\n\t\t\tconnectionString: connection,\n\t\t})\n\t\t: new pg.Pool(connection!);\n\n\treturn construct(instance, drizzleConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): NodeCockroachDatabase<TSchema> & {\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":";;;;;;;;;;;;;;AAgBA,IAAa,sBAAb,MAAiC;CAChC,QAAiBA,0BAAsB;CAEvC,YACC,AAAQ,QACR,AAAQ,SACR,AAAQ,UAAkC,EAAE,EAC3C;EAHO;EACA;EACA;;CAIT,cACC,QAC2E;AAC3E,SAAO,IAAIC,+CAAqB,KAAK,QAAQ,KAAK,SAAS,QAAQ;GAClE,QAAQ,KAAK,QAAQ;GACrB,eAAe,KAAK,QAAQ;GAC5B,CAAC;;;AAIJ,IAAa,wBAAb,cAEUC,yCAAwD;CACjE,QAA0BF,0BAAsB;;AAGjD,SAAS,UAIR,QACA,SAAiC,EAAE,EAGlC;CACD,MAAM,UAAU,IAAIG,8CAAkB;CACtC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAeC,gBAAG,8BACvB,OAAO,QACPA,gBAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAQF,MAAM,KAAK,IAAI,sBAAsB,SALtB,IAAI,oBAAoB,QAAQ,SAAS;EACvD;EACA,8CAA8B,OAAO,cAAc;EACnD,CAAC,CACqB,cAAc,OAAO,EACW,OAAc;AACrE,CAAO,GAAI,UAAU;AAErB,QAAO;;AAGR,SAAgB,QAIf,GAAG,QAoBF;AACD,KAAI,OAAO,OAAO,OAAO,SAKxB,QAAO,UAJU,IAAI,WAAG,KAAK,EAC5B,kBAAkB,OAAO,IACzB,CAAC,EAEyB,OAAO,GAAyC;CAG5E,MAAM,EAAE,YAAY,QAAQ,GAAG,kBAAkB,OAAO;AAKxD,KAAI,OAAQ,QAAO,UAAU,QAAQ,cAAc;AAQnD,QAAO,UANU,OAAO,eAAe,WACpC,IAAI,WAAG,KAAK,EACb,kBAAkB,YAClB,CAAC,GACA,IAAI,WAAG,KAAK,WAAY,EAEA,cAAc;;;CAIlC,SAAS,KACf,QAGC;AACD,SAAO,UAAU,EAAE,EAAS,OAAO"}
|
package/cockroach/driver.d.cts
CHANGED
|
@@ -10,7 +10,7 @@ import { CockroachDatabase } from "../cockroach-core/db.cjs";
|
|
|
10
10
|
//#region src/cockroach/driver.d.ts
|
|
11
11
|
interface CockroachDriverOptions {
|
|
12
12
|
logger?: Logger;
|
|
13
|
-
|
|
13
|
+
useJitMappers?: boolean;
|
|
14
14
|
}
|
|
15
15
|
declare class NodeCockroachDriver {
|
|
16
16
|
private client;
|
package/cockroach/driver.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { CockroachDialect } from "../cockroach-core/dialect.js";
|
|
|
10
10
|
//#region src/cockroach/driver.d.ts
|
|
11
11
|
interface CockroachDriverOptions {
|
|
12
12
|
logger?: Logger;
|
|
13
|
-
|
|
13
|
+
useJitMappers?: boolean;
|
|
14
14
|
}
|
|
15
15
|
declare class NodeCockroachDriver {
|
|
16
16
|
private client;
|
package/cockroach/driver.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NodeCockroachSession } from "./session.js";
|
|
2
2
|
import { entityKind } from "../entity.js";
|
|
3
|
+
import { jitCompatCheck } from "../utils.js";
|
|
3
4
|
import { DefaultLogger } from "../logger.js";
|
|
4
5
|
import * as V1 from "../_relations.js";
|
|
5
6
|
import pg from "pg";
|
|
@@ -17,7 +18,7 @@ var NodeCockroachDriver = class {
|
|
|
17
18
|
createSession(schema) {
|
|
18
19
|
return new NodeCockroachSession(this.client, this.dialect, schema, {
|
|
19
20
|
logger: this.options.logger,
|
|
20
|
-
|
|
21
|
+
useJitMappers: this.options.useJitMappers
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
};
|
|
@@ -40,7 +41,7 @@ function construct(client, config = {}) {
|
|
|
40
41
|
}
|
|
41
42
|
const db = new NodeCockroachDatabase(dialect, new NodeCockroachDriver(client, dialect, {
|
|
42
43
|
logger,
|
|
43
|
-
|
|
44
|
+
useJitMappers: jitCompatCheck(config.useJitMappers)
|
|
44
45
|
}).createSession(schema), schema);
|
|
45
46
|
db.$client = client;
|
|
46
47
|
return db;
|
package/cockroach/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","names":[],"sources":["../../src/cockroach/driver.ts"],"sourcesContent":["import pg, { type Pool, type PoolConfig } from 'pg';\nimport * as V1 from '~/_relations.ts';\nimport { CockroachDatabase } from '~/cockroach-core/db.ts';\nimport { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type
|
|
1
|
+
{"version":3,"file":"driver.js","names":[],"sources":["../../src/cockroach/driver.ts"],"sourcesContent":["import pg, { type Pool, type PoolConfig } from 'pg';\nimport * as V1 from '~/_relations.ts';\nimport { CockroachDatabase } from '~/cockroach-core/db.ts';\nimport { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { type DrizzleConfig, jitCompatCheck } from '~/utils.ts';\nimport type { NodeCockroachClient, NodeCockroachQueryResultHKT } from './session.ts';\nimport { NodeCockroachSession } from './session.ts';\n\nexport interface CockroachDriverOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\nexport class NodeCockroachDriver {\n\tstatic readonly [entityKind]: string = 'NodeCockroachDriver';\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tprivate dialect: CockroachDialect,\n\t\tprivate options: CockroachDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined,\n\t): NodeCockroachSession<Record<string, unknown>, V1.TablesRelationalConfig> {\n\t\treturn new NodeCockroachSession(this.client, this.dialect, schema, {\n\t\t\tlogger: this.options.logger,\n\t\t\tuseJitMappers: this.options.useJitMappers,\n\t\t});\n\t}\n}\n\nexport class NodeCockroachDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends CockroachDatabase<NodeCockroachQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NodeCockroachClient = NodeCockroachClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NodeCockroachDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new CockroachDialect();\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 driver = new NodeCockroachDriver(client, dialect, {\n\t\tlogger,\n\t\tuseJitMappers: jitCompatCheck(config.useJitMappers),\n\t});\n\tconst session = driver.createSession(schema);\n\tconst db = new NodeCockroachDatabase(dialect, session, schema as any) as NodeCockroachDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NodeCockroachClient = Pool,\n>(\n\t...params:\n\t\t| [\n\t\t\tstring,\n\t\t]\n\t\t| [\n\t\t\tstring,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection: string | PoolConfig;\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): NodeCockroachDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new pg.Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tconst { connection, client, ...drizzleConfig } = params[0] as (\n\t\t& ({ connection?: PoolConfig | string; client?: TClient })\n\t\t& DrizzleConfig<TSchema>\n\t);\n\n\tif (client) return construct(client, drizzleConfig);\n\n\tconst instance = typeof connection === 'string'\n\t\t? new pg.Pool({\n\t\t\tconnectionString: connection,\n\t\t})\n\t\t: new pg.Pool(connection!);\n\n\treturn construct(instance, drizzleConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): NodeCockroachDatabase<TSchema> & {\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":";;;;;;;;;;AAgBA,IAAa,sBAAb,MAAiC;CAChC,QAAiB,cAAsB;CAEvC,YACC,AAAQ,QACR,AAAQ,SACR,AAAQ,UAAkC,EAAE,EAC3C;EAHO;EACA;EACA;;CAIT,cACC,QAC2E;AAC3E,SAAO,IAAI,qBAAqB,KAAK,QAAQ,KAAK,SAAS,QAAQ;GAClE,QAAQ,KAAK,QAAQ;GACrB,eAAe,KAAK,QAAQ;GAC5B,CAAC;;;AAIJ,IAAa,wBAAb,cAEU,kBAAwD;CACjE,QAA0B,cAAsB;;AAGjD,SAAS,UAIR,QACA,SAAiC,EAAE,EAGlC;CACD,MAAM,UAAU,IAAI,kBAAkB;CACtC,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAI,eAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,IAAI;AACJ,KAAI,OAAO,QAAQ;EAClB,MAAM,eAAe,GAAG,8BACvB,OAAO,QACP,GAAG,4BACH;AACD,WAAS;GACR,YAAY,OAAO;GACnB,QAAQ,aAAa;GACrB,eAAe,aAAa;GAC5B;;CAQF,MAAM,KAAK,IAAI,sBAAsB,SALtB,IAAI,oBAAoB,QAAQ,SAAS;EACvD;EACA,eAAe,eAAe,OAAO,cAAc;EACnD,CAAC,CACqB,cAAc,OAAO,EACW,OAAc;AACrE,CAAO,GAAI,UAAU;AAErB,QAAO;;AAGR,SAAgB,QAIf,GAAG,QAoBF;AACD,KAAI,OAAO,OAAO,OAAO,SAKxB,QAAO,UAJU,IAAI,GAAG,KAAK,EAC5B,kBAAkB,OAAO,IACzB,CAAC,EAEyB,OAAO,GAAyC;CAG5E,MAAM,EAAE,YAAY,QAAQ,GAAG,kBAAkB,OAAO;AAKxD,KAAI,OAAQ,QAAO,UAAU,QAAQ,cAAc;AAQnD,QAAO,UANU,OAAO,eAAe,WACpC,IAAI,GAAG,KAAK,EACb,kBAAkB,YAClB,CAAC,GACA,IAAI,GAAG,KAAK,WAAY,EAEA,cAAc;;;CAIlC,SAAS,KACf,QAGC;AACD,SAAO,UAAU,EAAE,EAAS,OAAO"}
|
package/cockroach/session.cjs
CHANGED
|
@@ -17,7 +17,7 @@ var NodeCockroachPreparedQuery = class extends __cockroach_core_session_ts.Cockr
|
|
|
17
17
|
rawQueryConfig;
|
|
18
18
|
queryConfig;
|
|
19
19
|
jitMapper;
|
|
20
|
-
constructor(client, queryString, params, logger, fields, name,
|
|
20
|
+
constructor(client, queryString, params, logger, fields, name, useJitMappers, customResultMapper) {
|
|
21
21
|
super({
|
|
22
22
|
sql: queryString,
|
|
23
23
|
params
|
|
@@ -26,7 +26,7 @@ var NodeCockroachPreparedQuery = class extends __cockroach_core_session_ts.Cockr
|
|
|
26
26
|
this.params = params;
|
|
27
27
|
this.logger = logger;
|
|
28
28
|
this.fields = fields;
|
|
29
|
-
this.
|
|
29
|
+
this.useJitMappers = useJitMappers;
|
|
30
30
|
this.customResultMapper = customResultMapper;
|
|
31
31
|
this.rawQueryConfig = {
|
|
32
32
|
name,
|
|
@@ -85,7 +85,7 @@ var NodeCockroachPreparedQuery = class extends __cockroach_core_session_ts.Cockr
|
|
|
85
85
|
});
|
|
86
86
|
return __tracing_ts.tracer.startActiveSpan("drizzle.mapResponse", () => {
|
|
87
87
|
if (customResultMapper) return customResultMapper(result.rows);
|
|
88
|
-
return this.
|
|
88
|
+
return this.useJitMappers ? (this.jitMapper ??= (0, __utils_ts.makeJitQueryMapper)(fields, joinsNotNullableMap))(result.rows) : result.rows.map((row) => (0, __utils_ts.mapResultRow)(fields, row, joinsNotNullableMap));
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
}
|
|
@@ -115,7 +115,7 @@ var NodeCockroachSession = class NodeCockroachSession extends __cockroach_core_s
|
|
|
115
115
|
this.logger = options.logger ?? new __logger_ts.NoopLogger();
|
|
116
116
|
}
|
|
117
117
|
prepareQuery(query, fields, name, customResultMapper) {
|
|
118
|
-
return new NodeCockroachPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, this.options.
|
|
118
|
+
return new NodeCockroachPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, this.options.useJitMappers, customResultMapper);
|
|
119
119
|
}
|
|
120
120
|
async transaction(transaction, config) {
|
|
121
121
|
const session = this.client instanceof Pool ? new NodeCockroachSession(await this.client.connect(), this.dialect, this.schema, this.options) : this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.cjs","names":["CockroachPreparedQuery","entityKind","tracer","CockroachSession","NoopLogger","CockroachTransaction","sql"],"sources":["../../src/cockroach/session.ts"],"sourcesContent":["import type { Client, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport pg from 'pg';\nimport type * as V1 from '~/_relations.ts';\nimport type { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { CockroachTransaction } from '~/cockroach-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/cockroach-core/query-builders/select.types.ts';\nimport type {\n\tCockroachQueryResultHKT,\n\tCockroachTransactionConfig,\n\tPreparedQueryConfig,\n} from '~/cockroach-core/session.ts';\nimport { CockroachPreparedQuery, CockroachSession } from '~/cockroach-core/session.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nconst { Pool, types } = pg;\n\nexport type NodeCockroachClient = pg.Pool | PoolClient | Client;\n\nexport class NodeCockroachPreparedQuery<T extends PreparedQueryConfig> extends CockroachPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachPreparedQuery';\n\n\tprivate rawQueryConfig: QueryConfig;\n\tprivate queryConfig: QueryArrayConfig;\n\tprivate jitMapper?: RowsMapper<T['execute']>;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\trowMode: 'array',\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\n\t\t\tconst { fields, rawQueryConfig: rawQuery, client, queryConfig: query, joinsNotNullableMap, customResultMapper } =\n\t\t\t\tthis;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async (span) => {\n\t\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t\t'drizzle.query.name': rawQuery.name,\n\t\t\t\t\t\t'drizzle.query.text': rawQuery.text,\n\t\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t\t});\n\t\t\t\t\treturn client.query(rawQuery, params);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result = await tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': query.name,\n\t\t\t\t\t'drizzle.query.text': query.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn client.query(query, params);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\tif (customResultMapper) {\n\t\t\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(result.rows);\n\t\t\t\t}\n\n\t\t\t\treturn this.useJitMapper\n\t\t\t\t\t? (this.jitMapper ??= makeJitQueryMapper(fields!, joinsNotNullableMap))(result.rows)\n\t\t\t\t\t: result.rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': this.rawQueryConfig.name,\n\t\t\t\t\t'drizzle.query.text': this.rawQueryConfig.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport interface NodeCockroachSessionOptions {\n\tlogger?: Logger;\n\tuseJitMapper?: boolean;\n}\n\nexport class NodeCockroachSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tdialect: CockroachDialect,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NodeCockroachSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): CockroachPreparedQuery<T> {\n\t\treturn new NodeCockroachPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: CockroachTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst session = this.client instanceof Pool // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t? new NodeCockroachSession(await this.client.connect(), this.dialect, this.schema, this.options)\n\t\t\t: this;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tawait tx.execute(sql`begin${config ? sql` ${tx.getTransactionConfigSQL(config)}` : undefined}`);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait tx.execute(sql`rollback`);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.client instanceof Pool) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\t(session.client as PoolClient).release();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class NodeCockroachTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachTransaction<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface NodeCockroachQueryResultHKT extends CockroachQueryResultHKT {\n\ttype: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.cjs","names":["CockroachPreparedQuery","entityKind","tracer","CockroachSession","NoopLogger","CockroachTransaction","sql"],"sources":["../../src/cockroach/session.ts"],"sourcesContent":["import type { Client, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport pg from 'pg';\nimport type * as V1 from '~/_relations.ts';\nimport type { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { CockroachTransaction } from '~/cockroach-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/cockroach-core/query-builders/select.types.ts';\nimport type {\n\tCockroachQueryResultHKT,\n\tCockroachTransactionConfig,\n\tPreparedQueryConfig,\n} from '~/cockroach-core/session.ts';\nimport { CockroachPreparedQuery, CockroachSession } from '~/cockroach-core/session.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nconst { Pool, types } = pg;\n\nexport type NodeCockroachClient = pg.Pool | PoolClient | Client;\n\nexport class NodeCockroachPreparedQuery<T extends PreparedQueryConfig> extends CockroachPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachPreparedQuery';\n\n\tprivate rawQueryConfig: QueryConfig;\n\tprivate queryConfig: QueryArrayConfig;\n\tprivate jitMapper?: RowsMapper<T['execute']>;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate useJitMappers: boolean | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\trowMode: 'array',\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\n\t\t\tconst { fields, rawQueryConfig: rawQuery, client, queryConfig: query, joinsNotNullableMap, customResultMapper } =\n\t\t\t\tthis;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async (span) => {\n\t\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t\t'drizzle.query.name': rawQuery.name,\n\t\t\t\t\t\t'drizzle.query.text': rawQuery.text,\n\t\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t\t});\n\t\t\t\t\treturn client.query(rawQuery, params);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result = await tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': query.name,\n\t\t\t\t\t'drizzle.query.text': query.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn client.query(query, params);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\tif (customResultMapper) {\n\t\t\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(result.rows);\n\t\t\t\t}\n\n\t\t\t\treturn this.useJitMappers\n\t\t\t\t\t? (this.jitMapper ??= makeJitQueryMapper(fields!, joinsNotNullableMap))(result.rows)\n\t\t\t\t\t: result.rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': this.rawQueryConfig.name,\n\t\t\t\t\t'drizzle.query.text': this.rawQueryConfig.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport interface NodeCockroachSessionOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\nexport class NodeCockroachSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tdialect: CockroachDialect,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NodeCockroachSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): CockroachPreparedQuery<T> {\n\t\treturn new NodeCockroachPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: CockroachTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst session = this.client instanceof Pool // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t? new NodeCockroachSession(await this.client.connect(), this.dialect, this.schema, this.options)\n\t\t\t: this;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tawait tx.execute(sql`begin${config ? sql` ${tx.getTransactionConfigSQL(config)}` : undefined}`);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait tx.execute(sql`rollback`);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.client instanceof Pool) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\t(session.client as PoolClient).release();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class NodeCockroachTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachTransaction<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface NodeCockroachQueryResultHKT extends CockroachQueryResultHKT {\n\ttype: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n"],"mappings":"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"}
|
package/cockroach/session.d.cts
CHANGED
|
@@ -16,19 +16,19 @@ declare class NodeCockroachPreparedQuery<T extends PreparedQueryConfig> extends
|
|
|
16
16
|
private params;
|
|
17
17
|
private logger;
|
|
18
18
|
private fields;
|
|
19
|
-
private
|
|
19
|
+
private useJitMappers;
|
|
20
20
|
private customResultMapper?;
|
|
21
21
|
static readonly [entityKind]: string;
|
|
22
22
|
private rawQueryConfig;
|
|
23
23
|
private queryConfig;
|
|
24
24
|
private jitMapper?;
|
|
25
|
-
constructor(client: NodeCockroachClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined,
|
|
25
|
+
constructor(client: NodeCockroachClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, useJitMappers: boolean | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
|
|
26
26
|
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
|
27
27
|
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
|
28
28
|
}
|
|
29
29
|
interface NodeCockroachSessionOptions {
|
|
30
30
|
logger?: Logger;
|
|
31
|
-
|
|
31
|
+
useJitMappers?: boolean;
|
|
32
32
|
}
|
|
33
33
|
declare class NodeCockroachSession<TFullSchema extends Record<string, unknown>, TSchema extends V1.TablesRelationalConfig> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {
|
|
34
34
|
private client;
|
package/cockroach/session.d.ts
CHANGED
|
@@ -16,19 +16,19 @@ declare class NodeCockroachPreparedQuery<T extends PreparedQueryConfig> extends
|
|
|
16
16
|
private params;
|
|
17
17
|
private logger;
|
|
18
18
|
private fields;
|
|
19
|
-
private
|
|
19
|
+
private useJitMappers;
|
|
20
20
|
private customResultMapper?;
|
|
21
21
|
static readonly [entityKind]: string;
|
|
22
22
|
private rawQueryConfig;
|
|
23
23
|
private queryConfig;
|
|
24
24
|
private jitMapper?;
|
|
25
|
-
constructor(client: NodeCockroachClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined,
|
|
25
|
+
constructor(client: NodeCockroachClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, name: string | undefined, useJitMappers: boolean | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
|
|
26
26
|
execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
|
|
27
27
|
all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
|
|
28
28
|
}
|
|
29
29
|
interface NodeCockroachSessionOptions {
|
|
30
30
|
logger?: Logger;
|
|
31
|
-
|
|
31
|
+
useJitMappers?: boolean;
|
|
32
32
|
}
|
|
33
33
|
declare class NodeCockroachSession<TFullSchema extends Record<string, unknown>, TSchema extends V1.TablesRelationalConfig> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {
|
|
34
34
|
private client;
|
package/cockroach/session.js
CHANGED
|
@@ -14,7 +14,7 @@ var NodeCockroachPreparedQuery = class extends CockroachPreparedQuery {
|
|
|
14
14
|
rawQueryConfig;
|
|
15
15
|
queryConfig;
|
|
16
16
|
jitMapper;
|
|
17
|
-
constructor(client, queryString, params, logger, fields, name,
|
|
17
|
+
constructor(client, queryString, params, logger, fields, name, useJitMappers, customResultMapper) {
|
|
18
18
|
super({
|
|
19
19
|
sql: queryString,
|
|
20
20
|
params
|
|
@@ -23,7 +23,7 @@ var NodeCockroachPreparedQuery = class extends CockroachPreparedQuery {
|
|
|
23
23
|
this.params = params;
|
|
24
24
|
this.logger = logger;
|
|
25
25
|
this.fields = fields;
|
|
26
|
-
this.
|
|
26
|
+
this.useJitMappers = useJitMappers;
|
|
27
27
|
this.customResultMapper = customResultMapper;
|
|
28
28
|
this.rawQueryConfig = {
|
|
29
29
|
name,
|
|
@@ -82,7 +82,7 @@ var NodeCockroachPreparedQuery = class extends CockroachPreparedQuery {
|
|
|
82
82
|
});
|
|
83
83
|
return tracer.startActiveSpan("drizzle.mapResponse", () => {
|
|
84
84
|
if (customResultMapper) return customResultMapper(result.rows);
|
|
85
|
-
return this.
|
|
85
|
+
return this.useJitMappers ? (this.jitMapper ??= makeJitQueryMapper(fields, joinsNotNullableMap))(result.rows) : result.rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
}
|
|
@@ -112,7 +112,7 @@ var NodeCockroachSession = class NodeCockroachSession extends CockroachSession {
|
|
|
112
112
|
this.logger = options.logger ?? new NoopLogger();
|
|
113
113
|
}
|
|
114
114
|
prepareQuery(query, fields, name, customResultMapper) {
|
|
115
|
-
return new NodeCockroachPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, this.options.
|
|
115
|
+
return new NodeCockroachPreparedQuery(this.client, query.sql, query.params, this.logger, fields, name, this.options.useJitMappers, customResultMapper);
|
|
116
116
|
}
|
|
117
117
|
async transaction(transaction, config) {
|
|
118
118
|
const session = this.client instanceof Pool$1 ? new NodeCockroachSession(await this.client.connect(), this.dialect, this.schema, this.options) : this;
|
package/cockroach/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","names":["Pool"],"sources":["../../src/cockroach/session.ts"],"sourcesContent":["import type { Client, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport pg from 'pg';\nimport type * as V1 from '~/_relations.ts';\nimport type { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { CockroachTransaction } from '~/cockroach-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/cockroach-core/query-builders/select.types.ts';\nimport type {\n\tCockroachQueryResultHKT,\n\tCockroachTransactionConfig,\n\tPreparedQueryConfig,\n} from '~/cockroach-core/session.ts';\nimport { CockroachPreparedQuery, CockroachSession } from '~/cockroach-core/session.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nconst { Pool, types } = pg;\n\nexport type NodeCockroachClient = pg.Pool | PoolClient | Client;\n\nexport class NodeCockroachPreparedQuery<T extends PreparedQueryConfig> extends CockroachPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachPreparedQuery';\n\n\tprivate rawQueryConfig: QueryConfig;\n\tprivate queryConfig: QueryArrayConfig;\n\tprivate jitMapper?: RowsMapper<T['execute']>;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate useJitMapper: boolean | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\trowMode: 'array',\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\n\t\t\tconst { fields, rawQueryConfig: rawQuery, client, queryConfig: query, joinsNotNullableMap, customResultMapper } =\n\t\t\t\tthis;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async (span) => {\n\t\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t\t'drizzle.query.name': rawQuery.name,\n\t\t\t\t\t\t'drizzle.query.text': rawQuery.text,\n\t\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t\t});\n\t\t\t\t\treturn client.query(rawQuery, params);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result = await tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': query.name,\n\t\t\t\t\t'drizzle.query.text': query.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn client.query(query, params);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\tif (customResultMapper) {\n\t\t\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(result.rows);\n\t\t\t\t}\n\n\t\t\t\treturn this.useJitMapper\n\t\t\t\t\t? (this.jitMapper ??= makeJitQueryMapper(fields!, joinsNotNullableMap))(result.rows)\n\t\t\t\t\t: result.rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': this.rawQueryConfig.name,\n\t\t\t\t\t'drizzle.query.text': this.rawQueryConfig.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport interface NodeCockroachSessionOptions {\n\tlogger?: Logger;\n\tuseJitMapper?: boolean;\n}\n\nexport class NodeCockroachSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tdialect: CockroachDialect,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NodeCockroachSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): CockroachPreparedQuery<T> {\n\t\treturn new NodeCockroachPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tthis.options.useJitMapper,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: CockroachTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst session = this.client instanceof Pool // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t? new NodeCockroachSession(await this.client.connect(), this.dialect, this.schema, this.options)\n\t\t\t: this;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tawait tx.execute(sql`begin${config ? sql` ${tx.getTransactionConfigSQL(config)}` : undefined}`);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait tx.execute(sql`rollback`);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.client instanceof Pool) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\t(session.client as PoolClient).release();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class NodeCockroachTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachTransaction<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface NodeCockroachQueryResultHKT extends CockroachQueryResultHKT {\n\ttype: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","names":["Pool"],"sources":["../../src/cockroach/session.ts"],"sourcesContent":["import type { Client, PoolClient, QueryArrayConfig, QueryConfig, QueryResult, QueryResultRow } from 'pg';\nimport pg from 'pg';\nimport type * as V1 from '~/_relations.ts';\nimport type { CockroachDialect } from '~/cockroach-core/dialect.ts';\nimport { CockroachTransaction } from '~/cockroach-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/cockroach-core/query-builders/select.types.ts';\nimport type {\n\tCockroachQueryResultHKT,\n\tCockroachTransactionConfig,\n\tPreparedQueryConfig,\n} from '~/cockroach-core/session.ts';\nimport { CockroachPreparedQuery, CockroachSession } from '~/cockroach-core/session.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, makeJitQueryMapper, mapResultRow, type RowsMapper } from '~/utils.ts';\n\nconst { Pool, types } = pg;\n\nexport type NodeCockroachClient = pg.Pool | PoolClient | Client;\n\nexport class NodeCockroachPreparedQuery<T extends PreparedQueryConfig> extends CockroachPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachPreparedQuery';\n\n\tprivate rawQueryConfig: QueryConfig;\n\tprivate queryConfig: QueryArrayConfig;\n\tprivate jitMapper?: RowsMapper<T['execute']>;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate useJitMappers: boolean | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\tname,\n\t\t\ttext: queryString,\n\t\t\trowMode: 'array',\n\t\t\ttypes: {\n\t\t\t\t// @ts-ignore\n\t\t\t\tgetTypeParser: (typeId, format) => {\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMPTZ) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.TIMESTAMP) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.DATE) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeId === types.builtins.INTERVAL) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// numeric[]\n\t\t\t\t\tif (typeId as number === 1231) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp[]\n\t\t\t\t\tif (typeId as number === 1115) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// timestamp with timezone[]\n\t\t\t\t\tif (typeId as number === 1185) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// interval[]\n\t\t\t\t\tif (typeId as number === 1187) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// date[]\n\t\t\t\t\tif (typeId as number === 1182) {\n\t\t\t\t\t\treturn (val: any) => val;\n\t\t\t\t\t}\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn types.getTypeParser(typeId, format);\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\n\t\t\tconst { fields, rawQueryConfig: rawQuery, client, queryConfig: query, joinsNotNullableMap, customResultMapper } =\n\t\t\t\tthis;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', async (span) => {\n\t\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t\t'drizzle.query.name': rawQuery.name,\n\t\t\t\t\t\t'drizzle.query.text': rawQuery.text,\n\t\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t\t});\n\t\t\t\t\treturn client.query(rawQuery, params);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result = await tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': query.name,\n\t\t\t\t\t'drizzle.query.text': query.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn client.query(query, params);\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\tif (customResultMapper) {\n\t\t\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(result.rows);\n\t\t\t\t}\n\n\t\t\t\treturn this.useJitMappers\n\t\t\t\t\t? (this.jitMapper ??= makeJitQueryMapper(fields!, joinsNotNullableMap))(result.rows)\n\t\t\t\t\t: result.rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', () => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tthis.logger.logQuery(this.rawQueryConfig.text, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', (span) => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.name': this.rawQueryConfig.name,\n\t\t\t\t\t'drizzle.query.text': this.rawQueryConfig.text,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn this.client.query(this.rawQueryConfig, params).then((result) => result.rows);\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport interface NodeCockroachSessionOptions {\n\tlogger?: Logger;\n\tuseJitMappers?: boolean;\n}\n\nexport class NodeCockroachSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NodeCockroachClient,\n\t\tdialect: CockroachDialect,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NodeCockroachSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): CockroachPreparedQuery<T> {\n\t\treturn new NodeCockroachPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tthis.options.useJitMappers,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: CockroachTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst session = this.client instanceof Pool // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t? new NodeCockroachSession(await this.client.connect(), this.dialect, this.schema, this.options)\n\t\t\t: this;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tawait tx.execute(sql`begin${config ? sql` ${tx.getTransactionConfigSQL(config)}` : undefined}`);\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tawait tx.execute(sql`rollback`);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.client instanceof Pool) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\t(session.client as PoolClient).release();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class NodeCockroachTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends CockroachTransaction<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodeCockroachTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeCockroachTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface NodeCockroachQueryResultHKT extends CockroachQueryResultHKT {\n\ttype: QueryResult<Assume<this['row'], QueryResultRow>>;\n}\n"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
3
|
const require_durable_sqlite_session = require('./session.cjs');
|
|
4
4
|
let __entity_ts = require("../entity.cjs");
|
|
5
|
+
let __utils_ts = require("../utils.cjs");
|
|
5
6
|
let __logger_ts = require("../logger.cjs");
|
|
6
7
|
let ___relations_ts = require("../_relations.cjs");
|
|
7
8
|
___relations_ts = require_runtime.__toESM(___relations_ts);
|
|
@@ -29,7 +30,7 @@ function drizzle(client, config = {}) {
|
|
|
29
30
|
const relations = config.relations ?? {};
|
|
30
31
|
const db = new DrizzleSqliteDODatabase("sync", dialect, new require_durable_sqlite_session.SQLiteDOSession(client, dialect, relations, schema, {
|
|
31
32
|
logger,
|
|
32
|
-
|
|
33
|
+
useJitMappers: (0, __utils_ts.jitCompatCheck)(config.useJitMappers)
|
|
33
34
|
}), relations, schema, false, true);
|
|
34
35
|
db.$client = client;
|
|
35
36
|
return db;
|