drizzle-orm 0.44.2-512acc4 → 0.44.2-6baabce
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/pg/driver.cjs +6 -14
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +3 -4
- package/aws-data-api/pg/driver.d.ts +3 -4
- package/aws-data-api/pg/driver.js +6 -14
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/session.cjs +9 -26
- package/aws-data-api/pg/session.cjs.map +1 -1
- package/aws-data-api/pg/session.d.cts +4 -5
- package/aws-data-api/pg/session.d.ts +4 -5
- package/aws-data-api/pg/session.js +9 -26
- package/aws-data-api/pg/session.js.map +1 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.d.cts +3 -4
- package/better-sqlite3/driver.d.ts +3 -4
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/session.cjs +4 -4
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +4 -4
- package/better-sqlite3/session.d.ts +4 -4
- package/better-sqlite3/session.js +4 -4
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/driver.cjs +2 -3
- package/bun-sql/driver.cjs.map +1 -1
- package/bun-sql/driver.d.cts +3 -4
- package/bun-sql/driver.d.ts +3 -4
- package/bun-sql/driver.js +2 -3
- package/bun-sql/driver.js.map +1 -1
- package/bun-sql/session.cjs +11 -20
- package/bun-sql/session.cjs.map +1 -1
- package/bun-sql/session.d.cts +5 -6
- package/bun-sql/session.d.ts +5 -6
- package/bun-sql/session.js +11 -20
- package/bun-sql/session.js.map +1 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.d.cts +3 -4
- package/bun-sqlite/driver.d.ts +3 -4
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/session.cjs +4 -4
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.d.cts +4 -4
- package/bun-sqlite/session.d.ts +4 -4
- package/bun-sqlite/session.js +4 -4
- package/bun-sqlite/session.js.map +1 -1
- package/column-builder.cjs.map +1 -1
- package/column-builder.d.cts +2 -7
- package/column-builder.d.ts +2 -7
- package/column-builder.js.map +1 -1
- package/column.cjs +0 -2
- package/column.cjs.map +1 -1
- package/column.d.cts +0 -6
- package/column.d.ts +0 -6
- package/column.js +0 -2
- package/column.js.map +1 -1
- package/d1/driver.cjs +2 -9
- package/d1/driver.cjs.map +1 -1
- package/d1/driver.d.cts +1 -2
- package/d1/driver.d.ts +1 -2
- package/d1/driver.js +2 -9
- package/d1/driver.js.map +1 -1
- package/d1/session.cjs +11 -20
- package/d1/session.cjs.map +1 -1
- package/d1/session.d.cts +7 -8
- package/d1/session.d.ts +7 -8
- package/d1/session.js +11 -20
- package/d1/session.js.map +1 -1
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.d.cts +1 -2
- package/durable-sqlite/driver.d.ts +1 -2
- package/durable-sqlite/driver.js.map +1 -1
- package/durable-sqlite/session.cjs +4 -4
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.d.cts +4 -4
- package/durable-sqlite/session.d.ts +4 -4
- package/durable-sqlite/session.js +4 -4
- package/durable-sqlite/session.js.map +1 -1
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.d.cts +1 -2
- package/expo-sqlite/driver.d.ts +1 -2
- package/expo-sqlite/driver.js.map +1 -1
- package/expo-sqlite/session.cjs +4 -4
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.d.cts +4 -4
- package/expo-sqlite/session.d.ts +4 -4
- package/expo-sqlite/session.js +4 -4
- package/expo-sqlite/session.js.map +1 -1
- package/gel/driver.cjs +4 -6
- package/gel/driver.cjs.map +1 -1
- package/gel/driver.d.cts +4 -6
- package/gel/driver.d.ts +4 -6
- package/gel/driver.js +4 -6
- package/gel/driver.js.map +1 -1
- package/gel/session.cjs +9 -12
- package/gel/session.cjs.map +1 -1
- package/gel/session.d.cts +4 -5
- package/gel/session.d.ts +4 -5
- package/gel/session.js +9 -12
- package/gel/session.js.map +1 -1
- package/gel-core/columns/common.cjs +0 -8
- package/gel-core/columns/common.cjs.map +1 -1
- package/gel-core/columns/common.d.cts +0 -2
- package/gel-core/columns/common.d.ts +0 -2
- package/gel-core/columns/common.js +0 -8
- package/gel-core/columns/common.js.map +1 -1
- package/gel-core/db.cjs +3 -5
- package/gel-core/db.cjs.map +1 -1
- package/gel-core/db.d.cts +1 -3
- package/gel-core/db.d.ts +1 -3
- package/gel-core/db.js +3 -5
- package/gel-core/db.js.map +1 -1
- package/gel-core/dialect.cjs +19 -24
- package/gel-core/dialect.cjs.map +1 -1
- package/gel-core/dialect.d.cts +6 -7
- package/gel-core/dialect.d.ts +6 -7
- package/gel-core/dialect.js +20 -25
- package/gel-core/dialect.js.map +1 -1
- package/gel-core/query-builders/delete.cjs +5 -19
- package/gel-core/query-builders/delete.cjs.map +1 -1
- package/gel-core/query-builders/delete.js +5 -19
- package/gel-core/query-builders/delete.js.map +1 -1
- package/gel-core/query-builders/insert.cjs +9 -44
- package/gel-core/query-builders/insert.cjs.map +1 -1
- package/gel-core/query-builders/insert.js +11 -46
- package/gel-core/query-builders/insert.js.map +1 -1
- package/gel-core/query-builders/query.cjs +2 -15
- package/gel-core/query-builders/query.cjs.map +1 -1
- package/gel-core/query-builders/query.js +2 -15
- package/gel-core/query-builders/query.js.map +1 -1
- package/gel-core/query-builders/select.cjs +5 -21
- package/gel-core/query-builders/select.cjs.map +1 -1
- package/gel-core/query-builders/select.js +5 -21
- package/gel-core/query-builders/select.js.map +1 -1
- package/gel-core/query-builders/update.cjs +6 -20
- package/gel-core/query-builders/update.cjs.map +1 -1
- package/gel-core/query-builders/update.js +6 -20
- package/gel-core/query-builders/update.js.map +1 -1
- package/gel-core/session.cjs +4 -47
- package/gel-core/session.cjs.map +1 -1
- package/gel-core/session.d.cts +5 -11
- package/gel-core/session.d.ts +5 -11
- package/gel-core/session.js +4 -47
- package/gel-core/session.js.map +1 -1
- package/libsql/driver-core.cjs +2 -3
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +2 -3
- package/libsql/driver-core.js.map +1 -1
- package/libsql/driver.cjs +1 -4
- package/libsql/driver.cjs.map +1 -1
- package/libsql/driver.d.cts +3 -4
- package/libsql/driver.d.ts +3 -4
- package/libsql/driver.js +1 -4
- package/libsql/driver.js.map +1 -1
- package/libsql/http/index.cjs +1 -4
- package/libsql/http/index.cjs.map +1 -1
- package/libsql/http/index.d.cts +3 -4
- package/libsql/http/index.d.ts +3 -4
- package/libsql/http/index.js +1 -4
- package/libsql/http/index.js.map +1 -1
- package/libsql/node/index.cjs +1 -4
- package/libsql/node/index.cjs.map +1 -1
- package/libsql/node/index.d.cts +3 -4
- package/libsql/node/index.d.ts +3 -4
- package/libsql/node/index.js +1 -4
- package/libsql/node/index.js.map +1 -1
- package/libsql/session.cjs +12 -29
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +7 -8
- package/libsql/session.d.ts +7 -8
- package/libsql/session.js +12 -29
- package/libsql/session.js.map +1 -1
- package/libsql/sqlite3/index.cjs +1 -4
- package/libsql/sqlite3/index.cjs.map +1 -1
- package/libsql/sqlite3/index.d.cts +3 -4
- package/libsql/sqlite3/index.d.ts +3 -4
- package/libsql/sqlite3/index.js +1 -4
- package/libsql/sqlite3/index.js.map +1 -1
- package/libsql/wasm/index.cjs +1 -4
- package/libsql/wasm/index.cjs.map +1 -1
- package/libsql/wasm/index.d.cts +3 -4
- package/libsql/wasm/index.d.ts +3 -4
- package/libsql/wasm/index.js +1 -4
- package/libsql/wasm/index.js.map +1 -1
- package/libsql/web/index.cjs +1 -4
- package/libsql/web/index.cjs.map +1 -1
- package/libsql/web/index.d.cts +3 -4
- package/libsql/web/index.d.ts +3 -4
- package/libsql/web/index.js +1 -4
- package/libsql/web/index.js.map +1 -1
- package/libsql/ws/index.cjs +1 -4
- package/libsql/ws/index.cjs.map +1 -1
- package/libsql/ws/index.d.cts +3 -4
- package/libsql/ws/index.d.ts +3 -4
- package/libsql/ws/index.js +1 -4
- package/libsql/ws/index.js.map +1 -1
- package/mysql-core/db.cjs +3 -5
- package/mysql-core/db.cjs.map +1 -1
- package/mysql-core/db.d.cts +1 -3
- package/mysql-core/db.d.ts +1 -3
- package/mysql-core/db.js +3 -5
- package/mysql-core/db.js.map +1 -1
- package/mysql-core/dialect.cjs +23 -29
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +7 -8
- package/mysql-core/dialect.d.ts +7 -8
- package/mysql-core/dialect.js +24 -30
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/delete.cjs +1 -8
- package/mysql-core/query-builders/delete.cjs.map +1 -1
- package/mysql-core/query-builders/delete.js +1 -8
- package/mysql-core/query-builders/delete.js.map +1 -1
- package/mysql-core/query-builders/insert.cjs +6 -30
- package/mysql-core/query-builders/insert.cjs.map +1 -1
- package/mysql-core/query-builders/insert.js +8 -32
- package/mysql-core/query-builders/insert.js.map +1 -1
- package/mysql-core/query-builders/query.cjs +3 -19
- package/mysql-core/query-builders/query.cjs.map +1 -1
- package/mysql-core/query-builders/query.js +3 -19
- package/mysql-core/query-builders/query.js.map +1 -1
- package/mysql-core/query-builders/select.cjs +6 -23
- package/mysql-core/query-builders/select.cjs.map +1 -1
- package/mysql-core/query-builders/select.js +6 -23
- package/mysql-core/query-builders/select.js.map +1 -1
- package/mysql-core/query-builders/update.cjs +3 -15
- package/mysql-core/query-builders/update.cjs.map +1 -1
- package/mysql-core/query-builders/update.js +3 -15
- package/mysql-core/query-builders/update.js.map +1 -1
- package/mysql-core/session.cjs +4 -43
- package/mysql-core/session.cjs.map +1 -1
- package/mysql-core/session.d.cts +7 -14
- package/mysql-core/session.d.ts +7 -14
- package/mysql-core/session.js +4 -43
- package/mysql-core/session.js.map +1 -1
- package/mysql-proxy/driver.cjs +2 -3
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.d.cts +1 -2
- package/mysql-proxy/driver.d.ts +1 -2
- package/mysql-proxy/driver.js +2 -3
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql-proxy/session.cjs +8 -8
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +6 -5
- package/mysql-proxy/session.d.ts +6 -5
- package/mysql-proxy/session.js +8 -8
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +4 -11
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +2 -4
- package/mysql2/driver.d.ts +2 -4
- package/mysql2/driver.js +4 -11
- package/mysql2/driver.js.map +1 -1
- package/mysql2/session.cjs +10 -14
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +5 -5
- package/mysql2/session.d.ts +5 -5
- package/mysql2/session.js +10 -14
- package/mysql2/session.js.map +1 -1
- package/neon-http/driver.cjs +3 -5
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +4 -6
- package/neon-http/driver.d.ts +4 -6
- package/neon-http/driver.js +3 -5
- package/neon-http/driver.js.map +1 -1
- package/neon-http/session.cjs +6 -8
- package/neon-http/session.cjs.map +1 -1
- package/neon-http/session.d.cts +4 -5
- package/neon-http/session.d.ts +4 -5
- package/neon-http/session.js +6 -8
- package/neon-http/session.js.map +1 -1
- package/neon-serverless/driver.cjs +4 -6
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +4 -6
- package/neon-serverless/driver.d.ts +4 -6
- package/neon-serverless/driver.js +4 -6
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/session.cjs +9 -23
- package/neon-serverless/session.cjs.map +1 -1
- package/neon-serverless/session.d.cts +4 -5
- package/neon-serverless/session.d.ts +4 -5
- package/neon-serverless/session.js +9 -23
- package/neon-serverless/session.js.map +1 -1
- package/node-postgres/driver.cjs +4 -6
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +4 -6
- package/node-postgres/driver.d.ts +4 -6
- package/node-postgres/driver.js +4 -6
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/session.cjs +9 -18
- package/node-postgres/session.cjs.map +1 -1
- package/node-postgres/session.d.cts +4 -5
- package/node-postgres/session.d.ts +4 -5
- package/node-postgres/session.js +9 -18
- package/node-postgres/session.js.map +1 -1
- package/op-sqlite/driver.cjs +2 -3
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.d.cts +1 -2
- package/op-sqlite/driver.d.ts +1 -2
- package/op-sqlite/driver.js +2 -3
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/session.cjs +11 -20
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +7 -8
- package/op-sqlite/session.d.ts +7 -8
- package/op-sqlite/session.js +11 -20
- package/op-sqlite/session.js.map +1 -1
- package/package.json +5 -351
- package/pg-core/columns/common.cjs +0 -2
- package/pg-core/columns/common.cjs.map +1 -1
- package/pg-core/columns/common.js +0 -2
- package/pg-core/columns/common.js.map +1 -1
- package/pg-core/db.cjs +3 -5
- package/pg-core/db.cjs.map +1 -1
- package/pg-core/db.d.cts +1 -3
- package/pg-core/db.d.ts +1 -3
- package/pg-core/db.js +3 -5
- package/pg-core/db.js.map +1 -1
- package/pg-core/dialect.cjs +19 -25
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +6 -7
- package/pg-core/dialect.d.ts +6 -7
- package/pg-core/dialect.js +20 -26
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/query-builders/delete.cjs +5 -19
- package/pg-core/query-builders/delete.cjs.map +1 -1
- package/pg-core/query-builders/delete.js +5 -19
- package/pg-core/query-builders/delete.js.map +1 -1
- package/pg-core/query-builders/insert.cjs +9 -49
- package/pg-core/query-builders/insert.cjs.map +1 -1
- package/pg-core/query-builders/insert.js +11 -51
- package/pg-core/query-builders/insert.js.map +1 -1
- package/pg-core/query-builders/query.cjs +2 -15
- package/pg-core/query-builders/query.cjs.map +1 -1
- package/pg-core/query-builders/query.js +2 -15
- package/pg-core/query-builders/query.js.map +1 -1
- package/pg-core/query-builders/select.cjs +7 -23
- package/pg-core/query-builders/select.cjs.map +1 -1
- package/pg-core/query-builders/select.js +7 -23
- package/pg-core/query-builders/select.js.map +1 -1
- package/pg-core/query-builders/update.cjs +6 -20
- package/pg-core/query-builders/update.cjs.map +1 -1
- package/pg-core/query-builders/update.js +6 -20
- package/pg-core/query-builders/update.js.map +1 -1
- package/pg-core/session.cjs +4 -48
- package/pg-core/session.cjs.map +1 -1
- package/pg-core/session.d.cts +5 -11
- package/pg-core/session.d.ts +5 -11
- package/pg-core/session.js +4 -48
- package/pg-core/session.js.map +1 -1
- package/pg-proxy/driver.cjs +2 -3
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.d.cts +1 -2
- package/pg-proxy/driver.d.ts +1 -2
- package/pg-proxy/driver.js +2 -3
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/session.cjs +6 -8
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +4 -5
- package/pg-proxy/session.d.ts +4 -5
- package/pg-proxy/session.js +6 -8
- package/pg-proxy/session.js.map +1 -1
- package/pglite/driver.cjs +4 -6
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +4 -6
- package/pglite/driver.d.ts +4 -6
- package/pglite/driver.js +4 -6
- package/pglite/driver.js.map +1 -1
- package/pglite/session.cjs +9 -19
- package/pglite/session.cjs.map +1 -1
- package/pglite/session.d.cts +4 -5
- package/pglite/session.d.ts +4 -5
- package/pglite/session.js +9 -19
- package/pglite/session.js.map +1 -1
- package/planetscale-serverless/driver.cjs +2 -10
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +3 -4
- package/planetscale-serverless/driver.d.ts +3 -4
- package/planetscale-serverless/driver.js +2 -10
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/session.cjs +13 -23
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +7 -6
- package/planetscale-serverless/session.d.ts +7 -6
- package/planetscale-serverless/session.js +13 -23
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/driver.cjs +2 -3
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +3 -4
- package/postgres-js/driver.d.ts +3 -4
- package/postgres-js/driver.js +2 -3
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/session.cjs +16 -27
- package/postgres-js/session.cjs.map +1 -1
- package/postgres-js/session.d.cts +5 -6
- package/postgres-js/session.d.ts +5 -6
- package/postgres-js/session.js +16 -27
- package/postgres-js/session.js.map +1 -1
- package/prisma/mysql/driver.cjs +3 -3
- package/prisma/mysql/driver.cjs.map +1 -1
- package/prisma/mysql/driver.d.cts +2 -3
- package/prisma/mysql/driver.d.ts +2 -3
- package/prisma/mysql/driver.js +3 -3
- package/prisma/mysql/driver.js.map +1 -1
- package/prisma/mysql/session.cjs +11 -10
- package/prisma/mysql/session.cjs.map +1 -1
- package/prisma/mysql/session.d.cts +5 -10
- package/prisma/mysql/session.d.ts +5 -10
- package/prisma/mysql/session.js +11 -10
- package/prisma/mysql/session.js.map +1 -1
- package/prisma/pg/driver.cjs +3 -3
- package/prisma/pg/driver.cjs.map +1 -1
- package/prisma/pg/driver.d.cts +1 -2
- package/prisma/pg/driver.d.ts +1 -2
- package/prisma/pg/driver.js +3 -3
- package/prisma/pg/driver.js.map +1 -1
- package/prisma/pg/session.cjs +7 -7
- package/prisma/pg/session.cjs.map +1 -1
- package/prisma/pg/session.d.cts +5 -10
- package/prisma/pg/session.d.ts +5 -10
- package/prisma/pg/session.js +7 -7
- package/prisma/pg/session.js.map +1 -1
- package/prisma/sqlite/driver.cjs +1 -7
- package/prisma/sqlite/driver.cjs.map +1 -1
- package/prisma/sqlite/driver.d.cts +1 -2
- package/prisma/sqlite/driver.d.ts +1 -2
- package/prisma/sqlite/driver.js +1 -7
- package/prisma/sqlite/driver.js.map +1 -1
- package/prisma/sqlite/session.cjs +10 -10
- package/prisma/sqlite/session.cjs.map +1 -1
- package/prisma/sqlite/session.d.cts +7 -12
- package/prisma/sqlite/session.d.ts +7 -12
- package/prisma/sqlite/session.js +10 -10
- package/prisma/sqlite/session.js.map +1 -1
- package/singlestore/driver.cjs +25 -34
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +2 -4
- package/singlestore/driver.d.ts +2 -4
- package/singlestore/driver.js +25 -34
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs +10 -14
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +5 -5
- package/singlestore/session.d.ts +5 -5
- package/singlestore/session.js +10 -14
- package/singlestore/session.js.map +1 -1
- package/singlestore-core/db.cjs +3 -5
- package/singlestore-core/db.cjs.map +1 -1
- package/singlestore-core/db.d.cts +1 -3
- package/singlestore-core/db.d.ts +1 -3
- package/singlestore-core/db.js +3 -5
- package/singlestore-core/db.js.map +1 -1
- package/singlestore-core/dialect.cjs +18 -24
- package/singlestore-core/dialect.cjs.map +1 -1
- package/singlestore-core/dialect.d.cts +6 -7
- package/singlestore-core/dialect.d.ts +6 -7
- package/singlestore-core/dialect.js +19 -25
- package/singlestore-core/dialect.js.map +1 -1
- package/singlestore-core/query-builders/delete.cjs +1 -8
- package/singlestore-core/query-builders/delete.cjs.map +1 -1
- package/singlestore-core/query-builders/delete.js +1 -8
- package/singlestore-core/query-builders/delete.js.map +1 -1
- package/singlestore-core/query-builders/insert.cjs +5 -30
- package/singlestore-core/query-builders/insert.cjs.map +1 -1
- package/singlestore-core/query-builders/insert.js +7 -32
- package/singlestore-core/query-builders/insert.js.map +1 -1
- package/singlestore-core/query-builders/query.cjs +2 -17
- package/singlestore-core/query-builders/query.cjs.map +1 -1
- package/singlestore-core/query-builders/query.js +2 -17
- package/singlestore-core/query-builders/query.js.map +1 -1
- package/singlestore-core/query-builders/select.cjs +7 -24
- package/singlestore-core/query-builders/select.cjs.map +1 -1
- package/singlestore-core/query-builders/select.js +7 -24
- package/singlestore-core/query-builders/select.js.map +1 -1
- package/singlestore-core/query-builders/update.cjs +2 -9
- package/singlestore-core/query-builders/update.cjs.map +1 -1
- package/singlestore-core/query-builders/update.js +2 -9
- package/singlestore-core/query-builders/update.js.map +1 -1
- package/singlestore-core/session.cjs +4 -43
- package/singlestore-core/session.cjs.map +1 -1
- package/singlestore-core/session.d.cts +6 -14
- package/singlestore-core/session.d.ts +6 -14
- package/singlestore-core/session.js +4 -43
- package/singlestore-core/session.js.map +1 -1
- package/singlestore-proxy/driver.cjs +2 -3
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.d.cts +1 -2
- package/singlestore-proxy/driver.d.ts +1 -2
- package/singlestore-proxy/driver.js +2 -3
- package/singlestore-proxy/driver.js.map +1 -1
- package/singlestore-proxy/session.cjs +8 -8
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.d.cts +6 -9
- package/singlestore-proxy/session.d.ts +6 -9
- package/singlestore-proxy/session.js +8 -8
- package/singlestore-proxy/session.js.map +1 -1
- package/sql/sql.cjs +2 -24
- package/sql/sql.cjs.map +1 -1
- package/sql/sql.d.cts +0 -12
- package/sql/sql.d.ts +0 -12
- package/sql/sql.js +2 -23
- package/sql/sql.js.map +1 -1
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.d.cts +1 -2
- package/sql-js/driver.d.ts +1 -2
- package/sql-js/driver.js.map +1 -1
- package/sql-js/session.cjs +4 -4
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.d.cts +4 -4
- package/sql-js/session.d.ts +4 -4
- package/sql-js/session.js +4 -4
- package/sql-js/session.js.map +1 -1
- package/sqlite-core/db.cjs +3 -5
- package/sqlite-core/db.cjs.map +1 -1
- package/sqlite-core/db.d.cts +1 -3
- package/sqlite-core/db.d.ts +1 -3
- package/sqlite-core/db.js +3 -5
- package/sqlite-core/db.js.map +1 -1
- package/sqlite-core/dialect.cjs +19 -29
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +6 -7
- package/sqlite-core/dialect.d.ts +6 -7
- package/sqlite-core/dialect.js +20 -30
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs +1 -8
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.js +1 -8
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/insert.cjs +4 -28
- package/sqlite-core/query-builders/insert.cjs.map +1 -1
- package/sqlite-core/query-builders/insert.js +6 -35
- package/sqlite-core/query-builders/insert.js.map +1 -1
- package/sqlite-core/query-builders/query.cjs +2 -15
- package/sqlite-core/query-builders/query.cjs.map +1 -1
- package/sqlite-core/query-builders/query.js +2 -15
- package/sqlite-core/query-builders/query.js.map +1 -1
- package/sqlite-core/query-builders/select.cjs +6 -15
- package/sqlite-core/query-builders/select.cjs.map +1 -1
- package/sqlite-core/query-builders/select.js +6 -15
- package/sqlite-core/query-builders/select.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs +2 -9
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.js +2 -9
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-core/session.cjs +6 -81
- package/sqlite-core/session.cjs.map +1 -1
- package/sqlite-core/session.d.cts +9 -19
- package/sqlite-core/session.d.ts +9 -19
- package/sqlite-core/session.js +6 -81
- package/sqlite-core/session.js.map +1 -1
- package/sqlite-proxy/driver.cjs +3 -4
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.d.cts +2 -3
- package/sqlite-proxy/driver.d.ts +2 -3
- package/sqlite-proxy/driver.js +3 -4
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/session.cjs +11 -20
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +7 -8
- package/sqlite-proxy/session.d.ts +7 -8
- package/sqlite-proxy/session.js +11 -20
- package/sqlite-proxy/session.js.map +1 -1
- package/tidb-serverless/driver.cjs +2 -16
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +3 -4
- package/tidb-serverless/driver.d.ts +3 -4
- package/tidb-serverless/driver.js +2 -16
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/session.cjs +13 -23
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +7 -6
- package/tidb-serverless/session.d.ts +7 -6
- package/tidb-serverless/session.js +13 -23
- package/tidb-serverless/session.js.map +1 -1
- package/tracing.cjs.map +1 -1
- package/tracing.js.map +1 -1
- package/utils.cjs +2 -38
- package/utils.cjs.map +1 -1
- package/utils.d.cts +2 -6
- package/utils.d.ts +2 -6
- package/utils.js +4 -39
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +5 -10
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +4 -6
- package/vercel-postgres/driver.d.ts +4 -6
- package/vercel-postgres/driver.js +5 -10
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/session.cjs +9 -18
- package/vercel-postgres/session.cjs.map +1 -1
- package/vercel-postgres/session.d.cts +4 -5
- package/vercel-postgres/session.d.ts +4 -5
- package/vercel-postgres/session.js +9 -18
- package/vercel-postgres/session.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/xata-http/driver.cjs +4 -7
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +2 -4
- package/xata-http/driver.d.ts +2 -4
- package/xata-http/driver.js +4 -7
- package/xata-http/driver.js.map +1 -1
- package/xata-http/session.cjs +6 -8
- package/xata-http/session.cjs.map +1 -1
- package/xata-http/session.d.cts +4 -5
- package/xata-http/session.d.ts +4 -5
- package/xata-http/session.js +6 -8
- package/xata-http/session.js.map +1 -1
- package/extension-core/gel/index.cjs +0 -33
- package/extension-core/gel/index.cjs.map +0 -1
- package/extension-core/gel/index.d.cts +0 -67
- package/extension-core/gel/index.d.ts +0 -67
- package/extension-core/gel/index.js +0 -9
- package/extension-core/gel/index.js.map +0 -1
- package/extension-core/index.cjs +0 -42
- package/extension-core/index.cjs.map +0 -1
- package/extension-core/index.d.cts +0 -9
- package/extension-core/index.d.ts +0 -9
- package/extension-core/index.js +0 -15
- package/extension-core/index.js.map +0 -1
- package/extension-core/mysql/index.cjs +0 -33
- package/extension-core/mysql/index.cjs.map +0 -1
- package/extension-core/mysql/index.d.cts +0 -69
- package/extension-core/mysql/index.d.ts +0 -69
- package/extension-core/mysql/index.js +0 -9
- package/extension-core/mysql/index.js.map +0 -1
- package/extension-core/pg/index.cjs +0 -33
- package/extension-core/pg/index.cjs.map +0 -1
- package/extension-core/pg/index.d.cts +0 -67
- package/extension-core/pg/index.d.ts +0 -67
- package/extension-core/pg/index.js +0 -9
- package/extension-core/pg/index.js.map +0 -1
- package/extension-core/singlestore/index.cjs +0 -33
- package/extension-core/singlestore/index.cjs.map +0 -1
- package/extension-core/singlestore/index.d.cts +0 -67
- package/extension-core/singlestore/index.d.ts +0 -67
- package/extension-core/singlestore/index.js +0 -9
- package/extension-core/singlestore/index.js.map +0 -1
- package/extension-core/sqlite/index.cjs +0 -33
- package/extension-core/sqlite/index.cjs.map +0 -1
- package/extension-core/sqlite/index.d.cts +0 -68
- package/extension-core/sqlite/index.d.ts +0 -68
- package/extension-core/sqlite/index.js +0 -9
- package/extension-core/sqlite/index.js.map +0 -1
- package/extensions/hook/gel/index.cjs +0 -47
- package/extensions/hook/gel/index.cjs.map +0 -1
- package/extensions/hook/gel/index.d.cts +0 -11
- package/extensions/hook/gel/index.d.ts +0 -11
- package/extensions/hook/gel/index.js +0 -22
- package/extensions/hook/gel/index.js.map +0 -1
- package/extensions/hook/mysql/index.cjs +0 -47
- package/extensions/hook/mysql/index.cjs.map +0 -1
- package/extensions/hook/mysql/index.d.cts +0 -11
- package/extensions/hook/mysql/index.d.ts +0 -11
- package/extensions/hook/mysql/index.js +0 -22
- package/extensions/hook/mysql/index.js.map +0 -1
- package/extensions/hook/pg/index.cjs +0 -47
- package/extensions/hook/pg/index.cjs.map +0 -1
- package/extensions/hook/pg/index.d.cts +0 -11
- package/extensions/hook/pg/index.d.ts +0 -11
- package/extensions/hook/pg/index.js +0 -22
- package/extensions/hook/pg/index.js.map +0 -1
- package/extensions/hook/singlestore/index.cjs +0 -47
- package/extensions/hook/singlestore/index.cjs.map +0 -1
- package/extensions/hook/singlestore/index.d.cts +0 -11
- package/extensions/hook/singlestore/index.d.ts +0 -11
- package/extensions/hook/singlestore/index.js +0 -22
- package/extensions/hook/singlestore/index.js.map +0 -1
- package/extensions/hook/sqlite/index.cjs +0 -47
- package/extensions/hook/sqlite/index.cjs.map +0 -1
- package/extensions/hook/sqlite/index.d.cts +0 -11
- package/extensions/hook/sqlite/index.d.ts +0 -11
- package/extensions/hook/sqlite/index.js +0 -22
- package/extensions/hook/sqlite/index.js.map +0 -1
- package/extensions/s3-file/common.cjs +0 -313
- package/extensions/s3-file/common.cjs.map +0 -1
- package/extensions/s3-file/common.d.cts +0 -88
- package/extensions/s3-file/common.d.ts +0 -88
- package/extensions/s3-file/common.js +0 -280
- package/extensions/s3-file/common.js.map +0 -1
- package/extensions/s3-file/gel/column.cjs +0 -113
- package/extensions/s3-file/gel/column.cjs.map +0 -1
- package/extensions/s3-file/gel/column.d.cts +0 -105
- package/extensions/s3-file/gel/column.d.ts +0 -105
- package/extensions/s3-file/gel/column.js +0 -92
- package/extensions/s3-file/gel/column.js.map +0 -1
- package/extensions/s3-file/gel/extension.cjs +0 -262
- package/extensions/s3-file/gel/extension.cjs.map +0 -1
- package/extensions/s3-file/gel/extension.d.cts +0 -18
- package/extensions/s3-file/gel/extension.d.ts +0 -18
- package/extensions/s3-file/gel/extension.js +0 -248
- package/extensions/s3-file/gel/extension.js.map +0 -1
- package/extensions/s3-file/gel/index.cjs +0 -25
- package/extensions/s3-file/gel/index.cjs.map +0 -1
- package/extensions/s3-file/gel/index.d.cts +0 -2
- package/extensions/s3-file/gel/index.d.ts +0 -2
- package/extensions/s3-file/gel/index.js +0 -3
- package/extensions/s3-file/gel/index.js.map +0 -1
- package/extensions/s3-file/index.cjs +0 -23
- package/extensions/s3-file/index.cjs.map +0 -1
- package/extensions/s3-file/index.d.cts +0 -1
- package/extensions/s3-file/index.d.ts +0 -1
- package/extensions/s3-file/index.js +0 -2
- package/extensions/s3-file/index.js.map +0 -1
- package/extensions/s3-file/mysql/column.cjs +0 -110
- package/extensions/s3-file/mysql/column.cjs.map +0 -1
- package/extensions/s3-file/mysql/column.d.cts +0 -63
- package/extensions/s3-file/mysql/column.d.ts +0 -63
- package/extensions/s3-file/mysql/column.js +0 -86
- package/extensions/s3-file/mysql/column.js.map +0 -1
- package/extensions/s3-file/mysql/extension.cjs +0 -242
- package/extensions/s3-file/mysql/extension.cjs.map +0 -1
- package/extensions/s3-file/mysql/extension.d.cts +0 -18
- package/extensions/s3-file/mysql/extension.d.ts +0 -18
- package/extensions/s3-file/mysql/extension.js +0 -228
- package/extensions/s3-file/mysql/extension.js.map +0 -1
- package/extensions/s3-file/mysql/index.cjs +0 -25
- package/extensions/s3-file/mysql/index.cjs.map +0 -1
- package/extensions/s3-file/mysql/index.d.cts +0 -2
- package/extensions/s3-file/mysql/index.d.ts +0 -2
- package/extensions/s3-file/mysql/index.js +0 -3
- package/extensions/s3-file/mysql/index.js.map +0 -1
- package/extensions/s3-file/pg/column.cjs +0 -113
- package/extensions/s3-file/pg/column.cjs.map +0 -1
- package/extensions/s3-file/pg/column.d.cts +0 -105
- package/extensions/s3-file/pg/column.d.ts +0 -105
- package/extensions/s3-file/pg/column.js +0 -92
- package/extensions/s3-file/pg/column.js.map +0 -1
- package/extensions/s3-file/pg/extension.cjs +0 -264
- package/extensions/s3-file/pg/extension.cjs.map +0 -1
- package/extensions/s3-file/pg/extension.d.cts +0 -18
- package/extensions/s3-file/pg/extension.d.ts +0 -18
- package/extensions/s3-file/pg/extension.js +0 -250
- package/extensions/s3-file/pg/extension.js.map +0 -1
- package/extensions/s3-file/pg/index.cjs +0 -25
- package/extensions/s3-file/pg/index.cjs.map +0 -1
- package/extensions/s3-file/pg/index.d.cts +0 -2
- package/extensions/s3-file/pg/index.d.ts +0 -2
- package/extensions/s3-file/pg/index.js +0 -3
- package/extensions/s3-file/pg/index.js.map +0 -1
- package/extensions/s3-file/singlestore/column.cjs +0 -110
- package/extensions/s3-file/singlestore/column.cjs.map +0 -1
- package/extensions/s3-file/singlestore/column.d.cts +0 -63
- package/extensions/s3-file/singlestore/column.d.ts +0 -63
- package/extensions/s3-file/singlestore/column.js +0 -86
- package/extensions/s3-file/singlestore/column.js.map +0 -1
- package/extensions/s3-file/singlestore/extension.cjs +0 -239
- package/extensions/s3-file/singlestore/extension.cjs.map +0 -1
- package/extensions/s3-file/singlestore/extension.d.cts +0 -18
- package/extensions/s3-file/singlestore/extension.d.ts +0 -18
- package/extensions/s3-file/singlestore/extension.js +0 -225
- package/extensions/s3-file/singlestore/extension.js.map +0 -1
- package/extensions/s3-file/singlestore/index.cjs +0 -25
- package/extensions/s3-file/singlestore/index.cjs.map +0 -1
- package/extensions/s3-file/singlestore/index.d.cts +0 -2
- package/extensions/s3-file/singlestore/index.d.ts +0 -2
- package/extensions/s3-file/singlestore/index.js +0 -3
- package/extensions/s3-file/singlestore/index.js.map +0 -1
- package/extensions/s3-file/sqlite/column.cjs +0 -110
- package/extensions/s3-file/sqlite/column.cjs.map +0 -1
- package/extensions/s3-file/sqlite/column.d.cts +0 -63
- package/extensions/s3-file/sqlite/column.d.ts +0 -63
- package/extensions/s3-file/sqlite/column.js +0 -86
- package/extensions/s3-file/sqlite/column.js.map +0 -1
- package/extensions/s3-file/sqlite/extension.cjs +0 -242
- package/extensions/s3-file/sqlite/extension.cjs.map +0 -1
- package/extensions/s3-file/sqlite/extension.d.cts +0 -18
- package/extensions/s3-file/sqlite/extension.d.ts +0 -18
- package/extensions/s3-file/sqlite/extension.js +0 -228
- package/extensions/s3-file/sqlite/extension.js.map +0 -1
- package/extensions/s3-file/sqlite/index.cjs +0 -25
- package/extensions/s3-file/sqlite/index.cjs.map +0 -1
- package/extensions/s3-file/sqlite/index.d.cts +0 -2
- package/extensions/s3-file/sqlite/index.d.ts +0 -2
- package/extensions/s3-file/sqlite/index.js +0 -3
- package/extensions/s3-file/sqlite/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/query-builders/update.ts"],"sourcesContent":["import type { WithCacheConfig } from '~/cache/core/types.ts';\nimport type { GetColumnData } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport type {\n\tPgPreparedQuery,\n\tPgQueryResultHKT,\n\tPgQueryResultKind,\n\tPgSession,\n\tPreparedQueryConfig,\n} from '~/pg-core/session.ts';\nimport { PgTable } from '~/pg-core/table.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type {\n\tAppendToNullabilityMap,\n\tAppendToResult,\n\tGetSelectTableName,\n\tGetSelectTableSelection,\n\tJoinNullability,\n\tJoinType,\n\tSelectMode,\n\tSelectResult,\n} from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { type ColumnsSelection, type Query, SQL, type SQLWrapper } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { getTableName, Table } from '~/table.ts';\nimport {\n\ttype Assume,\n\ttype DrizzleTypeError,\n\ttype Equal,\n\tgetTableLikeName,\n\tmapUpdateSet,\n\ttype NeonAuthToken,\n\torderSelectedFields,\n\ttype Simplify,\n\ttype UpdateSet,\n} from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { PgColumn } from '../columns/common.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { PgViewBase } from '../view-base.ts';\nimport type {\n\tPgSelectJoinConfig,\n\tSelectedFields,\n\tSelectedFieldsOrdered,\n\tTableLikeHasEmptySelection,\n} from './select.types.ts';\n\nexport interface PgUpdateConfig {\n\twhere?: SQL | undefined;\n\tset: UpdateSet;\n\ttable: PgTable;\n\tfrom?: PgTable | Subquery | PgViewBase | SQL;\n\tjoins: PgSelectJoinConfig[];\n\treturningFields?: SelectedFields;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type PgUpdateSetSource<TTable extends PgTable> =\n\t& {\n\t\t[Key in keyof TTable['$inferInsert']]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key]>\n\t\t\t| SQL\n\t\t\t| PgColumn\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport class PgUpdateBuilder<TTable extends PgTable, TQueryResult extends PgQueryResultHKT> {\n\tstatic readonly [entityKind]: string = 'PgUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: PgSession,\n\t\tprivate dialect: PgDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tprivate authToken?: NeonAuthToken;\n\tsetToken(token: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\tset(\n\t\tvalues: PgUpdateSetSource<TTable>,\n\t): PgUpdateWithout<PgUpdateBase<TTable, TQueryResult>, false, 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'> {\n\t\treturn new PgUpdateBase<TTable, TQueryResult>(\n\t\t\tthis.table,\n\t\t\tmapUpdateSet(this.table, values, this.session.extensions),\n\t\t\tthis.session,\n\t\t\tthis.dialect,\n\t\t\tthis.withList,\n\t\t).setToken(this.authToken);\n\t}\n}\n\nexport type PgUpdateWithout<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['from'],\n\t\tT['_']['selectedFields'],\n\t\tT['_']['returning'],\n\t\tT['_']['nullabilityMap'],\n\t\tT['_']['joins'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type PgUpdateWithJoins<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL,\n> = TDynamic extends true ? T : Omit<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tTFrom,\n\t\tT['_']['selectedFields'],\n\t\tT['_']['returning'],\n\t\tAppendToNullabilityMap<T['_']['nullabilityMap'], GetSelectTableName<TFrom>, 'inner'>,\n\t\t[...T['_']['joins'], {\n\t\t\tname: GetSelectTableName<TFrom>;\n\t\t\tjoinType: 'inner';\n\t\t\ttable: TFrom;\n\t\t}],\n\t\tTDynamic,\n\t\tExclude<T['_']['excludedMethods'] | 'from', 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>\n\t>,\n\tExclude<T['_']['excludedMethods'] | 'from', 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>\n>;\n\nexport type PgUpdateJoinFn<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTJoinType extends JoinType,\n> = <\n\tTJoinedTable extends PgTable | Subquery | PgViewBase | SQL,\n>(\n\ttable: TableLikeHasEmptySelection<TJoinedTable> extends true ? DrizzleTypeError<\n\t\t\t\"Cannot reference a data-modifying statement subquery if it doesn't contain a `returning` clause\"\n\t\t>\n\t\t: TJoinedTable,\n\ton:\n\t\t| (\n\t\t\t(\n\t\t\t\tupdateTable: T['_']['table']['_']['columns'],\n\t\t\t\tfrom: T['_']['from'] extends PgTable ? T['_']['from']['_']['columns']\n\t\t\t\t\t: T['_']['from'] extends Subquery | PgViewBase ? T['_']['from']['_']['selectedFields']\n\t\t\t\t\t: never,\n\t\t\t) => SQL | undefined\n\t\t)\n\t\t| SQL\n\t\t| undefined,\n) => PgUpdateJoin<T, TDynamic, TJoinType, TJoinedTable>;\n\nexport type PgUpdateJoin<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTJoinType extends JoinType,\n\tTJoinedTable extends PgTable | Subquery | PgViewBase | SQL,\n> = TDynamic extends true ? T : PgUpdateBase<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['from'],\n\tT['_']['selectedFields'],\n\tT['_']['returning'],\n\tAppendToNullabilityMap<T['_']['nullabilityMap'], GetSelectTableName<TJoinedTable>, TJoinType>,\n\t[...T['_']['joins'], {\n\t\tname: GetSelectTableName<TJoinedTable>;\n\t\tjoinType: TJoinType;\n\t\ttable: TJoinedTable;\n\t}],\n\tTDynamic,\n\tT['_']['excludedMethods']\n>;\n\ntype Join = {\n\tname: string | undefined;\n\tjoinType: JoinType;\n\ttable: PgTable | Subquery | PgViewBase | SQL;\n};\n\ntype AccumulateToResult<\n\tT extends AnyPgUpdate,\n\tTSelectMode extends SelectMode,\n\tTJoins extends Join[],\n\tTSelectedFields extends ColumnsSelection,\n> = TJoins extends [infer TJoin extends Join, ...infer TRest extends Join[]] ? AccumulateToResult<\n\t\tT,\n\t\tTSelectMode extends 'partial' ? TSelectMode : 'multiple',\n\t\tTRest,\n\t\tAppendToResult<\n\t\t\tT['_']['table']['_']['name'],\n\t\t\tTSelectedFields,\n\t\t\tTJoin['name'],\n\t\t\tTJoin['table'] extends Table ? TJoin['table']['_']['columns']\n\t\t\t\t: TJoin['table'] extends Subquery ? Assume<TJoin['table']['_']['selectedFields'], SelectedFields>\n\t\t\t\t: never,\n\t\t\tTSelectMode extends 'partial' ? TSelectMode : 'multiple'\n\t\t>\n\t>\n\t: TSelectedFields;\n\nexport type PgUpdateReturningAll<T extends AnyPgUpdate, TDynamic extends boolean> = PgUpdateWithout<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['from'],\n\t\tEqual<T['_']['joins'], []> extends true ? T['_']['table']['_']['columns'] : Simplify<\n\t\t\t& Record<T['_']['table']['_']['name'], T['_']['table']['_']['columns']>\n\t\t\t& {\n\t\t\t\t[K in keyof T['_']['joins'] as T['_']['joins'][K]['table']['_']['name']]:\n\t\t\t\t\tT['_']['joins'][K]['table']['_']['columns'];\n\t\t\t}\n\t\t>,\n\t\tSelectResult<\n\t\t\tAccumulateToResult<\n\t\t\t\tT,\n\t\t\t\t'single',\n\t\t\t\tT['_']['joins'],\n\t\t\t\tGetSelectTableSelection<T['_']['table']>\n\t\t\t>,\n\t\t\t'partial',\n\t\t\tT['_']['nullabilityMap']\n\t\t>,\n\t\tT['_']['nullabilityMap'],\n\t\tT['_']['joins'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type PgUpdateReturning<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFields,\n> = PgUpdateWithout<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['from'],\n\t\tTSelectedFields,\n\t\tSelectResult<\n\t\t\tAccumulateToResult<\n\t\t\t\tT,\n\t\t\t\t'partial',\n\t\t\t\tT['_']['joins'],\n\t\t\t\tTSelectedFields\n\t\t\t>,\n\t\t\t'partial',\n\t\t\tT['_']['nullabilityMap']\n\t\t>,\n\t\tT['_']['nullabilityMap'],\n\t\tT['_']['joins'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type PgUpdatePrepare<T extends AnyPgUpdate> = PgPreparedQuery<\n\tPreparedQueryConfig & {\n\t\texecute: T['_']['returning'] extends undefined ? PgQueryResultKind<T['_']['queryResult'], never>\n\t\t\t: T['_']['returning'][];\n\t}\n>;\n\nexport type PgUpdateDynamic<T extends AnyPgUpdate> = PgUpdate<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['from'],\n\tT['_']['returning'],\n\tT['_']['nullabilityMap']\n>;\n\nexport type PgUpdate<\n\tTTable extends PgTable = PgTable,\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL | undefined = undefined,\n\tTSelectedFields extends ColumnsSelection | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined,\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<TTable['_']['name'], 'not-null'>,\n\tTJoins extends Join[] = [],\n> = PgUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, true, never>;\n\nexport type AnyPgUpdate = PgUpdateBase<any, any, any, any, any, any, any, any, any>;\n\nexport interface PgUpdateBase<\n\tTTable extends PgTable,\n\tTQueryResult extends PgQueryResultHKT,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL | undefined = undefined,\n\tTSelectedFields extends ColumnsSelection | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<TTable['_']['name'], 'not-null'>,\n\tTJoins extends Join[] = [],\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends\n\tTypedQueryBuilder<\n\t\tTSelectedFields,\n\t\tTReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]\n\t>,\n\tQueryPromise<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]>,\n\tRunnableQuery<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[], 'pg'>,\n\tSQLWrapper\n{\n\treadonly _: {\n\t\treadonly dialect: 'pg';\n\t\treadonly table: TTable;\n\t\treadonly joins: TJoins;\n\t\treadonly nullabilityMap: TNullabilityMap;\n\t\treadonly queryResult: TQueryResult;\n\t\treadonly from: TFrom;\n\t\treadonly selectedFields: TSelectedFields;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[];\n\t};\n}\n\nexport class PgUpdateBase<\n\tTTable extends PgTable,\n\tTQueryResult extends PgQueryResultHKT,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL | undefined = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTSelectedFields extends ColumnsSelection | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<TTable['_']['name'], 'not-null'>,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTJoins extends Join[] = [],\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]>\n\timplements\n\t\tRunnableQuery<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[], 'pg'>,\n\t\tSQLWrapper\n{\n\tstatic override readonly [entityKind]: string = 'PgUpdate';\n\n\tprivate config: PgUpdateConfig;\n\tprivate tableName: string | undefined;\n\tprivate joinsNotNullableMap: Record<string, boolean>;\n\tprotected cacheConfig?: WithCacheConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: PgSession,\n\t\tprivate dialect: PgDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList, joins: [] };\n\t\tthis.tableName = getTableLikeName(table);\n\t\tthis.joinsNotNullableMap = typeof this.tableName === 'string' ? { [this.tableName]: true } : {};\n\t}\n\n\tfrom<TFrom extends PgTable | Subquery | PgViewBase | SQL>(\n\t\tsource: TableLikeHasEmptySelection<TFrom> extends true ? DrizzleTypeError<\n\t\t\t\t\"Cannot reference a data-modifying statement subquery if it doesn't contain a `returning` clause\"\n\t\t\t>\n\t\t\t: TFrom,\n\t): PgUpdateWithJoins<this, TDynamic, TFrom> {\n\t\tconst src = source as TFrom;\n\t\tconst tableName = getTableLikeName(src);\n\t\tif (typeof tableName === 'string') {\n\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t}\n\t\tthis.config.from = src;\n\t\treturn this as any;\n\t}\n\n\tprivate getTableLikeFields(table: PgTable | Subquery | PgViewBase): Record<string, unknown> {\n\t\tif (is(table, PgTable)) {\n\t\t\treturn table[Table.Symbol.Columns];\n\t\t} else if (is(table, Subquery)) {\n\t\t\treturn table._.selectedFields;\n\t\t}\n\t\treturn table[ViewBaseConfig].selectedFields;\n\t}\n\n\tprivate createJoin<TJoinType extends JoinType>(\n\t\tjoinType: TJoinType,\n\t): PgUpdateJoinFn<this, TDynamic, TJoinType> {\n\t\treturn ((\n\t\t\ttable: PgTable | Subquery | PgViewBase | SQL,\n\t\t\ton: ((updateTable: TTable, from: TFrom) => SQL | undefined) | SQL | undefined,\n\t\t) => {\n\t\t\tconst tableName = getTableLikeName(table);\n\n\t\t\tif (typeof tableName === 'string' && this.config.joins.some((join) => join.alias === tableName)) {\n\t\t\t\tthrow new Error(`Alias \"${tableName}\" is already used in this query`);\n\t\t\t}\n\n\t\t\tif (typeof on === 'function') {\n\t\t\t\tconst from = this.config.from && !is(this.config.from, SQL)\n\t\t\t\t\t? this.getTableLikeFields(this.config.from)\n\t\t\t\t\t: undefined;\n\t\t\t\ton = on(\n\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as any,\n\t\t\t\t\tfrom && new Proxy(\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as any,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.config.joins.push({ on, table, joinType, alias: tableName });\n\n\t\t\tif (typeof tableName === 'string') {\n\t\t\t\tswitch (joinType) {\n\t\t\t\t\tcase 'left': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'inner': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'full': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this as any;\n\t\t}) as any;\n\t}\n\n\tleftJoin = this.createJoin('left');\n\n\trightJoin = this.createJoin('right');\n\n\tinnerJoin = this.createJoin('inner');\n\n\tfullJoin = this.createJoin('full');\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): PgUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the updated rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update#update-with-returning}\n\t *\n\t * @example\n\t * ```ts\n\t * // Update all cars with the green color and return all fields\n\t * const updatedCars: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning();\n\t *\n\t * // Update all cars with the green color and return only their id and brand fields\n\t * const updatedCarsIdsAndBrands: { id: number, brand: string }[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning({ id: cars.id, brand: cars.brand });\n\t * ```\n\t */\n\treturning(): PgUpdateReturningAll<this, TDynamic>;\n\treturning<TSelectedFields extends SelectedFields>(\n\t\tfields: TSelectedFields,\n\t): PgUpdateReturning<this, TDynamic, TSelectedFields>;\n\treturning(\n\t\tfields?: SelectedFields,\n\t): PgUpdateWithout<AnyPgUpdate, TDynamic, 'returning'> {\n\t\tif (!fields) {\n\t\t\tfields = Object.assign({}, this.config.table[Table.Symbol.Columns]);\n\n\t\t\tif (this.config.from) {\n\t\t\t\tconst tableName = getTableLikeName(this.config.from);\n\n\t\t\t\tif (typeof tableName === 'string' && this.config.from && !is(this.config.from, SQL)) {\n\t\t\t\t\tconst fromFields = this.getTableLikeFields(this.config.from);\n\t\t\t\t\tfields[tableName] = fromFields as any;\n\t\t\t\t}\n\n\t\t\t\tfor (const join of this.config.joins) {\n\t\t\t\t\tconst tableName = getTableLikeName(join.table);\n\n\t\t\t\t\tif (typeof tableName === 'string' && !is(join.table, SQL)) {\n\t\t\t\t\t\tconst fromFields = this.getTableLikeFields(join.table);\n\t\t\t\t\t\tfields[tableName] = fromFields as any;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.config.returningFields = fields;\n\t\tthis.config.returning = orderSelectedFields<PgColumn>(fields);\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config, this.session.extensions);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\t/** @internal */\n\t_prepare(name?: string): PgUpdatePrepare<this> {\n\t\tconst query = this.session.prepareQuery<\n\t\t\tPreparedQueryConfig & { execute: TReturning[] }\n\t\t>(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t\tname,\n\t\t\ttrue,\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\ttype: 'insert',\n\t\t\t\ttables: extractUsedTable(this.config.table),\n\t\t\t},\n\t\t\tthis.cacheConfig,\n\t\t\t{\n\t\t\t\tquery: 'update',\n\t\t\t\tconfig: this.config,\n\t\t\t\tdialect: this.dialect,\n\t\t\t\tsession: this.session,\n\t\t\t},\n\t\t);\n\t\tquery.joinsNotNullableMap = this.joinsNotNullableMap;\n\t\treturn query;\n\t}\n\n\tprepare(name: string): PgUpdatePrepare<this> {\n\t\treturn this._prepare(name);\n\t}\n\n\tprivate authToken?: NeonAuthToken;\n\t/** @internal */\n\tsetToken(token?: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\toverride execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this._prepare().execute(placeholderValues, this.authToken);\n\t};\n\n\t/** @internal */\n\tgetSelectedFields(): this['_']['selectedFields'] {\n\t\treturn (\n\t\t\tthis.config.returningFields\n\t\t\t\t? new Proxy(\n\t\t\t\t\tthis.config.returningFields,\n\t\t\t\t\tnew SelectionProxyHandler({\n\t\t\t\t\t\talias: getTableName(this.config.table),\n\t\t\t\t\t\tsqlAliasedBehavior: 'alias',\n\t\t\t\t\t\tsqlBehavior: 'error',\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t: undefined\n\t\t) as this['_']['selectedFields'];\n\t}\n\n\t$dynamic(): PgUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n"],"mappings":"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","names":["tableName"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/query-builders/update.ts"],"sourcesContent":["import type { WithCacheConfig } from '~/cache/core/types.ts';\nimport type { GetColumnData } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport type {\n\tPgPreparedQuery,\n\tPgQueryResultHKT,\n\tPgQueryResultKind,\n\tPgSession,\n\tPreparedQueryConfig,\n} from '~/pg-core/session.ts';\nimport { PgTable } from '~/pg-core/table.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type {\n\tAppendToNullabilityMap,\n\tAppendToResult,\n\tGetSelectTableName,\n\tGetSelectTableSelection,\n\tJoinNullability,\n\tJoinType,\n\tSelectMode,\n\tSelectResult,\n} from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { type ColumnsSelection, type Query, SQL, type SQLWrapper } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { getTableName, Table } from '~/table.ts';\nimport {\n\ttype Assume,\n\ttype DrizzleTypeError,\n\ttype Equal,\n\tgetTableLikeName,\n\tmapUpdateSet,\n\ttype NeonAuthToken,\n\torderSelectedFields,\n\ttype Simplify,\n\ttype UpdateSet,\n} from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { PgColumn } from '../columns/common.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { PgViewBase } from '../view-base.ts';\nimport type {\n\tPgSelectJoinConfig,\n\tSelectedFields,\n\tSelectedFieldsOrdered,\n\tTableLikeHasEmptySelection,\n} from './select.types.ts';\n\nexport interface PgUpdateConfig {\n\twhere?: SQL | undefined;\n\tset: UpdateSet;\n\ttable: PgTable;\n\tfrom?: PgTable | Subquery | PgViewBase | SQL;\n\tjoins: PgSelectJoinConfig[];\n\treturningFields?: SelectedFields;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type PgUpdateSetSource<TTable extends PgTable> =\n\t& {\n\t\t[Key in keyof TTable['$inferInsert']]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key]>\n\t\t\t| SQL\n\t\t\t| PgColumn\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport class PgUpdateBuilder<TTable extends PgTable, TQueryResult extends PgQueryResultHKT> {\n\tstatic readonly [entityKind]: string = 'PgUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: PgSession,\n\t\tprivate dialect: PgDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tprivate authToken?: NeonAuthToken;\n\tsetToken(token: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\tset(\n\t\tvalues: PgUpdateSetSource<TTable>,\n\t): PgUpdateWithout<PgUpdateBase<TTable, TQueryResult>, false, 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'> {\n\t\treturn new PgUpdateBase<TTable, TQueryResult>(\n\t\t\tthis.table,\n\t\t\tmapUpdateSet(this.table, values),\n\t\t\tthis.session,\n\t\t\tthis.dialect,\n\t\t\tthis.withList,\n\t\t).setToken(this.authToken);\n\t}\n}\n\nexport type PgUpdateWithout<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['from'],\n\t\tT['_']['selectedFields'],\n\t\tT['_']['returning'],\n\t\tT['_']['nullabilityMap'],\n\t\tT['_']['joins'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type PgUpdateWithJoins<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL,\n> = TDynamic extends true ? T : Omit<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tTFrom,\n\t\tT['_']['selectedFields'],\n\t\tT['_']['returning'],\n\t\tAppendToNullabilityMap<T['_']['nullabilityMap'], GetSelectTableName<TFrom>, 'inner'>,\n\t\t[...T['_']['joins'], {\n\t\t\tname: GetSelectTableName<TFrom>;\n\t\t\tjoinType: 'inner';\n\t\t\ttable: TFrom;\n\t\t}],\n\t\tTDynamic,\n\t\tExclude<T['_']['excludedMethods'] | 'from', 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>\n\t>,\n\tExclude<T['_']['excludedMethods'] | 'from', 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>\n>;\n\nexport type PgUpdateJoinFn<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTJoinType extends JoinType,\n> = <\n\tTJoinedTable extends PgTable | Subquery | PgViewBase | SQL,\n>(\n\ttable: TableLikeHasEmptySelection<TJoinedTable> extends true ? DrizzleTypeError<\n\t\t\t\"Cannot reference a data-modifying statement subquery if it doesn't contain a `returning` clause\"\n\t\t>\n\t\t: TJoinedTable,\n\ton:\n\t\t| (\n\t\t\t(\n\t\t\t\tupdateTable: T['_']['table']['_']['columns'],\n\t\t\t\tfrom: T['_']['from'] extends PgTable ? T['_']['from']['_']['columns']\n\t\t\t\t\t: T['_']['from'] extends Subquery | PgViewBase ? T['_']['from']['_']['selectedFields']\n\t\t\t\t\t: never,\n\t\t\t) => SQL | undefined\n\t\t)\n\t\t| SQL\n\t\t| undefined,\n) => PgUpdateJoin<T, TDynamic, TJoinType, TJoinedTable>;\n\nexport type PgUpdateJoin<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTJoinType extends JoinType,\n\tTJoinedTable extends PgTable | Subquery | PgViewBase | SQL,\n> = TDynamic extends true ? T : PgUpdateBase<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['from'],\n\tT['_']['selectedFields'],\n\tT['_']['returning'],\n\tAppendToNullabilityMap<T['_']['nullabilityMap'], GetSelectTableName<TJoinedTable>, TJoinType>,\n\t[...T['_']['joins'], {\n\t\tname: GetSelectTableName<TJoinedTable>;\n\t\tjoinType: TJoinType;\n\t\ttable: TJoinedTable;\n\t}],\n\tTDynamic,\n\tT['_']['excludedMethods']\n>;\n\ntype Join = {\n\tname: string | undefined;\n\tjoinType: JoinType;\n\ttable: PgTable | Subquery | PgViewBase | SQL;\n};\n\ntype AccumulateToResult<\n\tT extends AnyPgUpdate,\n\tTSelectMode extends SelectMode,\n\tTJoins extends Join[],\n\tTSelectedFields extends ColumnsSelection,\n> = TJoins extends [infer TJoin extends Join, ...infer TRest extends Join[]] ? AccumulateToResult<\n\t\tT,\n\t\tTSelectMode extends 'partial' ? TSelectMode : 'multiple',\n\t\tTRest,\n\t\tAppendToResult<\n\t\t\tT['_']['table']['_']['name'],\n\t\t\tTSelectedFields,\n\t\t\tTJoin['name'],\n\t\t\tTJoin['table'] extends Table ? TJoin['table']['_']['columns']\n\t\t\t\t: TJoin['table'] extends Subquery ? Assume<TJoin['table']['_']['selectedFields'], SelectedFields>\n\t\t\t\t: never,\n\t\t\tTSelectMode extends 'partial' ? TSelectMode : 'multiple'\n\t\t>\n\t>\n\t: TSelectedFields;\n\nexport type PgUpdateReturningAll<T extends AnyPgUpdate, TDynamic extends boolean> = PgUpdateWithout<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['from'],\n\t\tEqual<T['_']['joins'], []> extends true ? T['_']['table']['_']['columns'] : Simplify<\n\t\t\t& Record<T['_']['table']['_']['name'], T['_']['table']['_']['columns']>\n\t\t\t& {\n\t\t\t\t[K in keyof T['_']['joins'] as T['_']['joins'][K]['table']['_']['name']]:\n\t\t\t\t\tT['_']['joins'][K]['table']['_']['columns'];\n\t\t\t}\n\t\t>,\n\t\tSelectResult<\n\t\t\tAccumulateToResult<\n\t\t\t\tT,\n\t\t\t\t'single',\n\t\t\t\tT['_']['joins'],\n\t\t\t\tGetSelectTableSelection<T['_']['table']>\n\t\t\t>,\n\t\t\t'partial',\n\t\t\tT['_']['nullabilityMap']\n\t\t>,\n\t\tT['_']['nullabilityMap'],\n\t\tT['_']['joins'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type PgUpdateReturning<\n\tT extends AnyPgUpdate,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFields,\n> = PgUpdateWithout<\n\tPgUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['from'],\n\t\tTSelectedFields,\n\t\tSelectResult<\n\t\t\tAccumulateToResult<\n\t\t\t\tT,\n\t\t\t\t'partial',\n\t\t\t\tT['_']['joins'],\n\t\t\t\tTSelectedFields\n\t\t\t>,\n\t\t\t'partial',\n\t\t\tT['_']['nullabilityMap']\n\t\t>,\n\t\tT['_']['nullabilityMap'],\n\t\tT['_']['joins'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type PgUpdatePrepare<T extends AnyPgUpdate> = PgPreparedQuery<\n\tPreparedQueryConfig & {\n\t\texecute: T['_']['returning'] extends undefined ? PgQueryResultKind<T['_']['queryResult'], never>\n\t\t\t: T['_']['returning'][];\n\t}\n>;\n\nexport type PgUpdateDynamic<T extends AnyPgUpdate> = PgUpdate<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['from'],\n\tT['_']['returning'],\n\tT['_']['nullabilityMap']\n>;\n\nexport type PgUpdate<\n\tTTable extends PgTable = PgTable,\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL | undefined = undefined,\n\tTSelectedFields extends ColumnsSelection | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined,\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<TTable['_']['name'], 'not-null'>,\n\tTJoins extends Join[] = [],\n> = PgUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, true, never>;\n\nexport type AnyPgUpdate = PgUpdateBase<any, any, any, any, any, any, any, any, any>;\n\nexport interface PgUpdateBase<\n\tTTable extends PgTable,\n\tTQueryResult extends PgQueryResultHKT,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL | undefined = undefined,\n\tTSelectedFields extends ColumnsSelection | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<TTable['_']['name'], 'not-null'>,\n\tTJoins extends Join[] = [],\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends\n\tTypedQueryBuilder<\n\t\tTSelectedFields,\n\t\tTReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]\n\t>,\n\tQueryPromise<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]>,\n\tRunnableQuery<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[], 'pg'>,\n\tSQLWrapper\n{\n\treadonly _: {\n\t\treadonly dialect: 'pg';\n\t\treadonly table: TTable;\n\t\treadonly joins: TJoins;\n\t\treadonly nullabilityMap: TNullabilityMap;\n\t\treadonly queryResult: TQueryResult;\n\t\treadonly from: TFrom;\n\t\treadonly selectedFields: TSelectedFields;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[];\n\t};\n}\n\nexport class PgUpdateBase<\n\tTTable extends PgTable,\n\tTQueryResult extends PgQueryResultHKT,\n\tTFrom extends PgTable | Subquery | PgViewBase | SQL | undefined = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTSelectedFields extends ColumnsSelection | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<TTable['_']['name'], 'not-null'>,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTJoins extends Join[] = [],\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]>\n\timplements\n\t\tRunnableQuery<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[], 'pg'>,\n\t\tSQLWrapper\n{\n\tstatic override readonly [entityKind]: string = 'PgUpdate';\n\n\tprivate config: PgUpdateConfig;\n\tprivate tableName: string | undefined;\n\tprivate joinsNotNullableMap: Record<string, boolean>;\n\tprotected cacheConfig?: WithCacheConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: PgSession,\n\t\tprivate dialect: PgDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList, joins: [] };\n\t\tthis.tableName = getTableLikeName(table);\n\t\tthis.joinsNotNullableMap = typeof this.tableName === 'string' ? { [this.tableName]: true } : {};\n\t}\n\n\tfrom<TFrom extends PgTable | Subquery | PgViewBase | SQL>(\n\t\tsource: TableLikeHasEmptySelection<TFrom> extends true ? DrizzleTypeError<\n\t\t\t\t\"Cannot reference a data-modifying statement subquery if it doesn't contain a `returning` clause\"\n\t\t\t>\n\t\t\t: TFrom,\n\t): PgUpdateWithJoins<this, TDynamic, TFrom> {\n\t\tconst src = source as TFrom;\n\t\tconst tableName = getTableLikeName(src);\n\t\tif (typeof tableName === 'string') {\n\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t}\n\t\tthis.config.from = src;\n\t\treturn this as any;\n\t}\n\n\tprivate getTableLikeFields(table: PgTable | Subquery | PgViewBase): Record<string, unknown> {\n\t\tif (is(table, PgTable)) {\n\t\t\treturn table[Table.Symbol.Columns];\n\t\t} else if (is(table, Subquery)) {\n\t\t\treturn table._.selectedFields;\n\t\t}\n\t\treturn table[ViewBaseConfig].selectedFields;\n\t}\n\n\tprivate createJoin<TJoinType extends JoinType>(\n\t\tjoinType: TJoinType,\n\t): PgUpdateJoinFn<this, TDynamic, TJoinType> {\n\t\treturn ((\n\t\t\ttable: PgTable | Subquery | PgViewBase | SQL,\n\t\t\ton: ((updateTable: TTable, from: TFrom) => SQL | undefined) | SQL | undefined,\n\t\t) => {\n\t\t\tconst tableName = getTableLikeName(table);\n\n\t\t\tif (typeof tableName === 'string' && this.config.joins.some((join) => join.alias === tableName)) {\n\t\t\t\tthrow new Error(`Alias \"${tableName}\" is already used in this query`);\n\t\t\t}\n\n\t\t\tif (typeof on === 'function') {\n\t\t\t\tconst from = this.config.from && !is(this.config.from, SQL)\n\t\t\t\t\t? this.getTableLikeFields(this.config.from)\n\t\t\t\t\t: undefined;\n\t\t\t\ton = on(\n\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as any,\n\t\t\t\t\tfrom && new Proxy(\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as any,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.config.joins.push({ on, table, joinType, alias: tableName });\n\n\t\t\tif (typeof tableName === 'string') {\n\t\t\t\tswitch (joinType) {\n\t\t\t\t\tcase 'left': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'inner': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'full': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this as any;\n\t\t}) as any;\n\t}\n\n\tleftJoin = this.createJoin('left');\n\n\trightJoin = this.createJoin('right');\n\n\tinnerJoin = this.createJoin('inner');\n\n\tfullJoin = this.createJoin('full');\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * await db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): PgUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the updated rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update#update-with-returning}\n\t *\n\t * @example\n\t * ```ts\n\t * // Update all cars with the green color and return all fields\n\t * const updatedCars: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning();\n\t *\n\t * // Update all cars with the green color and return only their id and brand fields\n\t * const updatedCarsIdsAndBrands: { id: number, brand: string }[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning({ id: cars.id, brand: cars.brand });\n\t * ```\n\t */\n\treturning(): PgUpdateReturningAll<this, TDynamic>;\n\treturning<TSelectedFields extends SelectedFields>(\n\t\tfields: TSelectedFields,\n\t): PgUpdateReturning<this, TDynamic, TSelectedFields>;\n\treturning(\n\t\tfields?: SelectedFields,\n\t): PgUpdateWithout<AnyPgUpdate, TDynamic, 'returning'> {\n\t\tif (!fields) {\n\t\t\tfields = Object.assign({}, this.config.table[Table.Symbol.Columns]);\n\n\t\t\tif (this.config.from) {\n\t\t\t\tconst tableName = getTableLikeName(this.config.from);\n\n\t\t\t\tif (typeof tableName === 'string' && this.config.from && !is(this.config.from, SQL)) {\n\t\t\t\t\tconst fromFields = this.getTableLikeFields(this.config.from);\n\t\t\t\t\tfields[tableName] = fromFields as any;\n\t\t\t\t}\n\n\t\t\t\tfor (const join of this.config.joins) {\n\t\t\t\t\tconst tableName = getTableLikeName(join.table);\n\n\t\t\t\t\tif (typeof tableName === 'string' && !is(join.table, SQL)) {\n\t\t\t\t\t\tconst fromFields = this.getTableLikeFields(join.table);\n\t\t\t\t\t\tfields[tableName] = fromFields as any;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.config.returningFields = fields;\n\t\tthis.config.returning = orderSelectedFields<PgColumn>(fields);\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\t/** @internal */\n\t_prepare(name?: string): PgUpdatePrepare<this> {\n\t\tconst query = this.session.prepareQuery<\n\t\t\tPreparedQueryConfig & { execute: TReturning[] }\n\t\t>(this.dialect.sqlToQuery(this.getSQL()), this.config.returning, name, true, undefined, {\n\t\t\ttype: 'insert',\n\t\t\ttables: extractUsedTable(this.config.table),\n\t\t}, this.cacheConfig);\n\t\tquery.joinsNotNullableMap = this.joinsNotNullableMap;\n\t\treturn query;\n\t}\n\n\tprepare(name: string): PgUpdatePrepare<this> {\n\t\treturn this._prepare(name);\n\t}\n\n\tprivate authToken?: NeonAuthToken;\n\t/** @internal */\n\tsetToken(token?: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\toverride execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this._prepare().execute(placeholderValues, this.authToken);\n\t};\n\n\t/** @internal */\n\tgetSelectedFields(): this['_']['selectedFields'] {\n\t\treturn (\n\t\t\tthis.config.returningFields\n\t\t\t\t? new Proxy(\n\t\t\t\t\tthis.config.returningFields,\n\t\t\t\t\tnew SelectionProxyHandler({\n\t\t\t\t\t\talias: getTableName(this.config.table),\n\t\t\t\t\t\tsqlAliasedBehavior: 'alias',\n\t\t\t\t\t\tsqlBehavior: 'error',\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t: undefined\n\t\t) as this['_']['selectedFields'];\n\t}\n\n\t$dynamic(): PgUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n"],"mappings":"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","names":["tableName"]}
|
package/pg-core/session.cjs
CHANGED
|
@@ -31,13 +31,11 @@ var import_sql = require("../sql/index.cjs");
|
|
|
31
31
|
var import_tracing = require("../tracing.cjs");
|
|
32
32
|
var import_db = require("./db.cjs");
|
|
33
33
|
class PgPreparedQuery {
|
|
34
|
-
constructor(query, cache, queryMetadata, cacheConfig
|
|
34
|
+
constructor(query, cache, queryMetadata, cacheConfig) {
|
|
35
35
|
this.query = query;
|
|
36
36
|
this.cache = cache;
|
|
37
37
|
this.queryMetadata = queryMetadata;
|
|
38
38
|
this.cacheConfig = cacheConfig;
|
|
39
|
-
this.extensions = extensions;
|
|
40
|
-
this.hookContext = hookContext;
|
|
41
39
|
if (cache && cache.strategy() === "all" && cacheConfig === void 0) {
|
|
42
40
|
this.cacheConfig = { enable: true, autoInvalidate: true };
|
|
43
41
|
}
|
|
@@ -46,7 +44,6 @@ class PgPreparedQuery {
|
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
authToken;
|
|
49
|
-
extensionMetas = [];
|
|
50
47
|
getQuery() {
|
|
51
48
|
return this.query;
|
|
52
49
|
}
|
|
@@ -127,51 +124,10 @@ class PgPreparedQuery {
|
|
|
127
124
|
throw new import_errors2.DrizzleQueryError(queryString, params, e);
|
|
128
125
|
}
|
|
129
126
|
}
|
|
130
|
-
/** @internal */
|
|
131
|
-
async execute(placeholderValues, token) {
|
|
132
|
-
const {
|
|
133
|
-
extensions,
|
|
134
|
-
hookContext,
|
|
135
|
-
query: {
|
|
136
|
-
sql: queryString,
|
|
137
|
-
params
|
|
138
|
-
},
|
|
139
|
-
extensionMetas
|
|
140
|
-
} = this;
|
|
141
|
-
if (!extensions?.length || !hookContext) return await this._execute(placeholderValues, token);
|
|
142
|
-
await import_tracing.tracer.startActiveSpan("drizzle.hooks.beforeExecute", async () => {
|
|
143
|
-
for (const [i, extension] of extensions.entries()) {
|
|
144
|
-
const ext = extension;
|
|
145
|
-
const config = {
|
|
146
|
-
...hookContext,
|
|
147
|
-
stage: "before",
|
|
148
|
-
sql: queryString,
|
|
149
|
-
params,
|
|
150
|
-
placeholders: placeholderValues,
|
|
151
|
-
metadata: extensionMetas[i]
|
|
152
|
-
};
|
|
153
|
-
await ext.hook(config);
|
|
154
|
-
extensionMetas[i] = config.metadata;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
const res = await this._execute(placeholderValues, token);
|
|
158
|
-
return await import_tracing.tracer.startActiveSpan("drizzle.hooks.afterExecute", async () => {
|
|
159
|
-
for (const [i, ext] of extensions.entries()) {
|
|
160
|
-
await ext.hook({
|
|
161
|
-
...hookContext,
|
|
162
|
-
metadata: extensionMetas[i],
|
|
163
|
-
stage: "after",
|
|
164
|
-
data: res
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
return res;
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
127
|
}
|
|
171
128
|
class PgSession {
|
|
172
|
-
constructor(dialect
|
|
129
|
+
constructor(dialect) {
|
|
173
130
|
this.dialect = dialect;
|
|
174
|
-
this.extensions = extensions;
|
|
175
131
|
}
|
|
176
132
|
static [import_entity.entityKind] = "PgSession";
|
|
177
133
|
/** @internal */
|
|
@@ -205,8 +161,8 @@ class PgSession {
|
|
|
205
161
|
}
|
|
206
162
|
}
|
|
207
163
|
class PgTransaction extends import_db.PgDatabase {
|
|
208
|
-
constructor(dialect, session, schema, nestedIndex = 0
|
|
209
|
-
super(dialect, session, schema
|
|
164
|
+
constructor(dialect, session, schema, nestedIndex = 0) {
|
|
165
|
+
super(dialect, session, schema);
|
|
210
166
|
this.schema = schema;
|
|
211
167
|
this.nestedIndex = nestedIndex;
|
|
212
168
|
}
|
package/pg-core/session.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/pg-core/session.ts"],"sourcesContent":["import { type Cache, hashQuery, NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport { DrizzleQueryError } from '~/errors/index.ts';\nimport type { BlankPgHookContext, DrizzlePgExtension, DrizzlePgHookContext } from '~/extension-core/pg/index.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { type Query, type SQL, sql } from '~/sql/index.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { NeonAuthToken } from '~/utils.ts';\nimport { PgDatabase } from './db.ts';\nimport type { PgDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\texecute: unknown;\n\tall: unknown;\n\tvalues: unknown;\n}\n\nexport abstract class PgPreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tconstructor(\n\t\tprotected query: Query,\n\t\t// cache instance\n\t\tprivate cache: Cache | undefined,\n\t\t// per query related metadata\n\t\tprivate queryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprivate cacheConfig?: WithCacheConfig,\n\t\tprotected extensions?: DrizzlePgExtension[],\n\t\tprotected hookContext?: BlankPgHookContext,\n\t) {\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enable: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enable) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\t}\n\n\tprotected authToken?: NeonAuthToken;\n\tprivate extensionMetas: unknown[] = [];\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tmapResult(response: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn response;\n\t}\n\n\t/** @internal */\n\tsetToken(token?: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\tstatic readonly [entityKind]: string = 'PgPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (this.cache === undefined || is(this.cache, NoopCache) || this.queryMetadata === undefined) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any mutations, if globally is false\n\t\tif (this.cacheConfig && !this.cacheConfig.enable) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (\n\t\t\t(\n\t\t\t\tthis.queryMetadata.type === 'insert' || this.queryMetadata.type === 'update'\n\t\t\t\t|| this.queryMetadata.type === 'delete'\n\t\t\t) && this.queryMetadata.tables.length > 0\n\t\t) {\n\t\t\ttry {\n\t\t\t\tconst [res] = await Promise.all([\n\t\t\t\t\tquery(),\n\t\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t\t]);\n\t\t\t\treturn res;\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.queryMetadata.type === 'select') {\n\t\t\tconst fromCache = await this.cache.get(\n\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\tthis.queryMetadata.tables,\n\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\tthis.cacheConfig.autoInvalidate,\n\t\t\t);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = await query();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t\t}\n\t\t\t\t// put actual key\n\t\t\t\tawait this.cache.put(\n\t\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tthis.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],\n\t\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\t\tthis.cacheConfig.config,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\t\ttry {\n\t\t\treturn await query();\n\t\t} catch (e) {\n\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t}\n\t}\n\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']> {\n\t\tconst {\n\t\t\textensions,\n\t\t\thookContext,\n\t\t\tquery: {\n\t\t\t\tsql: queryString,\n\t\t\t\tparams,\n\t\t\t},\n\t\t\textensionMetas,\n\t\t} = this;\n\t\tif (!extensions?.length || !hookContext) return await this._execute(placeholderValues, token);\n\n\t\tawait tracer.startActiveSpan('drizzle.hooks.beforeExecute', async () => {\n\t\t\tfor (const [i, extension] of extensions.entries()) {\n\t\t\t\tconst ext = extension!;\n\t\t\t\tconst config = {\n\t\t\t\t\t...hookContext,\n\t\t\t\t\tstage: 'before',\n\t\t\t\t\tsql: queryString,\n\t\t\t\t\tparams: params,\n\t\t\t\t\tplaceholders: placeholderValues,\n\t\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t\t} as DrizzlePgHookContext;\n\n\t\t\t\tawait ext.hook(config);\n\t\t\t\textensionMetas[i] = config.metadata;\n\t\t\t}\n\t\t});\n\n\t\tconst res = await this._execute(placeholderValues, token);\n\n\t\treturn await tracer.startActiveSpan('drizzle.hooks.afterExecute', async () => {\n\t\t\tfor (const [i, ext] of extensions.entries()) {\n\t\t\t\tawait ext.hook({\n\t\t\t\t\t...hookContext,\n\t\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t\t\tstage: 'after',\n\t\t\t\t\tdata: res as unknown[],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn res;\n\t\t});\n\t}\n\n\tprotected abstract _execute(\n\t\tplaceholderValues?: Record<string, unknown>,\n\t\ttoken?: NeonAuthToken,\n\t): Promise<T['execute']>;\n\n\t/** @internal */\n\tabstract all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface PgTransactionConfig {\n\tisolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n\taccessMode?: 'read only' | 'read write';\n\tdeferrable?: boolean;\n}\n\nexport abstract class PgSession<\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'PgSession';\n\n\tconstructor(protected dialect: PgDialect, readonly extensions?: DrizzlePgExtension[]) {}\n\n\tabstract prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t\thookContext?: BlankPgHookContext,\n\t): PgPreparedQuery<T>;\n\n\texecute<T>(query: SQL): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T> {\n\t\treturn tracer.startActiveSpan('drizzle.operation', () => {\n\t\t\tconst prepared = tracer.startActiveSpan('drizzle.prepareQuery', () => {\n\t\t\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn prepared.setToken(token).execute(undefined, token);\n\t\t});\n\t}\n\n\tall<T = unknown>(query: SQL): Promise<T[]> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { all: T[] }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t).all();\n\t}\n\n\tasync count(sql: SQL): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<[{ count: string }]>(sql, token);\n\n\t\treturn Number(\n\t\t\tres[0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T>;\n}\n\nexport abstract class PgTransaction<\n\tTQueryResult extends PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends PgDatabase<TQueryResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\tsession: PgSession<any, any, any>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t\textensions?: DrizzlePgExtension[],\n\t) {\n\t\tsuper(dialect, session, schema, extensions);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** @internal */\n\tgetTransactionConfigSQL(config: PgTransactionConfig): SQL {\n\t\tconst chunks: string[] = [];\n\t\tif (config.isolationLevel) {\n\t\t\tchunks.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\t\tif (config.accessMode) {\n\t\t\tchunks.push(config.accessMode);\n\t\t}\n\t\tif (typeof config.deferrable === 'boolean') {\n\t\t\tchunks.push(config.deferrable ? 'deferrable' : 'not deferrable');\n\t\t}\n\t\treturn sql.raw(chunks.join(' '));\n\t}\n\n\tsetTransaction(config: PgTransactionConfig): Promise<void> {\n\t\treturn this.session.execute(sql`set transaction ${this.getTransactionConfigSQL(config)}`);\n\t}\n\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PgQueryResultHKT {\n\treadonly $brand: 'PgQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport type PgQueryResultKind<TKind extends PgQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n"],"mappings":"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","names":["import_errors","sql"]}
|
|
1
|
+
{"version":3,"sources":["../../src/pg-core/session.ts"],"sourcesContent":["import { type Cache, hashQuery, NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport { DrizzleQueryError } from '~/errors/index.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { type Query, type SQL, sql } from '~/sql/index.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { NeonAuthToken } from '~/utils.ts';\nimport { PgDatabase } from './db.ts';\nimport type { PgDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\texecute: unknown;\n\tall: unknown;\n\tvalues: unknown;\n}\n\nexport abstract class PgPreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tconstructor(\n\t\tprotected query: Query,\n\t\t// cache instance\n\t\tprivate cache: Cache | undefined,\n\t\t// per query related metadata\n\t\tprivate queryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprivate cacheConfig?: WithCacheConfig,\n\t) {\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enable: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enable) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\t}\n\n\tprotected authToken?: NeonAuthToken;\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tmapResult(response: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn response;\n\t}\n\n\t/** @internal */\n\tsetToken(token?: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\tstatic readonly [entityKind]: string = 'PgPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (this.cache === undefined || is(this.cache, NoopCache) || this.queryMetadata === undefined) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any mutations, if globally is false\n\t\tif (this.cacheConfig && !this.cacheConfig.enable) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (\n\t\t\t(\n\t\t\t\tthis.queryMetadata.type === 'insert' || this.queryMetadata.type === 'update'\n\t\t\t\t|| this.queryMetadata.type === 'delete'\n\t\t\t) && this.queryMetadata.tables.length > 0\n\t\t) {\n\t\t\ttry {\n\t\t\t\tconst [res] = await Promise.all([\n\t\t\t\t\tquery(),\n\t\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t\t]);\n\t\t\t\treturn res;\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.queryMetadata.type === 'select') {\n\t\t\tconst fromCache = await this.cache.get(\n\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\tthis.queryMetadata.tables,\n\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\tthis.cacheConfig.autoInvalidate,\n\t\t\t);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = await query();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t\t}\n\t\t\t\t// put actual key\n\t\t\t\tawait this.cache.put(\n\t\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tthis.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],\n\t\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\t\tthis.cacheConfig.config,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\t\ttry {\n\t\t\treturn await query();\n\t\t} catch (e) {\n\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t}\n\t}\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\t/** @internal */\n\tabstract execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tabstract execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;\n\n\t/** @internal */\n\tabstract all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface PgTransactionConfig {\n\tisolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n\taccessMode?: 'read only' | 'read write';\n\tdeferrable?: boolean;\n}\n\nexport abstract class PgSession<\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'PgSession';\n\n\tconstructor(protected dialect: PgDialect) {}\n\n\tabstract prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T>;\n\n\texecute<T>(query: SQL): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T> {\n\t\treturn tracer.startActiveSpan('drizzle.operation', () => {\n\t\t\tconst prepared = tracer.startActiveSpan('drizzle.prepareQuery', () => {\n\t\t\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn prepared.setToken(token).execute(undefined, token);\n\t\t});\n\t}\n\n\tall<T = unknown>(query: SQL): Promise<T[]> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { all: T[] }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t).all();\n\t}\n\n\tasync count(sql: SQL): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<[{ count: string }]>(sql, token);\n\n\t\treturn Number(\n\t\t\tres[0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T>;\n}\n\nexport abstract class PgTransaction<\n\tTQueryResult extends PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends PgDatabase<TQueryResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\tsession: PgSession<any, any, any>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** @internal */\n\tgetTransactionConfigSQL(config: PgTransactionConfig): SQL {\n\t\tconst chunks: string[] = [];\n\t\tif (config.isolationLevel) {\n\t\t\tchunks.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\t\tif (config.accessMode) {\n\t\t\tchunks.push(config.accessMode);\n\t\t}\n\t\tif (typeof config.deferrable === 'boolean') {\n\t\t\tchunks.push(config.deferrable ? 'deferrable' : 'not deferrable');\n\t\t}\n\t\treturn sql.raw(chunks.join(' '));\n\t}\n\n\tsetTransaction(config: PgTransactionConfig): Promise<void> {\n\t\treturn this.session.execute(sql`set transaction ${this.getTransactionConfigSQL(config)}`);\n\t}\n\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PgQueryResultHKT {\n\treadonly $brand: 'PgQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport type PgQueryResultKind<TKind extends PgQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n"],"mappings":"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","names":["import_errors","sql"]}
|
package/pg-core/session.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type Cache } from "../cache/core/cache.cjs";
|
|
2
2
|
import type { WithCacheConfig } from "../cache/core/types.cjs";
|
|
3
3
|
import { entityKind } from "../entity.cjs";
|
|
4
|
-
import type { BlankPgHookContext, DrizzlePgExtension } from "../extension-core/pg/index.cjs";
|
|
5
4
|
import type { TablesRelationalConfig } from "../relations.cjs";
|
|
6
5
|
import type { PreparedQuery } from "../session.cjs";
|
|
7
6
|
import { type Query, type SQL } from "../sql/index.cjs";
|
|
@@ -19,19 +18,15 @@ export declare abstract class PgPreparedQuery<T extends PreparedQueryConfig> imp
|
|
|
19
18
|
private cache;
|
|
20
19
|
private queryMetadata;
|
|
21
20
|
private cacheConfig?;
|
|
22
|
-
protected extensions?: DrizzlePgExtension[] | undefined;
|
|
23
|
-
protected hookContext?: BlankPgHookContext | undefined;
|
|
24
21
|
constructor(query: Query, cache: Cache | undefined, queryMetadata: {
|
|
25
22
|
type: 'select' | 'update' | 'delete' | 'insert';
|
|
26
23
|
tables: string[];
|
|
27
|
-
} | undefined, cacheConfig?: WithCacheConfig | undefined
|
|
24
|
+
} | undefined, cacheConfig?: WithCacheConfig | undefined);
|
|
28
25
|
protected authToken?: NeonAuthToken;
|
|
29
|
-
private extensionMetas;
|
|
30
26
|
getQuery(): Query;
|
|
31
27
|
mapResult(response: unknown, _isFromBatch?: boolean): unknown;
|
|
32
28
|
static readonly [entityKind]: string;
|
|
33
|
-
execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
34
|
-
protected abstract _execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;
|
|
29
|
+
abstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
35
30
|
}
|
|
36
31
|
export interface PgTransactionConfig {
|
|
37
32
|
isolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';
|
|
@@ -40,13 +35,12 @@ export interface PgTransactionConfig {
|
|
|
40
35
|
}
|
|
41
36
|
export declare abstract class PgSession<TQueryResult extends PgQueryResultHKT = PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> {
|
|
42
37
|
protected dialect: PgDialect;
|
|
43
|
-
readonly extensions?: DrizzlePgExtension[] | undefined;
|
|
44
38
|
static readonly [entityKind]: string;
|
|
45
|
-
constructor(dialect: PgDialect
|
|
39
|
+
constructor(dialect: PgDialect);
|
|
46
40
|
abstract prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => T['execute'], queryMetadata?: {
|
|
47
41
|
type: 'select' | 'update' | 'delete' | 'insert';
|
|
48
42
|
tables: string[];
|
|
49
|
-
}, cacheConfig?: WithCacheConfig
|
|
43
|
+
}, cacheConfig?: WithCacheConfig): PgPreparedQuery<T>;
|
|
50
44
|
execute<T>(query: SQL): Promise<T>;
|
|
51
45
|
all<T = unknown>(query: SQL): Promise<T[]>;
|
|
52
46
|
count(sql: SQL): Promise<number>;
|
|
@@ -64,7 +58,7 @@ export declare abstract class PgTransaction<TQueryResult extends PgQueryResultHK
|
|
|
64
58
|
fullSchema: Record<string, unknown>;
|
|
65
59
|
schema: TSchema;
|
|
66
60
|
tableNamesMap: Record<string, string>;
|
|
67
|
-
} | undefined, nestedIndex?: number
|
|
61
|
+
} | undefined, nestedIndex?: number);
|
|
68
62
|
rollback(): never;
|
|
69
63
|
setTransaction(config: PgTransactionConfig): Promise<void>;
|
|
70
64
|
abstract transaction<T>(transaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
package/pg-core/session.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type Cache } from "../cache/core/cache.js";
|
|
2
2
|
import type { WithCacheConfig } from "../cache/core/types.js";
|
|
3
3
|
import { entityKind } from "../entity.js";
|
|
4
|
-
import type { BlankPgHookContext, DrizzlePgExtension } from "../extension-core/pg/index.js";
|
|
5
4
|
import type { TablesRelationalConfig } from "../relations.js";
|
|
6
5
|
import type { PreparedQuery } from "../session.js";
|
|
7
6
|
import { type Query, type SQL } from "../sql/index.js";
|
|
@@ -19,19 +18,15 @@ export declare abstract class PgPreparedQuery<T extends PreparedQueryConfig> imp
|
|
|
19
18
|
private cache;
|
|
20
19
|
private queryMetadata;
|
|
21
20
|
private cacheConfig?;
|
|
22
|
-
protected extensions?: DrizzlePgExtension[] | undefined;
|
|
23
|
-
protected hookContext?: BlankPgHookContext | undefined;
|
|
24
21
|
constructor(query: Query, cache: Cache | undefined, queryMetadata: {
|
|
25
22
|
type: 'select' | 'update' | 'delete' | 'insert';
|
|
26
23
|
tables: string[];
|
|
27
|
-
} | undefined, cacheConfig?: WithCacheConfig | undefined
|
|
24
|
+
} | undefined, cacheConfig?: WithCacheConfig | undefined);
|
|
28
25
|
protected authToken?: NeonAuthToken;
|
|
29
|
-
private extensionMetas;
|
|
30
26
|
getQuery(): Query;
|
|
31
27
|
mapResult(response: unknown, _isFromBatch?: boolean): unknown;
|
|
32
28
|
static readonly [entityKind]: string;
|
|
33
|
-
execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
34
|
-
protected abstract _execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;
|
|
29
|
+
abstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
35
30
|
}
|
|
36
31
|
export interface PgTransactionConfig {
|
|
37
32
|
isolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';
|
|
@@ -40,13 +35,12 @@ export interface PgTransactionConfig {
|
|
|
40
35
|
}
|
|
41
36
|
export declare abstract class PgSession<TQueryResult extends PgQueryResultHKT = PgQueryResultHKT, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> {
|
|
42
37
|
protected dialect: PgDialect;
|
|
43
|
-
readonly extensions?: DrizzlePgExtension[] | undefined;
|
|
44
38
|
static readonly [entityKind]: string;
|
|
45
|
-
constructor(dialect: PgDialect
|
|
39
|
+
constructor(dialect: PgDialect);
|
|
46
40
|
abstract prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => T['execute'], queryMetadata?: {
|
|
47
41
|
type: 'select' | 'update' | 'delete' | 'insert';
|
|
48
42
|
tables: string[];
|
|
49
|
-
}, cacheConfig?: WithCacheConfig
|
|
43
|
+
}, cacheConfig?: WithCacheConfig): PgPreparedQuery<T>;
|
|
50
44
|
execute<T>(query: SQL): Promise<T>;
|
|
51
45
|
all<T = unknown>(query: SQL): Promise<T[]>;
|
|
52
46
|
count(sql: SQL): Promise<number>;
|
|
@@ -64,7 +58,7 @@ export declare abstract class PgTransaction<TQueryResult extends PgQueryResultHK
|
|
|
64
58
|
fullSchema: Record<string, unknown>;
|
|
65
59
|
schema: TSchema;
|
|
66
60
|
tableNamesMap: Record<string, string>;
|
|
67
|
-
} | undefined, nestedIndex?: number
|
|
61
|
+
} | undefined, nestedIndex?: number);
|
|
68
62
|
rollback(): never;
|
|
69
63
|
setTransaction(config: PgTransactionConfig): Promise<void>;
|
|
70
64
|
abstract transaction<T>(transaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
package/pg-core/session.js
CHANGED
|
@@ -6,13 +6,11 @@ import { sql } from "../sql/index.js";
|
|
|
6
6
|
import { tracer } from "../tracing.js";
|
|
7
7
|
import { PgDatabase } from "./db.js";
|
|
8
8
|
class PgPreparedQuery {
|
|
9
|
-
constructor(query, cache, queryMetadata, cacheConfig
|
|
9
|
+
constructor(query, cache, queryMetadata, cacheConfig) {
|
|
10
10
|
this.query = query;
|
|
11
11
|
this.cache = cache;
|
|
12
12
|
this.queryMetadata = queryMetadata;
|
|
13
13
|
this.cacheConfig = cacheConfig;
|
|
14
|
-
this.extensions = extensions;
|
|
15
|
-
this.hookContext = hookContext;
|
|
16
14
|
if (cache && cache.strategy() === "all" && cacheConfig === void 0) {
|
|
17
15
|
this.cacheConfig = { enable: true, autoInvalidate: true };
|
|
18
16
|
}
|
|
@@ -21,7 +19,6 @@ class PgPreparedQuery {
|
|
|
21
19
|
}
|
|
22
20
|
}
|
|
23
21
|
authToken;
|
|
24
|
-
extensionMetas = [];
|
|
25
22
|
getQuery() {
|
|
26
23
|
return this.query;
|
|
27
24
|
}
|
|
@@ -102,51 +99,10 @@ class PgPreparedQuery {
|
|
|
102
99
|
throw new DrizzleQueryError(queryString, params, e);
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
|
-
/** @internal */
|
|
106
|
-
async execute(placeholderValues, token) {
|
|
107
|
-
const {
|
|
108
|
-
extensions,
|
|
109
|
-
hookContext,
|
|
110
|
-
query: {
|
|
111
|
-
sql: queryString,
|
|
112
|
-
params
|
|
113
|
-
},
|
|
114
|
-
extensionMetas
|
|
115
|
-
} = this;
|
|
116
|
-
if (!extensions?.length || !hookContext) return await this._execute(placeholderValues, token);
|
|
117
|
-
await tracer.startActiveSpan("drizzle.hooks.beforeExecute", async () => {
|
|
118
|
-
for (const [i, extension] of extensions.entries()) {
|
|
119
|
-
const ext = extension;
|
|
120
|
-
const config = {
|
|
121
|
-
...hookContext,
|
|
122
|
-
stage: "before",
|
|
123
|
-
sql: queryString,
|
|
124
|
-
params,
|
|
125
|
-
placeholders: placeholderValues,
|
|
126
|
-
metadata: extensionMetas[i]
|
|
127
|
-
};
|
|
128
|
-
await ext.hook(config);
|
|
129
|
-
extensionMetas[i] = config.metadata;
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
const res = await this._execute(placeholderValues, token);
|
|
133
|
-
return await tracer.startActiveSpan("drizzle.hooks.afterExecute", async () => {
|
|
134
|
-
for (const [i, ext] of extensions.entries()) {
|
|
135
|
-
await ext.hook({
|
|
136
|
-
...hookContext,
|
|
137
|
-
metadata: extensionMetas[i],
|
|
138
|
-
stage: "after",
|
|
139
|
-
data: res
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
return res;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
102
|
}
|
|
146
103
|
class PgSession {
|
|
147
|
-
constructor(dialect
|
|
104
|
+
constructor(dialect) {
|
|
148
105
|
this.dialect = dialect;
|
|
149
|
-
this.extensions = extensions;
|
|
150
106
|
}
|
|
151
107
|
static [entityKind] = "PgSession";
|
|
152
108
|
/** @internal */
|
|
@@ -180,8 +136,8 @@ class PgSession {
|
|
|
180
136
|
}
|
|
181
137
|
}
|
|
182
138
|
class PgTransaction extends PgDatabase {
|
|
183
|
-
constructor(dialect, session, schema, nestedIndex = 0
|
|
184
|
-
super(dialect, session, schema
|
|
139
|
+
constructor(dialect, session, schema, nestedIndex = 0) {
|
|
140
|
+
super(dialect, session, schema);
|
|
185
141
|
this.schema = schema;
|
|
186
142
|
this.nestedIndex = nestedIndex;
|
|
187
143
|
}
|
package/pg-core/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/pg-core/session.ts"],"sourcesContent":["import { type Cache, hashQuery, NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport { DrizzleQueryError } from '~/errors/index.ts';\nimport type { BlankPgHookContext, DrizzlePgExtension, DrizzlePgHookContext } from '~/extension-core/pg/index.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { type Query, type SQL, sql } from '~/sql/index.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { NeonAuthToken } from '~/utils.ts';\nimport { PgDatabase } from './db.ts';\nimport type { PgDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\texecute: unknown;\n\tall: unknown;\n\tvalues: unknown;\n}\n\nexport abstract class PgPreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tconstructor(\n\t\tprotected query: Query,\n\t\t// cache instance\n\t\tprivate cache: Cache | undefined,\n\t\t// per query related metadata\n\t\tprivate queryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprivate cacheConfig?: WithCacheConfig,\n\t\tprotected extensions?: DrizzlePgExtension[],\n\t\tprotected hookContext?: BlankPgHookContext,\n\t) {\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enable: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enable) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\t}\n\n\tprotected authToken?: NeonAuthToken;\n\tprivate extensionMetas: unknown[] = [];\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tmapResult(response: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn response;\n\t}\n\n\t/** @internal */\n\tsetToken(token?: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\tstatic readonly [entityKind]: string = 'PgPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (this.cache === undefined || is(this.cache, NoopCache) || this.queryMetadata === undefined) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any mutations, if globally is false\n\t\tif (this.cacheConfig && !this.cacheConfig.enable) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (\n\t\t\t(\n\t\t\t\tthis.queryMetadata.type === 'insert' || this.queryMetadata.type === 'update'\n\t\t\t\t|| this.queryMetadata.type === 'delete'\n\t\t\t) && this.queryMetadata.tables.length > 0\n\t\t) {\n\t\t\ttry {\n\t\t\t\tconst [res] = await Promise.all([\n\t\t\t\t\tquery(),\n\t\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t\t]);\n\t\t\t\treturn res;\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.queryMetadata.type === 'select') {\n\t\t\tconst fromCache = await this.cache.get(\n\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\tthis.queryMetadata.tables,\n\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\tthis.cacheConfig.autoInvalidate,\n\t\t\t);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = await query();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t\t}\n\t\t\t\t// put actual key\n\t\t\t\tawait this.cache.put(\n\t\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tthis.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],\n\t\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\t\tthis.cacheConfig.config,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\t\ttry {\n\t\t\treturn await query();\n\t\t} catch (e) {\n\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t}\n\t}\n\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tasync execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']> {\n\t\tconst {\n\t\t\textensions,\n\t\t\thookContext,\n\t\t\tquery: {\n\t\t\t\tsql: queryString,\n\t\t\t\tparams,\n\t\t\t},\n\t\t\textensionMetas,\n\t\t} = this;\n\t\tif (!extensions?.length || !hookContext) return await this._execute(placeholderValues, token);\n\n\t\tawait tracer.startActiveSpan('drizzle.hooks.beforeExecute', async () => {\n\t\t\tfor (const [i, extension] of extensions.entries()) {\n\t\t\t\tconst ext = extension!;\n\t\t\t\tconst config = {\n\t\t\t\t\t...hookContext,\n\t\t\t\t\tstage: 'before',\n\t\t\t\t\tsql: queryString,\n\t\t\t\t\tparams: params,\n\t\t\t\t\tplaceholders: placeholderValues,\n\t\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t\t} as DrizzlePgHookContext;\n\n\t\t\t\tawait ext.hook(config);\n\t\t\t\textensionMetas[i] = config.metadata;\n\t\t\t}\n\t\t});\n\n\t\tconst res = await this._execute(placeholderValues, token);\n\n\t\treturn await tracer.startActiveSpan('drizzle.hooks.afterExecute', async () => {\n\t\t\tfor (const [i, ext] of extensions.entries()) {\n\t\t\t\tawait ext.hook({\n\t\t\t\t\t...hookContext,\n\t\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t\t\tstage: 'after',\n\t\t\t\t\tdata: res as unknown[],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn res;\n\t\t});\n\t}\n\n\tprotected abstract _execute(\n\t\tplaceholderValues?: Record<string, unknown>,\n\t\ttoken?: NeonAuthToken,\n\t): Promise<T['execute']>;\n\n\t/** @internal */\n\tabstract all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface PgTransactionConfig {\n\tisolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n\taccessMode?: 'read only' | 'read write';\n\tdeferrable?: boolean;\n}\n\nexport abstract class PgSession<\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'PgSession';\n\n\tconstructor(protected dialect: PgDialect, readonly extensions?: DrizzlePgExtension[]) {}\n\n\tabstract prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t\thookContext?: BlankPgHookContext,\n\t): PgPreparedQuery<T>;\n\n\texecute<T>(query: SQL): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T> {\n\t\treturn tracer.startActiveSpan('drizzle.operation', () => {\n\t\t\tconst prepared = tracer.startActiveSpan('drizzle.prepareQuery', () => {\n\t\t\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn prepared.setToken(token).execute(undefined, token);\n\t\t});\n\t}\n\n\tall<T = unknown>(query: SQL): Promise<T[]> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { all: T[] }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t).all();\n\t}\n\n\tasync count(sql: SQL): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<[{ count: string }]>(sql, token);\n\n\t\treturn Number(\n\t\t\tres[0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T>;\n}\n\nexport abstract class PgTransaction<\n\tTQueryResult extends PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends PgDatabase<TQueryResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\tsession: PgSession<any, any, any>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t\textensions?: DrizzlePgExtension[],\n\t) {\n\t\tsuper(dialect, session, schema, extensions);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** @internal */\n\tgetTransactionConfigSQL(config: PgTransactionConfig): SQL {\n\t\tconst chunks: string[] = [];\n\t\tif (config.isolationLevel) {\n\t\t\tchunks.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\t\tif (config.accessMode) {\n\t\t\tchunks.push(config.accessMode);\n\t\t}\n\t\tif (typeof config.deferrable === 'boolean') {\n\t\t\tchunks.push(config.deferrable ? 'deferrable' : 'not deferrable');\n\t\t}\n\t\treturn sql.raw(chunks.join(' '));\n\t}\n\n\tsetTransaction(config: PgTransactionConfig): Promise<void> {\n\t\treturn this.session.execute(sql`set transaction ${this.getTransactionConfigSQL(config)}`);\n\t}\n\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PgQueryResultHKT {\n\treadonly $brand: 'PgQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport type PgQueryResultKind<TKind extends PgQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n"],"mappings":"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","names":["sql"]}
|
|
1
|
+
{"version":3,"sources":["../../src/pg-core/session.ts"],"sourcesContent":["import { type Cache, hashQuery, NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport { DrizzleQueryError } from '~/errors/index.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport { type Query, type SQL, sql } from '~/sql/index.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { NeonAuthToken } from '~/utils.ts';\nimport { PgDatabase } from './db.ts';\nimport type { PgDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\texecute: unknown;\n\tall: unknown;\n\tvalues: unknown;\n}\n\nexport abstract class PgPreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tconstructor(\n\t\tprotected query: Query,\n\t\t// cache instance\n\t\tprivate cache: Cache | undefined,\n\t\t// per query related metadata\n\t\tprivate queryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprivate cacheConfig?: WithCacheConfig,\n\t) {\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enable: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enable) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\t}\n\n\tprotected authToken?: NeonAuthToken;\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tmapResult(response: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn response;\n\t}\n\n\t/** @internal */\n\tsetToken(token?: NeonAuthToken) {\n\t\tthis.authToken = token;\n\t\treturn this;\n\t}\n\n\tstatic readonly [entityKind]: string = 'PgPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (this.cache === undefined || is(this.cache, NoopCache) || this.queryMetadata === undefined) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any mutations, if globally is false\n\t\tif (this.cacheConfig && !this.cacheConfig.enable) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (\n\t\t\t(\n\t\t\t\tthis.queryMetadata.type === 'insert' || this.queryMetadata.type === 'update'\n\t\t\t\t|| this.queryMetadata.type === 'delete'\n\t\t\t) && this.queryMetadata.tables.length > 0\n\t\t) {\n\t\t\ttry {\n\t\t\t\tconst [res] = await Promise.all([\n\t\t\t\t\tquery(),\n\t\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t\t]);\n\t\t\t\treturn res;\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\ttry {\n\t\t\t\treturn await query();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\tif (this.queryMetadata.type === 'select') {\n\t\t\tconst fromCache = await this.cache.get(\n\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\tthis.queryMetadata.tables,\n\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\tthis.cacheConfig.autoInvalidate,\n\t\t\t);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = await query();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t\t}\n\t\t\t\t// put actual key\n\t\t\t\tawait this.cache.put(\n\t\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tthis.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],\n\t\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\t\tthis.cacheConfig.config,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\t\ttry {\n\t\t\treturn await query();\n\t\t} catch (e) {\n\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t}\n\t}\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\t/** @internal */\n\tabstract execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;\n\t/** @internal */\n\tabstract execute(placeholderValues?: Record<string, unknown>, token?: NeonAuthToken): Promise<T['execute']>;\n\n\t/** @internal */\n\tabstract all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface PgTransactionConfig {\n\tisolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n\taccessMode?: 'read only' | 'read write';\n\tdeferrable?: boolean;\n}\n\nexport abstract class PgSession<\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'PgSession';\n\n\tconstructor(protected dialect: PgDialect) {}\n\n\tabstract prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T>;\n\n\texecute<T>(query: SQL): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T>;\n\t/** @internal */\n\texecute<T>(query: SQL, token?: NeonAuthToken): Promise<T> {\n\t\treturn tracer.startActiveSpan('drizzle.operation', () => {\n\t\t\tconst prepared = tracer.startActiveSpan('drizzle.prepareQuery', () => {\n\t\t\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T }>(\n\t\t\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn prepared.setToken(token).execute(undefined, token);\n\t\t});\n\t}\n\n\tall<T = unknown>(query: SQL): Promise<T[]> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { all: T[] }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t).all();\n\t}\n\n\tasync count(sql: SQL): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number>;\n\t/** @internal */\n\tasync count(sql: SQL, token?: NeonAuthToken): Promise<number> {\n\t\tconst res = await this.execute<[{ count: string }]>(sql, token);\n\n\t\treturn Number(\n\t\t\tres[0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T>;\n}\n\nexport abstract class PgTransaction<\n\tTQueryResult extends PgQueryResultHKT,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends PgDatabase<TQueryResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\tsession: PgSession<any, any, any>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** @internal */\n\tgetTransactionConfigSQL(config: PgTransactionConfig): SQL {\n\t\tconst chunks: string[] = [];\n\t\tif (config.isolationLevel) {\n\t\t\tchunks.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\t\tif (config.accessMode) {\n\t\t\tchunks.push(config.accessMode);\n\t\t}\n\t\tif (typeof config.deferrable === 'boolean') {\n\t\t\tchunks.push(config.deferrable ? 'deferrable' : 'not deferrable');\n\t\t}\n\t\treturn sql.raw(chunks.join(' '));\n\t}\n\n\tsetTransaction(config: PgTransactionConfig): Promise<void> {\n\t\treturn this.session.execute(sql`set transaction ${this.getTransactionConfigSQL(config)}`);\n\t}\n\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: PgTransaction<TQueryResult, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PgQueryResultHKT {\n\treadonly $brand: 'PgQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport type PgQueryResultKind<TKind extends PgQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n"],"mappings":"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","names":["sql"]}
|
package/pg-proxy/driver.cjs
CHANGED
|
@@ -51,9 +51,8 @@ function drizzle(callback, config = {}, _dialect = () => new import_dialect.PgDi
|
|
|
51
51
|
tableNamesMap: tablesConfig.tableNamesMap
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const db = new PgRemoteDatabase(dialect, session, schema, extensions);
|
|
54
|
+
const session = new import_session.PgRemoteSession(callback, dialect, schema, { logger, cache: config.cache });
|
|
55
|
+
const db = new PgRemoteDatabase(dialect, session, schema);
|
|
57
56
|
db.$cache = config.cache;
|
|
58
57
|
if (db.$cache) {
|
|
59
58
|
db.$cache["invalidate"] = config.cache?.onMutate;
|
package/pg-proxy/driver.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/pg-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/pg-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type PgRemoteQueryResultHKT, PgRemoteSession } from './session.ts';\n\nexport class PgRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<PgRemoteQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n\ttypings?: any[],\n) => Promise<{ rows: any[] }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema> = {},\n\t_dialect: () => PgDialect = () => new PgDialect({ casing: config.casing }),\n): PgRemoteDatabase<TSchema> {\n\tconst dialect = _dialect();\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: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\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 session = new PgRemoteSession(callback, dialect, schema, { logger, cache: config.cache });\n\tconst db = new PgRemoteDatabase(dialect, session, schema as any) as PgRemoteDatabase<TSchema>;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAEP,qBAA6D;AAEtD,MAAM,yBAEH,qBAA4C;AAAA,EACrD,QAA0B,wBAAU,IAAY;AACjD;AASO,SAAS,QACf,UACA,SAAiC,CAAC,GAClC,WAA4B,MAAM,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC,GAC7C;AAC5B,QAAM,UAAU,SAAS;AACzB,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,+BAAgB,UAAU,SAAS,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC;AAC9F,QAAM,KAAK,IAAI,iBAAiB,SAAS,SAAS,MAAa;AAC/D,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;","names":[]}
|
package/pg-proxy/driver.d.cts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { entityKind } from "../entity.cjs";
|
|
2
|
-
import type { DrizzlePgExtension } from "../extension-core/pg/index.cjs";
|
|
3
2
|
import { PgDatabase } from "../pg-core/db.cjs";
|
|
4
3
|
import { PgDialect } from "../pg-core/dialect.cjs";
|
|
5
4
|
import type { DrizzleConfig } from "../utils.cjs";
|
|
@@ -10,4 +9,4 @@ export declare class PgRemoteDatabase<TSchema extends Record<string, unknown> =
|
|
|
10
9
|
export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execute', typings?: any[]) => Promise<{
|
|
11
10
|
rows: any[];
|
|
12
11
|
}>;
|
|
13
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema
|
|
12
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>, _dialect?: () => PgDialect): PgRemoteDatabase<TSchema>;
|
package/pg-proxy/driver.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { entityKind } from "../entity.js";
|
|
2
|
-
import type { DrizzlePgExtension } from "../extension-core/pg/index.js";
|
|
3
2
|
import { PgDatabase } from "../pg-core/db.js";
|
|
4
3
|
import { PgDialect } from "../pg-core/dialect.js";
|
|
5
4
|
import type { DrizzleConfig } from "../utils.js";
|
|
@@ -10,4 +9,4 @@ export declare class PgRemoteDatabase<TSchema extends Record<string, unknown> =
|
|
|
10
9
|
export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execute', typings?: any[]) => Promise<{
|
|
11
10
|
rows: any[];
|
|
12
11
|
}>;
|
|
13
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema
|
|
12
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>, _dialect?: () => PgDialect): PgRemoteDatabase<TSchema>;
|