drizzle-orm 0.43.0-e2b296d → 0.43.1-26a0497
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 +5 -1
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +1 -0
- package/aws-data-api/pg/driver.d.ts +1 -0
- package/aws-data-api/pg/driver.js +5 -1
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/session.cjs +15 -4
- package/aws-data-api/pg/session.cjs.map +1 -1
- package/aws-data-api/pg/session.d.cts +13 -2
- package/aws-data-api/pg/session.d.ts +13 -2
- package/aws-data-api/pg/session.js +15 -4
- package/aws-data-api/pg/session.js.map +1 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/session.cjs +9 -3
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +12 -2
- package/better-sqlite3/session.d.ts +12 -2
- package/better-sqlite3/session.js +9 -3
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/driver.cjs +5 -1
- package/bun-sql/driver.cjs.map +1 -1
- package/bun-sql/driver.js +5 -1
- package/bun-sql/driver.js.map +1 -1
- package/bun-sql/session.cjs +21 -9
- package/bun-sql/session.cjs.map +1 -1
- package/bun-sql/session.d.cts +12 -2
- package/bun-sql/session.d.ts +12 -2
- package/bun-sql/session.js +21 -9
- package/bun-sql/session.js.map +1 -1
- package/cache/core/cache.cjs +47 -0
- package/cache/core/cache.cjs.map +1 -0
- package/cache/core/cache.d.cts +35 -0
- package/cache/core/cache.d.ts +35 -0
- package/cache/core/cache.js +22 -0
- package/cache/core/cache.js.map +1 -0
- package/cache/core/index.cjs +23 -0
- package/cache/core/index.cjs.map +1 -0
- package/cache/core/index.d.cts +1 -0
- package/cache/core/index.d.ts +1 -0
- package/cache/core/index.js +2 -0
- package/cache/core/index.js.map +1 -0
- package/cache/core/types.cjs +17 -0
- package/cache/core/types.cjs.map +1 -0
- package/cache/core/types.d.cts +33 -0
- package/cache/core/types.d.ts +33 -0
- package/cache/core/types.js +1 -0
- package/cache/core/types.js.map +1 -0
- package/cache/upstash/cache.cjs +148 -0
- package/cache/upstash/cache.cjs.map +1 -0
- package/cache/upstash/cache.d.cts +29 -0
- package/cache/upstash/cache.d.ts +29 -0
- package/cache/upstash/cache.js +123 -0
- package/cache/upstash/cache.js.map +1 -0
- package/cache/upstash/index.cjs +23 -0
- package/cache/upstash/index.cjs.map +1 -0
- package/cache/upstash/index.d.cts +1 -0
- package/cache/upstash/index.d.ts +1 -0
- package/cache/upstash/index.js +2 -0
- package/cache/upstash/index.js.map +1 -0
- package/d1/driver.cjs +5 -1
- package/d1/driver.cjs.map +1 -1
- package/d1/driver.js +5 -1
- package/d1/driver.js.map +1 -1
- package/d1/session.cjs +23 -9
- package/d1/session.cjs.map +1 -1
- package/d1/session.d.cts +12 -2
- package/d1/session.d.ts +12 -2
- package/d1/session.js +23 -9
- package/d1/session.js.map +1 -1
- package/durable-sqlite/session.cjs +1 -1
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.js +1 -1
- package/durable-sqlite/session.js.map +1 -1
- package/gel/driver.cjs +9 -2
- package/gel/driver.cjs.map +1 -1
- package/gel/driver.d.cts +2 -0
- package/gel/driver.d.ts +2 -0
- package/gel/driver.js +9 -2
- package/gel/driver.js.map +1 -1
- package/gel/session.cjs +25 -10
- package/gel/session.cjs.map +1 -1
- package/gel/session.d.cts +12 -2
- package/gel/session.d.ts +12 -2
- package/gel/session.js +25 -10
- package/gel/session.js.map +1 -1
- package/gel-core/db.cjs +1 -0
- package/gel-core/db.cjs.map +1 -1
- package/gel-core/db.d.cts +4 -0
- package/gel-core/db.d.ts +4 -0
- package/gel-core/db.js +1 -0
- package/gel-core/db.js.map +1 -1
- package/gel-core/dialect.cjs +1 -1
- package/gel-core/dialect.cjs.map +1 -1
- package/gel-core/dialect.js +1 -1
- package/gel-core/dialect.js.map +1 -1
- package/gel-core/query-builders/delete.cjs +5 -1
- package/gel-core/query-builders/delete.cjs.map +1 -1
- package/gel-core/query-builders/delete.js +5 -1
- package/gel-core/query-builders/delete.js.map +1 -1
- package/gel-core/query-builders/insert.cjs +5 -1
- package/gel-core/query-builders/insert.cjs.map +1 -1
- package/gel-core/query-builders/insert.js +5 -1
- package/gel-core/query-builders/insert.js.map +1 -1
- package/gel-core/query-builders/select.cjs +29 -4
- package/gel-core/query-builders/select.cjs.map +1 -1
- package/gel-core/query-builders/select.d.cts +9 -0
- package/gel-core/query-builders/select.d.ts +9 -0
- package/gel-core/query-builders/select.js +29 -4
- package/gel-core/query-builders/select.js.map +1 -1
- package/gel-core/query-builders/update.cjs +5 -1
- package/gel-core/query-builders/update.cjs.map +1 -1
- package/gel-core/query-builders/update.js +5 -1
- package/gel-core/query-builders/update.js.map +1 -1
- package/gel-core/session.cjs +52 -1
- package/gel-core/session.cjs.map +1 -1
- package/gel-core/session.d.cts +14 -3
- package/gel-core/session.d.ts +14 -3
- package/gel-core/session.js +53 -2
- package/gel-core/session.js.map +1 -1
- package/gel-core/utils.cjs +16 -0
- package/gel-core/utils.cjs.map +1 -1
- package/gel-core/utils.d.cts +8 -4
- package/gel-core/utils.d.ts +8 -4
- package/gel-core/utils.js +15 -0
- package/gel-core/utils.js.map +1 -1
- package/libsql/driver-core.cjs +5 -1
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +5 -1
- package/libsql/driver-core.js.map +1 -1
- package/libsql/session.cjs +27 -13
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +12 -2
- package/libsql/session.d.ts +12 -2
- package/libsql/session.js +27 -13
- package/libsql/session.js.map +1 -1
- package/mysql-core/db.cjs +1 -0
- package/mysql-core/db.cjs.map +1 -1
- package/mysql-core/db.d.cts +4 -0
- package/mysql-core/db.d.ts +4 -0
- package/mysql-core/db.js +1 -0
- package/mysql-core/db.js.map +1 -1
- package/mysql-core/dialect.cjs +1 -1
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.js +1 -1
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/delete.cjs +9 -1
- package/mysql-core/query-builders/delete.cjs.map +1 -1
- package/mysql-core/query-builders/delete.js +9 -1
- package/mysql-core/query-builders/delete.js.map +1 -1
- package/mysql-core/query-builders/insert.cjs +8 -1
- package/mysql-core/query-builders/insert.cjs.map +1 -1
- package/mysql-core/query-builders/insert.d.cts +2 -0
- package/mysql-core/query-builders/insert.d.ts +2 -0
- package/mysql-core/query-builders/insert.js +8 -1
- package/mysql-core/query-builders/insert.js.map +1 -1
- package/mysql-core/query-builders/select.cjs +27 -3
- package/mysql-core/query-builders/select.cjs.map +1 -1
- package/mysql-core/query-builders/select.d.cts +9 -0
- package/mysql-core/query-builders/select.d.ts +9 -0
- package/mysql-core/query-builders/select.js +28 -4
- package/mysql-core/query-builders/select.js.map +1 -1
- package/mysql-core/query-builders/update.cjs +11 -1
- package/mysql-core/query-builders/update.cjs.map +1 -1
- package/mysql-core/query-builders/update.d.cts +2 -0
- package/mysql-core/query-builders/update.d.ts +2 -0
- package/mysql-core/query-builders/update.js +11 -1
- package/mysql-core/query-builders/update.js.map +1 -1
- package/mysql-core/session.cjs +53 -0
- package/mysql-core/session.cjs.map +1 -1
- package/mysql-core/session.d.cts +15 -2
- package/mysql-core/session.d.ts +15 -2
- package/mysql-core/session.js +54 -1
- package/mysql-core/session.js.map +1 -1
- package/mysql-core/utils.cjs +16 -0
- package/mysql-core/utils.cjs.map +1 -1
- package/mysql-core/utils.d.cts +6 -2
- package/mysql-core/utils.d.ts +6 -2
- package/mysql-core/utils.js +15 -0
- package/mysql-core/utils.js.map +1 -1
- package/mysql-proxy/session.cjs +15 -5
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +12 -2
- package/mysql-proxy/session.d.ts +12 -2
- package/mysql-proxy/session.js +15 -5
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +10 -2
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +2 -0
- package/mysql2/driver.d.ts +2 -0
- package/mysql2/driver.js +10 -2
- package/mysql2/driver.js.map +1 -1
- package/mysql2/session.cjs +15 -5
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +12 -2
- package/mysql2/session.d.ts +12 -2
- package/mysql2/session.js +15 -5
- package/mysql2/session.js.map +1 -1
- package/neon-http/driver.cjs +9 -2
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +2 -0
- package/neon-http/driver.d.ts +2 -0
- package/neon-http/driver.js +9 -2
- package/neon-http/driver.js.map +1 -1
- package/neon-http/session.cjs +25 -15
- package/neon-http/session.cjs.map +1 -1
- package/neon-http/session.d.cts +12 -2
- package/neon-http/session.d.ts +12 -2
- package/neon-http/session.js +25 -15
- package/neon-http/session.js.map +1 -1
- package/neon-serverless/driver.cjs +9 -2
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +2 -0
- package/neon-serverless/driver.d.ts +2 -0
- package/neon-serverless/driver.js +9 -2
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/session.cjs +21 -7
- package/neon-serverless/session.cjs.map +1 -1
- package/neon-serverless/session.d.cts +12 -2
- package/neon-serverless/session.d.ts +12 -2
- package/neon-serverless/session.js +21 -7
- package/neon-serverless/session.js.map +1 -1
- package/node-postgres/driver.cjs +9 -2
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +2 -0
- package/node-postgres/driver.d.ts +2 -0
- package/node-postgres/driver.js +9 -2
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/session.cjs +19 -6
- package/node-postgres/session.cjs.map +1 -1
- package/node-postgres/session.d.cts +13 -2
- package/node-postgres/session.d.ts +13 -2
- package/node-postgres/session.js +19 -6
- package/node-postgres/session.js.map +1 -1
- package/op-sqlite/driver.cjs +5 -1
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.js +5 -1
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/session.cjs +23 -9
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +12 -2
- package/op-sqlite/session.d.ts +12 -2
- package/op-sqlite/session.js +23 -9
- package/op-sqlite/session.js.map +1 -1
- package/package.json +69 -4
- package/pg-core/db.cjs +1 -0
- package/pg-core/db.cjs.map +1 -1
- package/pg-core/db.d.cts +4 -0
- package/pg-core/db.d.ts +4 -0
- package/pg-core/db.js +1 -0
- package/pg-core/db.js.map +1 -1
- package/pg-core/dialect.cjs +1 -1
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.js +1 -1
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/query-builders/delete.cjs +6 -1
- package/pg-core/query-builders/delete.cjs.map +1 -1
- package/pg-core/query-builders/delete.d.cts +3 -1
- package/pg-core/query-builders/delete.d.ts +3 -1
- package/pg-core/query-builders/delete.js +6 -1
- package/pg-core/query-builders/delete.js.map +1 -1
- package/pg-core/query-builders/insert.cjs +6 -1
- package/pg-core/query-builders/insert.cjs.map +1 -1
- package/pg-core/query-builders/insert.d.cts +2 -0
- package/pg-core/query-builders/insert.d.ts +2 -0
- package/pg-core/query-builders/insert.js +6 -1
- package/pg-core/query-builders/insert.js.map +1 -1
- package/pg-core/query-builders/select.cjs +31 -5
- package/pg-core/query-builders/select.cjs.map +1 -1
- package/pg-core/query-builders/select.d.cts +15 -6
- package/pg-core/query-builders/select.d.ts +15 -6
- package/pg-core/query-builders/select.js +31 -5
- package/pg-core/query-builders/select.js.map +1 -1
- package/pg-core/query-builders/update.cjs +6 -1
- package/pg-core/query-builders/update.cjs.map +1 -1
- package/pg-core/query-builders/update.d.cts +4 -2
- package/pg-core/query-builders/update.d.ts +4 -2
- package/pg-core/query-builders/update.js +6 -1
- package/pg-core/query-builders/update.js.map +1 -1
- package/pg-core/schema.cjs +2 -2
- package/pg-core/schema.cjs.map +1 -1
- package/pg-core/schema.d.cts +4 -1
- package/pg-core/schema.d.ts +4 -1
- package/pg-core/schema.js +2 -2
- package/pg-core/schema.js.map +1 -1
- package/pg-core/session.cjs +52 -1
- package/pg-core/session.cjs.map +1 -1
- package/pg-core/session.d.cts +14 -3
- package/pg-core/session.d.ts +14 -3
- package/pg-core/session.js +53 -2
- package/pg-core/session.js.map +1 -1
- package/pg-core/utils.cjs +16 -0
- package/pg-core/utils.cjs.map +1 -1
- package/pg-core/utils.d.cts +8 -4
- package/pg-core/utils.d.ts +8 -4
- package/pg-core/utils.js +16 -1
- package/pg-core/utils.js.map +1 -1
- package/pg-proxy/driver.cjs +7 -2
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.js +7 -2
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/session.cjs +15 -5
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +12 -2
- package/pg-proxy/session.d.ts +12 -2
- package/pg-proxy/session.js +15 -5
- package/pg-proxy/session.js.map +1 -1
- package/pglite/driver.cjs +9 -2
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +2 -0
- package/pglite/driver.d.ts +2 -0
- package/pglite/driver.js +9 -2
- package/pglite/driver.js.map +1 -1
- package/pglite/session.cjs +19 -7
- package/pglite/session.cjs.map +1 -1
- package/pglite/session.d.cts +12 -2
- package/pglite/session.d.ts +12 -2
- package/pglite/session.js +19 -7
- package/pglite/session.js.map +1 -1
- package/planetscale-serverless/driver.cjs +5 -1
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +1 -0
- package/planetscale-serverless/driver.d.ts +1 -0
- package/planetscale-serverless/driver.js +5 -1
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/session.cjs +15 -5
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +12 -2
- package/planetscale-serverless/session.d.ts +12 -2
- package/planetscale-serverless/session.js +15 -5
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/driver.cjs +5 -1
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.js +5 -1
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/session.cjs +18 -6
- package/postgres-js/session.cjs.map +1 -1
- package/postgres-js/session.d.cts +12 -2
- package/postgres-js/session.d.ts +12 -2
- package/postgres-js/session.js +18 -6
- package/postgres-js/session.js.map +1 -1
- package/prisma/mysql/session.cjs +1 -1
- package/prisma/mysql/session.cjs.map +1 -1
- package/prisma/mysql/session.js +1 -1
- package/prisma/mysql/session.js.map +1 -1
- package/prisma/pg/session.cjs +1 -1
- package/prisma/pg/session.cjs.map +1 -1
- package/prisma/pg/session.js +1 -1
- package/prisma/pg/session.js.map +1 -1
- package/query-builders/query-builder.cjs.map +1 -1
- package/query-builders/query-builder.d.cts +2 -1
- package/query-builders/query-builder.d.ts +2 -1
- package/query-builders/query-builder.js.map +1 -1
- package/singlestore/driver.cjs +12 -2
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +2 -0
- package/singlestore/driver.d.ts +2 -0
- package/singlestore/driver.js +12 -2
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs +15 -5
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +12 -2
- package/singlestore/session.d.ts +12 -2
- package/singlestore/session.js +15 -5
- package/singlestore/session.js.map +1 -1
- package/singlestore-core/db.cjs +1 -0
- package/singlestore-core/db.cjs.map +1 -1
- package/singlestore-core/db.d.cts +4 -0
- package/singlestore-core/db.d.ts +4 -0
- package/singlestore-core/db.js +1 -0
- package/singlestore-core/db.js.map +1 -1
- package/singlestore-core/dialect.cjs +1 -1
- package/singlestore-core/dialect.cjs.map +1 -1
- package/singlestore-core/dialect.js +1 -1
- package/singlestore-core/dialect.js.map +1 -1
- package/singlestore-core/query-builders/delete.cjs +9 -1
- package/singlestore-core/query-builders/delete.cjs.map +1 -1
- package/singlestore-core/query-builders/delete.js +9 -1
- package/singlestore-core/query-builders/delete.js.map +1 -1
- package/singlestore-core/query-builders/insert.cjs +6 -1
- package/singlestore-core/query-builders/insert.cjs.map +1 -1
- package/singlestore-core/query-builders/insert.js +6 -1
- package/singlestore-core/query-builders/insert.js.map +1 -1
- package/singlestore-core/query-builders/select.cjs +28 -3
- package/singlestore-core/query-builders/select.cjs.map +1 -1
- package/singlestore-core/query-builders/select.d.cts +9 -0
- package/singlestore-core/query-builders/select.d.ts +9 -0
- package/singlestore-core/query-builders/select.js +28 -3
- package/singlestore-core/query-builders/select.js.map +1 -1
- package/singlestore-core/query-builders/update.cjs +9 -1
- package/singlestore-core/query-builders/update.cjs.map +1 -1
- package/singlestore-core/query-builders/update.js +9 -1
- package/singlestore-core/query-builders/update.js.map +1 -1
- package/singlestore-core/session.cjs +53 -0
- package/singlestore-core/session.cjs.map +1 -1
- package/singlestore-core/session.d.cts +14 -2
- package/singlestore-core/session.d.ts +14 -2
- package/singlestore-core/session.js +54 -1
- package/singlestore-core/session.js.map +1 -1
- package/singlestore-core/utils.cjs +16 -0
- package/singlestore-core/utils.cjs.map +1 -1
- package/singlestore-core/utils.d.cts +3 -0
- package/singlestore-core/utils.d.ts +3 -0
- package/singlestore-core/utils.js +15 -0
- package/singlestore-core/utils.js.map +1 -1
- package/sql/sql.cjs +10 -0
- package/sql/sql.cjs.map +1 -1
- package/sql/sql.js +10 -0
- package/sql/sql.js.map +1 -1
- package/sqlite-core/db.cjs +1 -0
- package/sqlite-core/db.cjs.map +1 -1
- package/sqlite-core/db.d.cts +4 -0
- package/sqlite-core/db.d.ts +4 -0
- package/sqlite-core/db.js +1 -0
- package/sqlite-core/db.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs +7 -1
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.js +7 -1
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/insert.cjs +7 -1
- package/sqlite-core/query-builders/insert.cjs.map +1 -1
- package/sqlite-core/query-builders/insert.js +7 -1
- package/sqlite-core/query-builders/insert.js.map +1 -1
- package/sqlite-core/query-builders/select.cjs +31 -3
- package/sqlite-core/query-builders/select.cjs.map +1 -1
- package/sqlite-core/query-builders/select.d.cts +9 -0
- package/sqlite-core/query-builders/select.d.ts +9 -0
- package/sqlite-core/query-builders/select.js +31 -3
- package/sqlite-core/query-builders/select.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs +7 -1
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.js +7 -1
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-core/session.cjs +62 -3
- package/sqlite-core/session.cjs.map +1 -1
- package/sqlite-core/session.d.cts +18 -4
- package/sqlite-core/session.d.ts +18 -4
- package/sqlite-core/session.js +63 -4
- package/sqlite-core/session.js.map +1 -1
- package/sqlite-core/utils.cjs +16 -0
- package/sqlite-core/utils.cjs.map +1 -1
- package/sqlite-core/utils.d.cts +6 -2
- package/sqlite-core/utils.d.ts +6 -2
- package/sqlite-core/utils.js +15 -0
- package/sqlite-core/utils.js.map +1 -1
- package/sqlite-proxy/driver.cjs +9 -2
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.js +9 -2
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/session.cjs +22 -8
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +12 -2
- package/sqlite-proxy/session.d.ts +12 -2
- package/sqlite-proxy/session.js +22 -8
- package/sqlite-proxy/session.js.map +1 -1
- package/subquery.cjs +4 -3
- package/subquery.cjs.map +1 -1
- package/subquery.d.cts +2 -1
- package/subquery.d.ts +2 -1
- package/subquery.js +4 -3
- package/subquery.js.map +1 -1
- package/tidb-serverless/driver.cjs +5 -1
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +1 -0
- package/tidb-serverless/driver.d.ts +1 -0
- package/tidb-serverless/driver.js +5 -1
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/session.cjs +15 -5
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +12 -2
- package/tidb-serverless/session.d.ts +12 -2
- package/tidb-serverless/session.js +15 -5
- package/tidb-serverless/session.js.map +1 -1
- package/utils.cjs +22 -0
- package/utils.cjs.map +1 -1
- package/utils.d.cts +3 -0
- package/utils.d.ts +3 -0
- package/utils.js +11 -0
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +9 -2
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +2 -0
- package/vercel-postgres/driver.d.ts +2 -0
- package/vercel-postgres/driver.js +9 -2
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/session.cjs +21 -7
- package/vercel-postgres/session.cjs.map +1 -1
- package/vercel-postgres/session.d.cts +12 -2
- package/vercel-postgres/session.d.ts +12 -2
- package/vercel-postgres/session.js +21 -7
- 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 +7 -2
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +2 -0
- package/xata-http/driver.d.ts +2 -0
- package/xata-http/driver.js +7 -2
- package/xata-http/driver.js.map +1 -1
- package/xata-http/session.cjs +21 -7
- package/xata-http/session.cjs.map +1 -1
- package/xata-http/session.d.cts +12 -2
- package/xata-http/session.d.ts +12 -2
- package/xata-http/session.js +21 -7
- package/xata-http/session.js.map +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type Cache } from "../cache/core/cache.cjs";
|
|
2
|
+
import type { WithCacheConfig } from "../cache/core/types.cjs";
|
|
1
3
|
import { entityKind } from "../entity.cjs";
|
|
2
4
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
|
|
3
5
|
import { type Query, type SQL } from "../sql/sql.cjs";
|
|
4
|
-
import type
|
|
6
|
+
import { type Assume, type Equal } from "../utils.cjs";
|
|
5
7
|
import { SingleStoreDatabase } from "./db.cjs";
|
|
6
8
|
import type { SingleStoreDialect } from "./dialect.cjs";
|
|
7
9
|
import type { SelectedFieldsOrdered } from "./query-builders/select.types.cjs";
|
|
@@ -31,7 +33,14 @@ export type PreparedQueryKind<TKind extends SingleStorePreparedQueryHKT, TConfig
|
|
|
31
33
|
readonly config: TConfig;
|
|
32
34
|
})['type'];
|
|
33
35
|
export declare abstract class SingleStorePreparedQuery<T extends SingleStorePreparedQueryConfig> {
|
|
36
|
+
private cache?;
|
|
37
|
+
private queryMetadata?;
|
|
38
|
+
private cacheConfig?;
|
|
34
39
|
static readonly [entityKind]: string;
|
|
40
|
+
constructor(cache?: Cache | undefined, queryMetadata?: {
|
|
41
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
42
|
+
tables: string[];
|
|
43
|
+
} | undefined, cacheConfig?: WithCacheConfig | undefined);
|
|
35
44
|
abstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
36
45
|
abstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
|
|
37
46
|
}
|
|
@@ -44,7 +53,10 @@ export declare abstract class SingleStoreSession<TQueryResult extends SingleStor
|
|
|
44
53
|
protected dialect: SingleStoreDialect;
|
|
45
54
|
static readonly [entityKind]: string;
|
|
46
55
|
constructor(dialect: SingleStoreDialect);
|
|
47
|
-
abstract prepareQuery<T extends SingleStorePreparedQueryConfig, TPreparedQueryHKT extends SingleStorePreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered
|
|
56
|
+
abstract prepareQuery<T extends SingleStorePreparedQueryConfig, TPreparedQueryHKT extends SingleStorePreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered, queryMetadata?: {
|
|
57
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
58
|
+
tables: string[];
|
|
59
|
+
}, cacheConfig?: WithCacheConfig): PreparedQueryKind<TPreparedQueryHKT, T>;
|
|
48
60
|
execute<T>(query: SQL): Promise<T>;
|
|
49
61
|
abstract all<T = unknown>(query: SQL): Promise<T[]>;
|
|
50
62
|
count(sql: SQL): Promise<number>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type Cache } from "../cache/core/cache.js";
|
|
2
|
+
import type { WithCacheConfig } from "../cache/core/types.js";
|
|
1
3
|
import { entityKind } from "../entity.js";
|
|
2
4
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
|
|
3
5
|
import { type Query, type SQL } from "../sql/sql.js";
|
|
4
|
-
import type
|
|
6
|
+
import { type Assume, type Equal } from "../utils.js";
|
|
5
7
|
import { SingleStoreDatabase } from "./db.js";
|
|
6
8
|
import type { SingleStoreDialect } from "./dialect.js";
|
|
7
9
|
import type { SelectedFieldsOrdered } from "./query-builders/select.types.js";
|
|
@@ -31,7 +33,14 @@ export type PreparedQueryKind<TKind extends SingleStorePreparedQueryHKT, TConfig
|
|
|
31
33
|
readonly config: TConfig;
|
|
32
34
|
})['type'];
|
|
33
35
|
export declare abstract class SingleStorePreparedQuery<T extends SingleStorePreparedQueryConfig> {
|
|
36
|
+
private cache?;
|
|
37
|
+
private queryMetadata?;
|
|
38
|
+
private cacheConfig?;
|
|
34
39
|
static readonly [entityKind]: string;
|
|
40
|
+
constructor(cache?: Cache | undefined, queryMetadata?: {
|
|
41
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
42
|
+
tables: string[];
|
|
43
|
+
} | undefined, cacheConfig?: WithCacheConfig | undefined);
|
|
35
44
|
abstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
36
45
|
abstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
|
|
37
46
|
}
|
|
@@ -44,7 +53,10 @@ export declare abstract class SingleStoreSession<TQueryResult extends SingleStor
|
|
|
44
53
|
protected dialect: SingleStoreDialect;
|
|
45
54
|
static readonly [entityKind]: string;
|
|
46
55
|
constructor(dialect: SingleStoreDialect);
|
|
47
|
-
abstract prepareQuery<T extends SingleStorePreparedQueryConfig, TPreparedQueryHKT extends SingleStorePreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered
|
|
56
|
+
abstract prepareQuery<T extends SingleStorePreparedQueryConfig, TPreparedQueryHKT extends SingleStorePreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered, queryMetadata?: {
|
|
57
|
+
type: 'select' | 'update' | 'delete' | 'insert';
|
|
58
|
+
tables: string[];
|
|
59
|
+
}, cacheConfig?: WithCacheConfig): PreparedQueryKind<TPreparedQueryHKT, T>;
|
|
48
60
|
execute<T>(query: SQL): Promise<T>;
|
|
49
61
|
abstract all<T = unknown>(query: SQL): Promise<T[]>;
|
|
50
62
|
count(sql: SQL): Promise<number>;
|
|
@@ -1,10 +1,63 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NoopCache } from "../cache/core/cache.js";
|
|
2
|
+
import { entityKind, is } from "../entity.js";
|
|
2
3
|
import { TransactionRollbackError } from "../errors.js";
|
|
3
4
|
import { sql } from "../sql/sql.js";
|
|
5
|
+
import { hashQuery } from "../utils.js";
|
|
4
6
|
import { SingleStoreDatabase } from "./db.js";
|
|
5
7
|
class SingleStorePreparedQuery {
|
|
8
|
+
constructor(cache, queryMetadata, cacheConfig) {
|
|
9
|
+
this.cache = cache;
|
|
10
|
+
this.queryMetadata = queryMetadata;
|
|
11
|
+
this.cacheConfig = cacheConfig;
|
|
12
|
+
if (cache && cache.strategy() === "all" && cacheConfig === void 0) {
|
|
13
|
+
this.cacheConfig = { enable: true, autoInvalidate: true };
|
|
14
|
+
}
|
|
15
|
+
if (!this.cacheConfig?.enable) {
|
|
16
|
+
this.cacheConfig = void 0;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
6
19
|
static [entityKind] = "SingleStorePreparedQuery";
|
|
7
20
|
/** @internal */
|
|
21
|
+
async queryWithCache(queryString, params, query) {
|
|
22
|
+
if (this.cache === void 0 || is(this.cache, NoopCache) || this.queryMetadata === void 0) {
|
|
23
|
+
return await query();
|
|
24
|
+
}
|
|
25
|
+
if (this.cacheConfig && !this.cacheConfig.enable) {
|
|
26
|
+
return await query();
|
|
27
|
+
}
|
|
28
|
+
if ((this.queryMetadata.type === "insert" || this.queryMetadata.type === "update" || this.queryMetadata.type === "delete") && this.queryMetadata.tables.length > 0) {
|
|
29
|
+
const [res] = await Promise.all([
|
|
30
|
+
query(),
|
|
31
|
+
this.cache.onMutate({ tables: this.queryMetadata.tables })
|
|
32
|
+
]);
|
|
33
|
+
return res;
|
|
34
|
+
}
|
|
35
|
+
if (!this.cacheConfig) {
|
|
36
|
+
return await query();
|
|
37
|
+
}
|
|
38
|
+
if (this.queryMetadata.type === "select") {
|
|
39
|
+
const fromCache = await this.cache.get(
|
|
40
|
+
this.cacheConfig.tag ?? (await hashQuery(queryString, params)),
|
|
41
|
+
this.queryMetadata.tables,
|
|
42
|
+
this.cacheConfig.tag !== void 0
|
|
43
|
+
);
|
|
44
|
+
if (fromCache === void 0) {
|
|
45
|
+
const result = await query();
|
|
46
|
+
await this.cache.put(
|
|
47
|
+
this.cacheConfig.tag ?? (await hashQuery(queryString, params)),
|
|
48
|
+
result,
|
|
49
|
+
// make sure we send tables that were used in a query only if user wants to invalidate it on each write
|
|
50
|
+
this.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],
|
|
51
|
+
this.cacheConfig.tag !== void 0,
|
|
52
|
+
this.cacheConfig.config
|
|
53
|
+
);
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
return fromCache;
|
|
57
|
+
}
|
|
58
|
+
return await query();
|
|
59
|
+
}
|
|
60
|
+
/** @internal */
|
|
8
61
|
joinsNotNullableMap;
|
|
9
62
|
}
|
|
10
63
|
class SingleStoreSession {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/singlestore-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { type Query, type SQL, sql } from '~/sql/sql.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { SingleStoreDatabase } from './db.ts';\nimport type { SingleStoreDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface SingleStoreQueryResultHKT {\n\treadonly $brand: 'SingleStoreQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnySingleStoreQueryResultHKT extends SingleStoreQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type SingleStoreQueryResultKind<TKind extends SingleStoreQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface SingleStorePreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface SingleStorePreparedQueryHKT {\n\treadonly $brand: 'SingleStorePreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends SingleStorePreparedQueryHKT,\n\tTConfig extends SingleStorePreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], SingleStorePreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class SingleStorePreparedQuery<T extends SingleStorePreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'SingleStorePreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface SingleStoreTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read committed'; // SingleStore only supports read committed isolation level (https://docs.singlestore.com/db/v8.7/introduction/faqs/durability/)\n}\n\nexport abstract class SingleStoreSession<\n\tTQueryResult extends SingleStoreQueryResultHKT = SingleStoreQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'SingleStoreSession';\n\n\tconstructor(protected dialect: SingleStoreDialect) {}\n\n\tabstract prepareQuery<\n\t\tT extends SingleStorePreparedQueryConfig,\n\t\tTPreparedQueryHKT extends SingleStorePreparedQueryHKT,\n\t>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\texecute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<SingleStorePreparedQueryConfig & { execute: T }, PreparedQueryHKTBase>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t).execute();\n\t}\n\n\tabstract all<T = unknown>(query: SQL): Promise<T[]>;\n\n\tasync count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<[[{ count: string }]]>(sql);\n\n\t\treturn Number(\n\t\t\tres[0][0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SingleStoreTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SingleStoreTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: SingleStoreTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.isolationLevel) {\n\t\t\tparts.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\n\t\treturn parts.length ? sql`set transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n\n\tprotected getStartTransactionSQL(config: SingleStoreTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.withConsistentSnapshot) {\n\t\t\tparts.push('with consistent snapshot');\n\t\t}\n\n\t\tif (config.accessMode) {\n\t\t\tparts.push(config.accessMode);\n\t\t}\n\n\t\treturn parts.length ? sql`start transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n}\n\nexport abstract class SingleStoreTransaction<\n\tTQueryResult extends SingleStoreQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends SingleStoreDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SingleStoreTransaction';\n\n\tconstructor(\n\t\tdialect: SingleStoreDialect,\n\t\tsession: SingleStoreSession,\n\t\tprotected schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t) {\n\t\tsuper(dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** Nested transactions (aka savepoints) only work with InnoDB engine. */\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: SingleStoreTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends SingleStorePreparedQueryHKT {\n\ttype: SingleStorePreparedQuery<Assume<this['config'], SingleStorePreparedQueryConfig>>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AAEzC,SAA+B,WAAW;AAE1C,SAAS,2BAA2B;AAqC7B,MAAe,yBAAmE;AAAA,EACxF,QAAiB,UAAU,IAAY;AAAA;AAAA,EAGvC;AAKD;AAQO,MAAe,mBAKpB;AAAA,EAGD,YAAsB,SAA6B;AAA7B;AAAA,EAA8B;AAAA,EAFpD,QAAiB,UAAU,IAAY;AAAA,EAevC,QAAW,OAAwB;AAClC,WAAO,KAAK;AAAA,MACX,KAAK,QAAQ,WAAW,KAAK;AAAA,MAC7B;AAAA,IACD,EAAE,QAAQ;AAAA,EACX;AAAA,EAIA,MAAM,MAAMA,MAA2B;AACtC,UAAM,MAAM,MAAM,KAAK,QAA+BA,IAAG;AAEzD,WAAO;AAAA,MACN,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO;AAAA,IAClB;AAAA,EACD;AAAA,EAOU,qBAAqB,QAAuD;AACrF,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,gBAAgB;AAC1B,YAAM,KAAK,mBAAmB,OAAO,cAAc,EAAE;AAAA,IACtD;AAEA,WAAO,MAAM,SAAS,sBAAsB,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC1E;AAAA,EAEU,uBAAuB,QAAuD;AACvF,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,wBAAwB;AAClC,YAAM,KAAK,0BAA0B;AAAA,IACtC;AAEA,QAAI,OAAO,YAAY;AACtB,YAAM,KAAK,OAAO,UAAU;AAAA,IAC7B;AAEA,WAAO,MAAM,SAAS,wBAAwB,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC5E;AACD;AAEO,MAAe,+BAKZ,oBAA2E;AAAA,EAGpF,YACC,SACA,SACU,QACS,aAClB;AACD,UAAM,SAAS,SAAS,MAAM;AAHpB;AACS;AAAA,EAGpB;AAAA,EATA,QAA0B,UAAU,IAAY;AAAA,EAWhD,WAAkB;AACjB,UAAM,IAAI,yBAAyB;AAAA,EACpC;AAMD;","names":["sql"]}
|
|
1
|
+
{"version":3,"sources":["../../src/singlestore-core/session.ts"],"sourcesContent":["import { type Cache, 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 type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, type Equal, hashQuery } from '~/utils.ts';\nimport { SingleStoreDatabase } from './db.ts';\nimport type { SingleStoreDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface SingleStoreQueryResultHKT {\n\treadonly $brand: 'SingleStoreQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnySingleStoreQueryResultHKT extends SingleStoreQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type SingleStoreQueryResultKind<TKind extends SingleStoreQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface SingleStorePreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface SingleStorePreparedQueryHKT {\n\treadonly $brand: 'SingleStorePreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends SingleStorePreparedQueryHKT,\n\tTConfig extends SingleStorePreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], SingleStorePreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class SingleStorePreparedQuery<T extends SingleStorePreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'SingleStorePreparedQuery';\n\n\tconstructor(\n\t\tprivate cache?: Cache,\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\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\treturn await query();\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\treturn await query();\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\tconst [res] = await Promise.all([\n\t\t\t\tquery(),\n\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t]);\n\t\t\treturn res;\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\treturn await query();\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);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tconst result = await query();\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\treturn await query();\n\t}\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface SingleStoreTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read committed'; // SingleStore only supports read committed isolation level (https://docs.singlestore.com/db/v8.7/introduction/faqs/durability/)\n}\n\nexport abstract class SingleStoreSession<\n\tTQueryResult extends SingleStoreQueryResultHKT = SingleStoreQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'SingleStoreSession';\n\n\tconstructor(protected dialect: SingleStoreDialect) {}\n\n\tabstract prepareQuery<\n\t\tT extends SingleStorePreparedQueryConfig,\n\t\tTPreparedQueryHKT extends SingleStorePreparedQueryHKT,\n\t>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\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): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\texecute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<SingleStorePreparedQueryConfig & { execute: T }, PreparedQueryHKTBase>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t).execute();\n\t}\n\n\tabstract all<T = unknown>(query: SQL): Promise<T[]>;\n\n\tasync count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<[[{ count: string }]]>(sql);\n\n\t\treturn Number(\n\t\t\tres[0][0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SingleStoreTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: SingleStoreTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: SingleStoreTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.isolationLevel) {\n\t\t\tparts.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\n\t\treturn parts.length ? sql`set transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n\n\tprotected getStartTransactionSQL(config: SingleStoreTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.withConsistentSnapshot) {\n\t\t\tparts.push('with consistent snapshot');\n\t\t}\n\n\t\tif (config.accessMode) {\n\t\t\tparts.push(config.accessMode);\n\t\t}\n\n\t\treturn parts.length ? sql`start transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n}\n\nexport abstract class SingleStoreTransaction<\n\tTQueryResult extends SingleStoreQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends SingleStoreDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SingleStoreTransaction';\n\n\tconstructor(\n\t\tdialect: SingleStoreDialect,\n\t\tsession: SingleStoreSession,\n\t\tprotected schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t) {\n\t\tsuper(dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** Nested transactions (aka savepoints) only work with InnoDB engine. */\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: SingleStoreTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends SingleStorePreparedQueryHKT {\n\ttype: SingleStorePreparedQuery<Assume<this['config'], SingleStorePreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
|
|
@@ -18,15 +18,30 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var utils_exports = {};
|
|
20
20
|
__export(utils_exports, {
|
|
21
|
+
extractUsedTable: () => extractUsedTable,
|
|
21
22
|
getTableConfig: () => getTableConfig
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(utils_exports);
|
|
24
25
|
var import_entity = require("../entity.cjs");
|
|
26
|
+
var import_sql = require("../sql/sql.cjs");
|
|
27
|
+
var import_subquery = require("../subquery.cjs");
|
|
25
28
|
var import_table = require("../table.cjs");
|
|
26
29
|
var import_indexes = require("./indexes.cjs");
|
|
27
30
|
var import_primary_keys = require("./primary-keys.cjs");
|
|
28
31
|
var import_table2 = require("./table.cjs");
|
|
29
32
|
var import_unique_constraint = require("./unique-constraint.cjs");
|
|
33
|
+
function extractUsedTable(table) {
|
|
34
|
+
if ((0, import_entity.is)(table, import_table2.SingleStoreTable)) {
|
|
35
|
+
return [`${table[import_table.Table.Symbol.BaseName]}`];
|
|
36
|
+
}
|
|
37
|
+
if ((0, import_entity.is)(table, import_subquery.Subquery)) {
|
|
38
|
+
return table._.usedTables ?? [];
|
|
39
|
+
}
|
|
40
|
+
if ((0, import_entity.is)(table, import_sql.SQL)) {
|
|
41
|
+
return table.usedTables ?? [];
|
|
42
|
+
}
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
30
45
|
function getTableConfig(table) {
|
|
31
46
|
const columns = Object.values(table[import_table2.SingleStoreTable.Symbol.Columns]);
|
|
32
47
|
const indexes = [];
|
|
@@ -61,6 +76,7 @@ function getTableConfig(table) {
|
|
|
61
76
|
}
|
|
62
77
|
// Annotate the CommonJS export names for ESM import in node:
|
|
63
78
|
0 && (module.exports = {
|
|
79
|
+
extractUsedTable,
|
|
64
80
|
getTableConfig
|
|
65
81
|
});
|
|
66
82
|
//# sourceMappingURL=utils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/singlestore-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { Table } from '~/table.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SingleStoreTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\n/* import { SingleStoreViewConfig } from './view-common.ts';\nimport type { SingleStoreView } from './view.ts'; */\n\nexport function getTableConfig(table: SingleStoreTable) {\n\tconst columns = Object.values(table[SingleStoreTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst name = table[Table.Symbol.Name];\n\tconst schema = table[Table.Symbol.Schema];\n\tconst baseName = table[Table.Symbol.BaseName];\n\n\tconst extraConfigBuilder = table[SingleStoreTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SingleStoreTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t\tschema,\n\t\tbaseName,\n\t};\n}\n\n/* export function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SingleStoreView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t...view[SingleStoreViewConfig],\n\t};\n} */\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,mBAAsB;AAEtB,qBAA6B;AAE7B,0BAAkC;AAClC,IAAAA,gBAAiC;AACjC,+BAA+D;AAIxD,SAAS,eAAe,OAAyB;AACvD,QAAM,UAAU,OAAO,OAAO,MAAM,+BAAiB,OAAO,OAAO,CAAC;AACpE,QAAM,UAAmB,CAAC;AAC1B,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,OAAO,MAAM,mBAAM,OAAO,IAAI;AACpC,QAAM,SAAS,MAAM,mBAAM,OAAO,MAAM;AACxC,QAAM,WAAW,MAAM,mBAAM,OAAO,QAAQ;AAE5C,QAAM,qBAAqB,MAAM,+BAAiB,OAAO,kBAAkB;AAE3E,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,+BAAiB,OAAO,OAAO,CAAC;AAC7E,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,cAAI,kBAAG,SAAS,2BAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,eAAW,kBAAG,SAAS,gDAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,eAAW,kBAAG,SAAS,qCAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":["import_table"]}
|
|
1
|
+
{"version":3,"sources":["../../src/singlestore-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { SQL } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SingleStoreTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\n/* import { SingleStoreViewConfig } from './view-common.ts';\nimport type { SingleStoreView } from './view.ts'; */\n\nexport function extractUsedTable(table: SingleStoreTable | Subquery | SQL): string[] {\n\tif (is(table, SingleStoreTable)) {\n\t\treturn [`${table[Table.Symbol.BaseName]}`];\n\t}\n\tif (is(table, Subquery)) {\n\t\treturn table._.usedTables ?? [];\n\t}\n\tif (is(table, SQL)) {\n\t\treturn table.usedTables ?? [];\n\t}\n\treturn [];\n}\n\nexport function getTableConfig(table: SingleStoreTable) {\n\tconst columns = Object.values(table[SingleStoreTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst name = table[Table.Symbol.Name];\n\tconst schema = table[Table.Symbol.Schema];\n\tconst baseName = table[Table.Symbol.BaseName];\n\n\tconst extraConfigBuilder = table[SingleStoreTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SingleStoreTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t\tschema,\n\t\tbaseName,\n\t};\n}\n\n/* export function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SingleStoreView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t...view[SingleStoreViewConfig],\n\t};\n} */\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,iBAAoB;AACpB,sBAAyB;AACzB,mBAAsB;AAEtB,qBAA6B;AAE7B,0BAAkC;AAClC,IAAAA,gBAAiC;AACjC,+BAA+D;AAIxD,SAAS,iBAAiB,OAAoD;AACpF,UAAI,kBAAG,OAAO,8BAAgB,GAAG;AAChC,WAAO,CAAC,GAAG,MAAM,mBAAM,OAAO,QAAQ,CAAC,EAAE;AAAA,EAC1C;AACA,UAAI,kBAAG,OAAO,wBAAQ,GAAG;AACxB,WAAO,MAAM,EAAE,cAAc,CAAC;AAAA,EAC/B;AACA,UAAI,kBAAG,OAAO,cAAG,GAAG;AACnB,WAAO,MAAM,cAAc,CAAC;AAAA,EAC7B;AACA,SAAO,CAAC;AACT;AAEO,SAAS,eAAe,OAAyB;AACvD,QAAM,UAAU,OAAO,OAAO,MAAM,+BAAiB,OAAO,OAAO,CAAC;AACpE,QAAM,UAAmB,CAAC;AAC1B,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,OAAO,MAAM,mBAAM,OAAO,IAAI;AACpC,QAAM,SAAS,MAAM,mBAAM,OAAO,MAAM;AACxC,QAAM,WAAW,MAAM,mBAAM,OAAO,QAAQ;AAE5C,QAAM,qBAAqB,MAAM,+BAAiB,OAAO,kBAAkB;AAE3E,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,+BAAiB,OAAO,OAAO,CAAC;AAC7E,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,cAAI,kBAAG,SAAS,2BAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,eAAW,kBAAG,SAAS,gDAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,eAAW,kBAAG,SAAS,qCAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":["import_table"]}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { SQL } from "../sql/sql.cjs";
|
|
2
|
+
import { Subquery } from "../subquery.cjs";
|
|
1
3
|
import type { Index } from "./indexes.cjs";
|
|
2
4
|
import type { PrimaryKey } from "./primary-keys.cjs";
|
|
3
5
|
import { SingleStoreTable } from "./table.cjs";
|
|
4
6
|
import { type UniqueConstraint } from "./unique-constraint.cjs";
|
|
7
|
+
export declare function extractUsedTable(table: SingleStoreTable | Subquery | SQL): string[];
|
|
5
8
|
export declare function getTableConfig(table: SingleStoreTable): {
|
|
6
9
|
columns: import("./index.ts").SingleStoreColumn<import("../column.ts").ColumnBaseConfig<import("../column-builder.ts").ColumnDataType, string>, {}, {}>[];
|
|
7
10
|
indexes: Index[];
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { SQL } from "../sql/sql.js";
|
|
2
|
+
import { Subquery } from "../subquery.js";
|
|
1
3
|
import type { Index } from "./indexes.js";
|
|
2
4
|
import type { PrimaryKey } from "./primary-keys.js";
|
|
3
5
|
import { SingleStoreTable } from "./table.js";
|
|
4
6
|
import { type UniqueConstraint } from "./unique-constraint.js";
|
|
7
|
+
export declare function extractUsedTable(table: SingleStoreTable | Subquery | SQL): string[];
|
|
5
8
|
export declare function getTableConfig(table: SingleStoreTable): {
|
|
6
9
|
columns: import("./index.js").SingleStoreColumn<import("../column.js").ColumnBaseConfig<import("../column-builder.js").ColumnDataType, string>, {}, {}>[];
|
|
7
10
|
indexes: Index[];
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import { is } from "../entity.js";
|
|
2
|
+
import { SQL } from "../sql/sql.js";
|
|
3
|
+
import { Subquery } from "../subquery.js";
|
|
2
4
|
import { Table } from "../table.js";
|
|
3
5
|
import { IndexBuilder } from "./indexes.js";
|
|
4
6
|
import { PrimaryKeyBuilder } from "./primary-keys.js";
|
|
5
7
|
import { SingleStoreTable } from "./table.js";
|
|
6
8
|
import { UniqueConstraintBuilder } from "./unique-constraint.js";
|
|
9
|
+
function extractUsedTable(table) {
|
|
10
|
+
if (is(table, SingleStoreTable)) {
|
|
11
|
+
return [`${table[Table.Symbol.BaseName]}`];
|
|
12
|
+
}
|
|
13
|
+
if (is(table, Subquery)) {
|
|
14
|
+
return table._.usedTables ?? [];
|
|
15
|
+
}
|
|
16
|
+
if (is(table, SQL)) {
|
|
17
|
+
return table.usedTables ?? [];
|
|
18
|
+
}
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
7
21
|
function getTableConfig(table) {
|
|
8
22
|
const columns = Object.values(table[SingleStoreTable.Symbol.Columns]);
|
|
9
23
|
const indexes = [];
|
|
@@ -37,6 +51,7 @@ function getTableConfig(table) {
|
|
|
37
51
|
};
|
|
38
52
|
}
|
|
39
53
|
export {
|
|
54
|
+
extractUsedTable,
|
|
40
55
|
getTableConfig
|
|
41
56
|
};
|
|
42
57
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/singlestore-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { Table } from '~/table.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SingleStoreTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\n/* import { SingleStoreViewConfig } from './view-common.ts';\nimport type { SingleStoreView } from './view.ts'; */\n\nexport function getTableConfig(table: SingleStoreTable) {\n\tconst columns = Object.values(table[SingleStoreTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst name = table[Table.Symbol.Name];\n\tconst schema = table[Table.Symbol.Schema];\n\tconst baseName = table[Table.Symbol.BaseName];\n\n\tconst extraConfigBuilder = table[SingleStoreTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SingleStoreTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t\tschema,\n\t\tbaseName,\n\t};\n}\n\n/* export function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SingleStoreView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t...view[SingleStoreViewConfig],\n\t};\n} */\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,aAAa;AAEtB,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAClC,SAAS,wBAAwB;AACjC,SAAgC,+BAA+B;AAIxD,SAAS,eAAe,OAAyB;AACvD,QAAM,UAAU,OAAO,OAAO,MAAM,iBAAiB,OAAO,OAAO,CAAC;AACpE,QAAM,UAAmB,CAAC;AAC1B,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,OAAO,MAAM,MAAM,OAAO,IAAI;AACpC,QAAM,SAAS,MAAM,MAAM,OAAO,MAAM;AACxC,QAAM,WAAW,MAAM,MAAM,OAAO,QAAQ;AAE5C,QAAM,qBAAqB,MAAM,iBAAiB,OAAO,kBAAkB;AAE3E,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,iBAAiB,OAAO,OAAO,CAAC;AAC7E,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,UAAI,GAAG,SAAS,YAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,WAAW,GAAG,SAAS,uBAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,WAAW,GAAG,SAAS,iBAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/singlestore-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { SQL } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SingleStoreTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\n/* import { SingleStoreViewConfig } from './view-common.ts';\nimport type { SingleStoreView } from './view.ts'; */\n\nexport function extractUsedTable(table: SingleStoreTable | Subquery | SQL): string[] {\n\tif (is(table, SingleStoreTable)) {\n\t\treturn [`${table[Table.Symbol.BaseName]}`];\n\t}\n\tif (is(table, Subquery)) {\n\t\treturn table._.usedTables ?? [];\n\t}\n\tif (is(table, SQL)) {\n\t\treturn table.usedTables ?? [];\n\t}\n\treturn [];\n}\n\nexport function getTableConfig(table: SingleStoreTable) {\n\tconst columns = Object.values(table[SingleStoreTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst name = table[Table.Symbol.Name];\n\tconst schema = table[Table.Symbol.Schema];\n\tconst baseName = table[Table.Symbol.BaseName];\n\n\tconst extraConfigBuilder = table[SingleStoreTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SingleStoreTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t\tschema,\n\t\tbaseName,\n\t};\n}\n\n/* export function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SingleStoreView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t...view[SingleStoreViewConfig],\n\t};\n} */\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,WAAW;AACpB,SAAS,gBAAgB;AACzB,SAAS,aAAa;AAEtB,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAClC,SAAS,wBAAwB;AACjC,SAAgC,+BAA+B;AAIxD,SAAS,iBAAiB,OAAoD;AACpF,MAAI,GAAG,OAAO,gBAAgB,GAAG;AAChC,WAAO,CAAC,GAAG,MAAM,MAAM,OAAO,QAAQ,CAAC,EAAE;AAAA,EAC1C;AACA,MAAI,GAAG,OAAO,QAAQ,GAAG;AACxB,WAAO,MAAM,EAAE,cAAc,CAAC;AAAA,EAC/B;AACA,MAAI,GAAG,OAAO,GAAG,GAAG;AACnB,WAAO,MAAM,cAAc,CAAC;AAAA,EAC7B;AACA,SAAO,CAAC;AACT;AAEO,SAAS,eAAe,OAAyB;AACvD,QAAM,UAAU,OAAO,OAAO,MAAM,iBAAiB,OAAO,OAAO,CAAC;AACpE,QAAM,UAAmB,CAAC;AAC1B,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,OAAO,MAAM,MAAM,OAAO,IAAI;AACpC,QAAM,SAAS,MAAM,MAAM,OAAO,MAAM;AACxC,QAAM,WAAW,MAAM,MAAM,OAAO,QAAQ;AAE5C,QAAM,qBAAqB,MAAM,iBAAiB,OAAO,kBAAkB;AAE3E,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,iBAAiB,OAAO,OAAO,CAAC;AAC7E,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,UAAI,GAAG,SAAS,YAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,WAAW,GAAG,SAAS,uBAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,WAAW,GAAG,SAAS,iBAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":[]}
|
package/sql/sql.cjs
CHANGED
|
@@ -79,11 +79,21 @@ class StringChunk {
|
|
|
79
79
|
class SQL {
|
|
80
80
|
constructor(queryChunks) {
|
|
81
81
|
this.queryChunks = queryChunks;
|
|
82
|
+
for (const chunk of queryChunks) {
|
|
83
|
+
if ((0, import_entity.is)(chunk, import_table.Table)) {
|
|
84
|
+
const schemaName = chunk[import_table.Table.Symbol.Schema];
|
|
85
|
+
this.usedTables.push(
|
|
86
|
+
schemaName === void 0 ? chunk[import_table.Table.Symbol.Name] : schemaName + "." + chunk[import_table.Table.Symbol.Name]
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
82
90
|
}
|
|
83
91
|
static [import_entity.entityKind] = "SQL";
|
|
84
92
|
/** @internal */
|
|
85
93
|
decoder = noopDecoder;
|
|
86
94
|
shouldInlineParams = false;
|
|
95
|
+
/** @internal */
|
|
96
|
+
usedTables = [];
|
|
87
97
|
append(query) {
|
|
88
98
|
this.queryChunks.push(...query.queryChunks);
|
|
89
99
|
return this;
|
package/sql/sql.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sql/sql.ts"],"sourcesContent":["import type { CasingCache } from '~/casing.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { isPgEnum } from '~/pg-core/columns/enum.ts';\nimport type { SelectResult } from '~/query-builders/select.types.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { AnyColumn } from '../column.ts';\nimport { Column } from '../column.ts';\nimport { IsAlias, Table } from '../table.ts';\n\n/**\n * This class is used to indicate a primitive param value that is used in `sql` tag.\n * It is only used on type level and is never instantiated at runtime.\n * If you see a value of this type in the code, its runtime value is actually the primitive param value.\n */\nexport class FakePrimitiveParam {\n\tstatic readonly [entityKind]: string = 'FakePrimitiveParam';\n}\n\nexport type Chunk =\n\t| string\n\t| Table\n\t| View\n\t| AnyColumn\n\t| Name\n\t| Param\n\t| Placeholder\n\t| SQL;\n\nexport interface BuildQueryConfig {\n\tcasing: CasingCache;\n\tescapeName(name: string): string;\n\tescapeParam(num: number, value: unknown): string;\n\tescapeString(str: string): string;\n\tprepareTyping?: (encoder: DriverValueEncoder<unknown, unknown>) => QueryTypingsValue;\n\tparamStartIndex?: { value: number };\n\tinlineParams?: boolean;\n\tinvokeSource?: 'indexes' | undefined;\n}\n\nexport type QueryTypingsValue = 'json' | 'decimal' | 'time' | 'timestamp' | 'uuid' | 'date' | 'none';\n\nexport interface Query {\n\tsql: string;\n\tparams: unknown[];\n}\n\nexport interface QueryWithTypings extends Query {\n\ttypings?: QueryTypingsValue[];\n}\n\n/**\n * Any value that implements the `getSQL` method. The implementations include:\n * - `Table`\n * - `Column`\n * - `View`\n * - `Subquery`\n * - `SQL`\n * - `SQL.Aliased`\n * - `Placeholder`\n * - `Param`\n */\nexport interface SQLWrapper {\n\tgetSQL(): SQL;\n\tshouldOmitSQLParens?(): boolean;\n}\n\nexport function isSQLWrapper(value: unknown): value is SQLWrapper {\n\treturn value !== null && value !== undefined && typeof (value as any).getSQL === 'function';\n}\n\nfunction mergeQueries(queries: QueryWithTypings[]): QueryWithTypings {\n\tconst result: QueryWithTypings = { sql: '', params: [] };\n\tfor (const query of queries) {\n\t\tresult.sql += query.sql;\n\t\tresult.params.push(...query.params);\n\t\tif (query.typings?.length) {\n\t\t\tif (!result.typings) {\n\t\t\t\tresult.typings = [];\n\t\t\t}\n\t\t\tresult.typings.push(...query.typings);\n\t\t}\n\t}\n\treturn result;\n}\n\nexport class StringChunk implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'StringChunk';\n\n\treadonly value: string[];\n\n\tconstructor(value: string | string[]) {\n\t\tthis.value = Array.isArray(value) ? value : [value];\n\t}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\nexport class SQL<T = unknown> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQL';\n\n\tdeclare _: {\n\t\tbrand: 'SQL';\n\t\ttype: T;\n\t};\n\n\t/** @internal */\n\tdecoder: DriverValueDecoder<T, any> = noopDecoder;\n\tprivate shouldInlineParams = false;\n\n\tconstructor(readonly queryChunks: SQLChunk[]) {}\n\n\tappend(query: SQL): this {\n\t\tthis.queryChunks.push(...query.queryChunks);\n\t\treturn this;\n\t}\n\n\ttoQuery(config: BuildQueryConfig): QueryWithTypings {\n\t\treturn tracer.startActiveSpan('drizzle.buildSQL', (span) => {\n\t\t\tconst query = this.buildQueryFromSourceParams(this.queryChunks, config);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': query.sql,\n\t\t\t\t'drizzle.query.params': JSON.stringify(query.params),\n\t\t\t});\n\t\t\treturn query;\n\t\t});\n\t}\n\n\tbuildQueryFromSourceParams(chunks: SQLChunk[], _config: BuildQueryConfig): Query {\n\t\tconst config = Object.assign({}, _config, {\n\t\t\tinlineParams: _config.inlineParams || this.shouldInlineParams,\n\t\t\tparamStartIndex: _config.paramStartIndex || { value: 0 },\n\t\t});\n\n\t\tconst {\n\t\t\tcasing,\n\t\t\tescapeName,\n\t\t\tescapeParam,\n\t\t\tprepareTyping,\n\t\t\tinlineParams,\n\t\t\tparamStartIndex,\n\t\t} = config;\n\n\t\treturn mergeQueries(chunks.map((chunk): QueryWithTypings => {\n\t\t\tif (is(chunk, StringChunk)) {\n\t\t\t\treturn { sql: chunk.value.join(''), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Name)) {\n\t\t\t\treturn { sql: escapeName(chunk.value), params: [] };\n\t\t\t}\n\n\t\t\tif (chunk === undefined) {\n\t\t\t\treturn { sql: '', params: [] };\n\t\t\t}\n\n\t\t\tif (Array.isArray(chunk)) {\n\t\t\t\tconst result: SQLChunk[] = [new StringChunk('(')];\n\t\t\t\tfor (const [i, p] of chunk.entries()) {\n\t\t\t\t\tresult.push(p);\n\t\t\t\t\tif (i < chunk.length - 1) {\n\t\t\t\t\t\tresult.push(new StringChunk(', '));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult.push(new StringChunk(')'));\n\t\t\t\treturn this.buildQueryFromSourceParams(result, config);\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL)) {\n\t\t\t\treturn this.buildQueryFromSourceParams(chunk.queryChunks, {\n\t\t\t\t\t...config,\n\t\t\t\t\tinlineParams: inlineParams || chunk.shouldInlineParams,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (is(chunk, Table)) {\n\t\t\t\tconst schemaName = chunk[Table.Symbol.Schema];\n\t\t\t\tconst tableName = chunk[Table.Symbol.Name];\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined || chunk[IsAlias]\n\t\t\t\t\t\t? escapeName(tableName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(tableName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Column)) {\n\t\t\t\tconst columnName = casing.getColumnCasing(chunk);\n\t\t\t\tif (_config.invokeSource === 'indexes') {\n\t\t\t\t\treturn { sql: escapeName(columnName), params: [] };\n\t\t\t\t}\n\n\t\t\t\tconst schemaName = chunk.table[Table.Symbol.Schema];\n\t\t\t\treturn {\n\t\t\t\t\tsql: chunk.table[IsAlias] || schemaName === undefined\n\t\t\t\t\t\t? escapeName(chunk.table[Table.Symbol.Name]) + '.' + escapeName(columnName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(chunk.table[Table.Symbol.Name]) + '.'\n\t\t\t\t\t\t\t+ escapeName(columnName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, View)) {\n\t\t\t\tconst schemaName = chunk[ViewBaseConfig].schema;\n\t\t\t\tconst viewName = chunk[ViewBaseConfig].name;\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined || chunk[ViewBaseConfig].isAlias\n\t\t\t\t\t\t? escapeName(viewName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(viewName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Param)) {\n\t\t\t\tif (is(chunk.value, Placeholder)) {\n\t\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: ['none'] };\n\t\t\t\t}\n\n\t\t\t\tconst mappedValue = chunk.value === null ? null : chunk.encoder.mapToDriverValue(chunk.value);\n\n\t\t\t\tif (is(mappedValue, SQL)) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([mappedValue], config);\n\t\t\t\t}\n\n\t\t\t\tif (inlineParams) {\n\t\t\t\t\treturn { sql: this.mapInlineParam(mappedValue, config), params: [] };\n\t\t\t\t}\n\n\t\t\t\tlet typings: QueryTypingsValue[] = ['none'];\n\t\t\t\tif (prepareTyping) {\n\t\t\t\t\ttypings = [prepareTyping(chunk.encoder)];\n\t\t\t\t}\n\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, mappedValue), params: [mappedValue], typings };\n\t\t\t}\n\n\t\t\tif (is(chunk, Placeholder)) {\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: ['none'] };\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL.Aliased) && chunk.fieldAlias !== undefined) {\n\t\t\t\treturn { sql: escapeName(chunk.fieldAlias), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Subquery)) {\n\t\t\t\tif (chunk._.isWith) {\n\t\t\t\t\treturn { sql: escapeName(chunk._.alias), params: [] };\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk._.sql,\n\t\t\t\t\tnew StringChunk(') '),\n\t\t\t\t\tnew Name(chunk._.alias),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (isPgEnum(chunk)) {\n\t\t\t\tif (chunk.schema) {\n\t\t\t\t\treturn { sql: escapeName(chunk.schema) + '.' + escapeName(chunk.enumName), params: [] };\n\t\t\t\t}\n\t\t\t\treturn { sql: escapeName(chunk.enumName), params: [] };\n\t\t\t}\n\n\t\t\tif (isSQLWrapper(chunk)) {\n\t\t\t\tif (chunk.shouldOmitSQLParens?.()) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([chunk.getSQL()], config);\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk.getSQL(),\n\t\t\t\t\tnew StringChunk(')'),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (inlineParams) {\n\t\t\t\treturn { sql: this.mapInlineParam(chunk, config), params: [] };\n\t\t\t}\n\n\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: ['none'] };\n\t\t}));\n\t}\n\n\tprivate mapInlineParam(\n\t\tchunk: unknown,\n\t\t{ escapeString }: BuildQueryConfig,\n\t): string {\n\t\tif (chunk === null) {\n\t\t\treturn 'null';\n\t\t}\n\t\tif (typeof chunk === 'number' || typeof chunk === 'boolean') {\n\t\t\treturn chunk.toString();\n\t\t}\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn escapeString(chunk);\n\t\t}\n\t\tif (typeof chunk === 'object') {\n\t\t\tconst mappedValueAsString = chunk.toString();\n\t\t\tif (mappedValueAsString === '[object Object]') {\n\t\t\t\treturn escapeString(JSON.stringify(chunk));\n\t\t\t}\n\t\t\treturn escapeString(mappedValueAsString);\n\t\t}\n\t\tthrow new Error('Unexpected param value: ' + chunk);\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this;\n\t}\n\n\tas(alias: string): SQL.Aliased<T>;\n\t/**\n\t * @deprecated\n\t * Use ``sql<DataType>`query`.as(alias)`` instead.\n\t */\n\tas<TData>(): SQL<TData>;\n\t/**\n\t * @deprecated\n\t * Use ``sql<DataType>`query`.as(alias)`` instead.\n\t */\n\tas<TData>(alias: string): SQL.Aliased<TData>;\n\tas(alias?: string): SQL<T> | SQL.Aliased<T> {\n\t\t// TODO: remove with deprecated overloads\n\t\tif (alias === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\treturn new SQL.Aliased(this, alias);\n\t}\n\n\tmapWith<\n\t\tTDecoder extends\n\t\t\t| DriverValueDecoder<any, any>\n\t\t\t| DriverValueDecoder<any, any>['mapFromDriverValue'],\n\t>(decoder: TDecoder): SQL<GetDecoderResult<TDecoder>> {\n\t\tthis.decoder = typeof decoder === 'function' ? { mapFromDriverValue: decoder } : decoder;\n\t\treturn this as SQL<GetDecoderResult<TDecoder>>;\n\t}\n\n\tinlineParams(): this {\n\t\tthis.shouldInlineParams = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * This method is used to conditionally include a part of the query.\n\t *\n\t * @param condition - Condition to check\n\t * @returns itself if the condition is `true`, otherwise `undefined`\n\t */\n\tif(condition: any | undefined): this | undefined {\n\t\treturn condition ? this : undefined;\n\t}\n}\n\nexport type GetDecoderResult<T> = T extends Column ? T['_']['data'] : T extends\n\t| DriverValueDecoder<infer TData, any>\n\t| DriverValueDecoder<infer TData, any>['mapFromDriverValue'] ? TData\n: never;\n\n/**\n * Any DB name (table, column, index etc.)\n */\nexport class Name implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Name';\n\n\tprotected brand!: 'Name';\n\n\tconstructor(readonly value: string) {}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/**\n * Any DB name (table, column, index etc.)\n * @deprecated Use `sql.identifier` instead.\n */\nexport function name(value: string): Name {\n\treturn new Name(value);\n}\n\nexport interface DriverValueDecoder<TData, TDriverParam> {\n\tmapFromDriverValue(value: TDriverParam): TData;\n}\n\nexport interface DriverValueEncoder<TData, TDriverParam> {\n\tmapToDriverValue(value: TData): TDriverParam | SQL;\n}\n\nexport function isDriverValueEncoder(value: unknown): value is DriverValueEncoder<any, any> {\n\treturn typeof value === 'object' && value !== null && 'mapToDriverValue' in value\n\t\t&& typeof (value as any).mapToDriverValue === 'function';\n}\n\nexport const noopDecoder: DriverValueDecoder<any, any> = {\n\tmapFromDriverValue: (value) => value,\n};\n\nexport const noopEncoder: DriverValueEncoder<any, any> = {\n\tmapToDriverValue: (value) => value,\n};\n\nexport interface DriverValueMapper<TData, TDriverParam>\n\textends DriverValueDecoder<TData, TDriverParam>, DriverValueEncoder<TData, TDriverParam>\n{}\n\nexport const noopMapper: DriverValueMapper<any, any> = {\n\t...noopDecoder,\n\t...noopEncoder,\n};\n\n/** Parameter value that is optionally bound to an encoder (for example, a column). */\nexport class Param<TDataType = unknown, TDriverParamType = TDataType> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Param';\n\n\tprotected brand!: 'BoundParamValue';\n\n\t/**\n\t * @param value - Parameter value\n\t * @param encoder - Encoder to convert the value to a driver parameter\n\t */\n\tconstructor(\n\t\treadonly value: TDataType,\n\t\treadonly encoder: DriverValueEncoder<TDataType, TDriverParamType> = noopEncoder,\n\t) {}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.param` instead. */\nexport function param<TData, TDriver>(\n\tvalue: TData,\n\tencoder?: DriverValueEncoder<TData, TDriver>,\n): Param<TData, TDriver> {\n\treturn new Param(value, encoder);\n}\n\n/**\n * Anything that can be passed to the `` sql`...` `` tagged function.\n */\nexport type SQLChunk =\n\t| StringChunk\n\t| SQLChunk[]\n\t| SQLWrapper\n\t| SQL\n\t| Table\n\t| View\n\t| Subquery\n\t| AnyColumn\n\t| Param\n\t| Name\n\t| undefined\n\t| FakePrimitiveParam\n\t| Placeholder;\n\nexport function sql<T>(strings: TemplateStringsArray, ...params: any[]): SQL<T>;\n/*\n\tThe type of `params` is specified as `SQLChunk[]`, but that's slightly incorrect -\n\tin runtime, users won't pass `FakePrimitiveParam` instances as `params` - they will pass primitive values\n\twhich will be wrapped in `Param`. That's why the overload specifies `params` as `any[]` and not as `SQLSourceParam[]`.\n\tThis type is used to make our lives easier and the type checker happy.\n*/\nexport function sql(strings: TemplateStringsArray, ...params: SQLChunk[]): SQL {\n\tconst queryChunks: SQLChunk[] = [];\n\tif (params.length > 0 || (strings.length > 0 && strings[0] !== '')) {\n\t\tqueryChunks.push(new StringChunk(strings[0]!));\n\t}\n\tfor (const [paramIndex, param] of params.entries()) {\n\t\tqueryChunks.push(param, new StringChunk(strings[paramIndex + 1]!));\n\t}\n\n\treturn new SQL(queryChunks);\n}\n\nexport namespace sql {\n\texport function empty(): SQL {\n\t\treturn new SQL([]);\n\t}\n\n\t/** @deprecated - use `sql.join()` */\n\texport function fromList(list: SQLChunk[]): SQL {\n\t\treturn new SQL(list);\n\t}\n\n\t/**\n\t * Convenience function to create an SQL query from a raw string.\n\t * @param str The raw SQL query string.\n\t */\n\texport function raw(str: string): SQL {\n\t\treturn new SQL([new StringChunk(str)]);\n\t}\n\n\t/**\n\t * Join a list of SQL chunks with a separator.\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`]);\n\t * // sql`abc`\n\t * ```\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`], sql`, `);\n\t * // sql`a, b, c`\n\t * ```\n\t */\n\texport function join(chunks: SQLChunk[], separator?: SQLChunk): SQL {\n\t\tconst result: SQLChunk[] = [];\n\t\tfor (const [i, chunk] of chunks.entries()) {\n\t\t\tif (i > 0 && separator !== undefined) {\n\t\t\t\tresult.push(separator);\n\t\t\t}\n\t\t\tresult.push(chunk);\n\t\t}\n\t\treturn new SQL(result);\n\t}\n\n\t/**\n\t * Create a SQL chunk that represents a DB identifier (table, column, index etc.).\n\t * When used in a query, the identifier will be escaped based on the DB engine.\n\t * For example, in PostgreSQL, identifiers are escaped with double quotes.\n\t *\n\t * **WARNING: This function does not offer any protection against SQL injections, so you must validate any user input beforehand.**\n\t *\n\t * @example ```ts\n\t * const query = sql`SELECT * FROM ${sql.identifier('my-table')}`;\n\t * // 'SELECT * FROM \"my-table\"'\n\t * ```\n\t */\n\texport function identifier(value: string): Name {\n\t\treturn new Name(value);\n\t}\n\n\texport function placeholder<TName extends string>(name: TName): Placeholder<TName> {\n\t\treturn new Placeholder(name);\n\t}\n\n\texport function param<TData, TDriver>(\n\t\tvalue: TData,\n\t\tencoder?: DriverValueEncoder<TData, TDriver>,\n\t): Param<TData, TDriver> {\n\t\treturn new Param(value, encoder);\n\t}\n}\n\nexport namespace SQL {\n\texport class Aliased<T = unknown> implements SQLWrapper {\n\t\tstatic readonly [entityKind]: string = 'SQL.Aliased';\n\n\t\tdeclare _: {\n\t\t\tbrand: 'SQL.Aliased';\n\t\t\ttype: T;\n\t\t};\n\n\t\t/** @internal */\n\t\tisSelectionField = false;\n\n\t\tconstructor(\n\t\t\treadonly sql: SQL,\n\t\t\treadonly fieldAlias: string,\n\t\t) {}\n\n\t\tgetSQL(): SQL {\n\t\t\treturn this.sql;\n\t\t}\n\n\t\t/** @internal */\n\t\tclone() {\n\t\t\treturn new Aliased(this.sql, this.fieldAlias);\n\t\t}\n\t}\n}\n\nexport class Placeholder<TName extends string = string, TValue = any> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Placeholder';\n\n\tdeclare protected: TValue;\n\n\tconstructor(readonly name: TName) {}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.placeholder` instead. */\nexport function placeholder<TName extends string>(name: TName): Placeholder<TName> {\n\treturn new Placeholder(name);\n}\n\nexport function fillPlaceholders(params: unknown[], values: Record<string, unknown>): unknown[] {\n\treturn params.map((p) => {\n\t\tif (is(p, Placeholder)) {\n\t\t\tif (!(p.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.name}\" was provided`);\n\t\t\t}\n\n\t\t\treturn values[p.name];\n\t\t}\n\n\t\tif (is(p, Param) && is(p.value, Placeholder)) {\n\t\t\tif (!(p.value.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.value.name}\" was provided`);\n\t\t\t}\n\n\t\t\treturn p.encoder.mapToDriverValue(values[p.value.name]);\n\t\t}\n\n\t\treturn p;\n\t});\n}\n\nexport type ColumnsSelection = Record<string, unknown>;\n\nconst IsDrizzleView = Symbol.for('drizzle:IsDrizzleView');\n\nexport abstract class View<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n\tTSelection extends ColumnsSelection = ColumnsSelection,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'View';\n\n\tdeclare _: {\n\t\tbrand: 'View';\n\t\tviewBrand: string;\n\t\tname: TName;\n\t\texisting: TExisting;\n\t\tselectedFields: TSelection;\n\t};\n\n\t/** @internal */\n\t[ViewBaseConfig]: {\n\t\tname: TName;\n\t\toriginalName: TName;\n\t\tschema: string | undefined;\n\t\tselectedFields: ColumnsSelection;\n\t\tisExisting: TExisting;\n\t\tquery: TExisting extends true ? undefined : SQL;\n\t\tisAlias: boolean;\n\t};\n\n\t/** @internal */\n\t[IsDrizzleView] = true;\n\n\tdeclare readonly $inferSelect: InferSelectViewModel<View<Assume<TName, string>, TExisting, TSelection>>;\n\n\tconstructor(\n\t\t{ name, schema, selectedFields, query }: {\n\t\t\tname: TName;\n\t\t\tschema: string | undefined;\n\t\t\tselectedFields: ColumnsSelection;\n\t\t\tquery: SQL | undefined;\n\t\t},\n\t) {\n\t\tthis[ViewBaseConfig] = {\n\t\t\tname,\n\t\t\toriginalName: name,\n\t\t\tschema,\n\t\t\tselectedFields,\n\t\t\tquery: query as (TExisting extends true ? undefined : SQL),\n\t\t\tisExisting: !query as TExisting,\n\t\t\tisAlias: false,\n\t\t};\n\t}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\nexport function isView(view: unknown): view is View {\n\treturn typeof view === 'object' && view !== null && IsDrizzleView in view;\n}\n\nexport function getViewName<T extends View>(view: T): T['_']['name'] {\n\treturn view[ViewBaseConfig].name;\n}\n\nexport type InferSelectViewModel<TView extends View> =\n\tEqual<TView['_']['selectedFields'], { [x: string]: unknown }> extends true ? { [x: string]: unknown }\n\t\t: SelectResult<\n\t\t\tTView['_']['selectedFields'],\n\t\t\t'single',\n\t\t\tRecord<TView['_']['name'], 'not-null'>\n\t\t>;\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\n// Defined separately from the Table class to resolve circular dependency\nTable.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\n// Defined separately from the Column class to resolve circular dependency\nSubquery.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n"],"mappings":"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","names":["param","sql","placeholder","name","SQL"]}
|
|
1
|
+
{"version":3,"sources":["../../src/sql/sql.ts"],"sourcesContent":["import type { CasingCache } from '~/casing.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { isPgEnum } from '~/pg-core/columns/enum.ts';\nimport type { SelectResult } from '~/query-builders/select.types.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { AnyColumn } from '../column.ts';\nimport { Column } from '../column.ts';\nimport { IsAlias, Table } from '../table.ts';\n\n/**\n * This class is used to indicate a primitive param value that is used in `sql` tag.\n * It is only used on type level and is never instantiated at runtime.\n * If you see a value of this type in the code, its runtime value is actually the primitive param value.\n */\nexport class FakePrimitiveParam {\n\tstatic readonly [entityKind]: string = 'FakePrimitiveParam';\n}\n\nexport type Chunk =\n\t| string\n\t| Table\n\t| View\n\t| AnyColumn\n\t| Name\n\t| Param\n\t| Placeholder\n\t| SQL;\n\nexport interface BuildQueryConfig {\n\tcasing: CasingCache;\n\tescapeName(name: string): string;\n\tescapeParam(num: number, value: unknown): string;\n\tescapeString(str: string): string;\n\tprepareTyping?: (encoder: DriverValueEncoder<unknown, unknown>) => QueryTypingsValue;\n\tparamStartIndex?: { value: number };\n\tinlineParams?: boolean;\n\tinvokeSource?: 'indexes' | undefined;\n}\n\nexport type QueryTypingsValue = 'json' | 'decimal' | 'time' | 'timestamp' | 'uuid' | 'date' | 'none';\n\nexport interface Query {\n\tsql: string;\n\tparams: unknown[];\n}\n\nexport interface QueryWithTypings extends Query {\n\ttypings?: QueryTypingsValue[];\n}\n\n/**\n * Any value that implements the `getSQL` method. The implementations include:\n * - `Table`\n * - `Column`\n * - `View`\n * - `Subquery`\n * - `SQL`\n * - `SQL.Aliased`\n * - `Placeholder`\n * - `Param`\n */\nexport interface SQLWrapper {\n\tgetSQL(): SQL;\n\tshouldOmitSQLParens?(): boolean;\n}\n\nexport function isSQLWrapper(value: unknown): value is SQLWrapper {\n\treturn value !== null && value !== undefined && typeof (value as any).getSQL === 'function';\n}\n\nfunction mergeQueries(queries: QueryWithTypings[]): QueryWithTypings {\n\tconst result: QueryWithTypings = { sql: '', params: [] };\n\tfor (const query of queries) {\n\t\tresult.sql += query.sql;\n\t\tresult.params.push(...query.params);\n\t\tif (query.typings?.length) {\n\t\t\tif (!result.typings) {\n\t\t\t\tresult.typings = [];\n\t\t\t}\n\t\t\tresult.typings.push(...query.typings);\n\t\t}\n\t}\n\treturn result;\n}\n\nexport class StringChunk implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'StringChunk';\n\n\treadonly value: string[];\n\n\tconstructor(value: string | string[]) {\n\t\tthis.value = Array.isArray(value) ? value : [value];\n\t}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\nexport class SQL<T = unknown> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQL';\n\n\tdeclare _: {\n\t\tbrand: 'SQL';\n\t\ttype: T;\n\t};\n\n\t/** @internal */\n\tdecoder: DriverValueDecoder<T, any> = noopDecoder;\n\tprivate shouldInlineParams = false;\n\n\t/** @internal */\n\tusedTables: string[] = [];\n\n\tconstructor(readonly queryChunks: SQLChunk[]) {\n\t\tfor (const chunk of queryChunks) {\n\t\t\tif (is(chunk, Table)) {\n\t\t\t\tconst schemaName = chunk[Table.Symbol.Schema];\n\n\t\t\t\tthis.usedTables.push(\n\t\t\t\t\tschemaName === undefined\n\t\t\t\t\t\t? chunk[Table.Symbol.Name]\n\t\t\t\t\t\t: schemaName + '.' + chunk[Table.Symbol.Name],\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tappend(query: SQL): this {\n\t\tthis.queryChunks.push(...query.queryChunks);\n\t\treturn this;\n\t}\n\n\ttoQuery(config: BuildQueryConfig): QueryWithTypings {\n\t\treturn tracer.startActiveSpan('drizzle.buildSQL', (span) => {\n\t\t\tconst query = this.buildQueryFromSourceParams(this.queryChunks, config);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': query.sql,\n\t\t\t\t'drizzle.query.params': JSON.stringify(query.params),\n\t\t\t});\n\t\t\treturn query;\n\t\t});\n\t}\n\n\tbuildQueryFromSourceParams(chunks: SQLChunk[], _config: BuildQueryConfig): Query {\n\t\tconst config = Object.assign({}, _config, {\n\t\t\tinlineParams: _config.inlineParams || this.shouldInlineParams,\n\t\t\tparamStartIndex: _config.paramStartIndex || { value: 0 },\n\t\t});\n\n\t\tconst {\n\t\t\tcasing,\n\t\t\tescapeName,\n\t\t\tescapeParam,\n\t\t\tprepareTyping,\n\t\t\tinlineParams,\n\t\t\tparamStartIndex,\n\t\t} = config;\n\n\t\treturn mergeQueries(chunks.map((chunk): QueryWithTypings => {\n\t\t\tif (is(chunk, StringChunk)) {\n\t\t\t\treturn { sql: chunk.value.join(''), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Name)) {\n\t\t\t\treturn { sql: escapeName(chunk.value), params: [] };\n\t\t\t}\n\n\t\t\tif (chunk === undefined) {\n\t\t\t\treturn { sql: '', params: [] };\n\t\t\t}\n\n\t\t\tif (Array.isArray(chunk)) {\n\t\t\t\tconst result: SQLChunk[] = [new StringChunk('(')];\n\t\t\t\tfor (const [i, p] of chunk.entries()) {\n\t\t\t\t\tresult.push(p);\n\t\t\t\t\tif (i < chunk.length - 1) {\n\t\t\t\t\t\tresult.push(new StringChunk(', '));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult.push(new StringChunk(')'));\n\t\t\t\treturn this.buildQueryFromSourceParams(result, config);\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL)) {\n\t\t\t\treturn this.buildQueryFromSourceParams(chunk.queryChunks, {\n\t\t\t\t\t...config,\n\t\t\t\t\tinlineParams: inlineParams || chunk.shouldInlineParams,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (is(chunk, Table)) {\n\t\t\t\tconst schemaName = chunk[Table.Symbol.Schema];\n\t\t\t\tconst tableName = chunk[Table.Symbol.Name];\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined || chunk[IsAlias]\n\t\t\t\t\t\t? escapeName(tableName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(tableName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Column)) {\n\t\t\t\tconst columnName = casing.getColumnCasing(chunk);\n\t\t\t\tif (_config.invokeSource === 'indexes') {\n\t\t\t\t\treturn { sql: escapeName(columnName), params: [] };\n\t\t\t\t}\n\n\t\t\t\tconst schemaName = chunk.table[Table.Symbol.Schema];\n\t\t\t\treturn {\n\t\t\t\t\tsql: chunk.table[IsAlias] || schemaName === undefined\n\t\t\t\t\t\t? escapeName(chunk.table[Table.Symbol.Name]) + '.' + escapeName(columnName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(chunk.table[Table.Symbol.Name]) + '.'\n\t\t\t\t\t\t\t+ escapeName(columnName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, View)) {\n\t\t\t\tconst schemaName = chunk[ViewBaseConfig].schema;\n\t\t\t\tconst viewName = chunk[ViewBaseConfig].name;\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined || chunk[ViewBaseConfig].isAlias\n\t\t\t\t\t\t? escapeName(viewName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(viewName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Param)) {\n\t\t\t\tif (is(chunk.value, Placeholder)) {\n\t\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: ['none'] };\n\t\t\t\t}\n\n\t\t\t\tconst mappedValue = chunk.value === null ? null : chunk.encoder.mapToDriverValue(chunk.value);\n\n\t\t\t\tif (is(mappedValue, SQL)) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([mappedValue], config);\n\t\t\t\t}\n\n\t\t\t\tif (inlineParams) {\n\t\t\t\t\treturn { sql: this.mapInlineParam(mappedValue, config), params: [] };\n\t\t\t\t}\n\n\t\t\t\tlet typings: QueryTypingsValue[] = ['none'];\n\t\t\t\tif (prepareTyping) {\n\t\t\t\t\ttypings = [prepareTyping(chunk.encoder)];\n\t\t\t\t}\n\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, mappedValue), params: [mappedValue], typings };\n\t\t\t}\n\n\t\t\tif (is(chunk, Placeholder)) {\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: ['none'] };\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL.Aliased) && chunk.fieldAlias !== undefined) {\n\t\t\t\treturn { sql: escapeName(chunk.fieldAlias), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Subquery)) {\n\t\t\t\tif (chunk._.isWith) {\n\t\t\t\t\treturn { sql: escapeName(chunk._.alias), params: [] };\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk._.sql,\n\t\t\t\t\tnew StringChunk(') '),\n\t\t\t\t\tnew Name(chunk._.alias),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (isPgEnum(chunk)) {\n\t\t\t\tif (chunk.schema) {\n\t\t\t\t\treturn { sql: escapeName(chunk.schema) + '.' + escapeName(chunk.enumName), params: [] };\n\t\t\t\t}\n\t\t\t\treturn { sql: escapeName(chunk.enumName), params: [] };\n\t\t\t}\n\n\t\t\tif (isSQLWrapper(chunk)) {\n\t\t\t\tif (chunk.shouldOmitSQLParens?.()) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([chunk.getSQL()], config);\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk.getSQL(),\n\t\t\t\t\tnew StringChunk(')'),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (inlineParams) {\n\t\t\t\treturn { sql: this.mapInlineParam(chunk, config), params: [] };\n\t\t\t}\n\n\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk], typings: ['none'] };\n\t\t}));\n\t}\n\n\tprivate mapInlineParam(\n\t\tchunk: unknown,\n\t\t{ escapeString }: BuildQueryConfig,\n\t): string {\n\t\tif (chunk === null) {\n\t\t\treturn 'null';\n\t\t}\n\t\tif (typeof chunk === 'number' || typeof chunk === 'boolean') {\n\t\t\treturn chunk.toString();\n\t\t}\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn escapeString(chunk);\n\t\t}\n\t\tif (typeof chunk === 'object') {\n\t\t\tconst mappedValueAsString = chunk.toString();\n\t\t\tif (mappedValueAsString === '[object Object]') {\n\t\t\t\treturn escapeString(JSON.stringify(chunk));\n\t\t\t}\n\t\t\treturn escapeString(mappedValueAsString);\n\t\t}\n\t\tthrow new Error('Unexpected param value: ' + chunk);\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this;\n\t}\n\n\tas(alias: string): SQL.Aliased<T>;\n\t/**\n\t * @deprecated\n\t * Use ``sql<DataType>`query`.as(alias)`` instead.\n\t */\n\tas<TData>(): SQL<TData>;\n\t/**\n\t * @deprecated\n\t * Use ``sql<DataType>`query`.as(alias)`` instead.\n\t */\n\tas<TData>(alias: string): SQL.Aliased<TData>;\n\tas(alias?: string): SQL<T> | SQL.Aliased<T> {\n\t\t// TODO: remove with deprecated overloads\n\t\tif (alias === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\treturn new SQL.Aliased(this, alias);\n\t}\n\n\tmapWith<\n\t\tTDecoder extends\n\t\t\t| DriverValueDecoder<any, any>\n\t\t\t| DriverValueDecoder<any, any>['mapFromDriverValue'],\n\t>(decoder: TDecoder): SQL<GetDecoderResult<TDecoder>> {\n\t\tthis.decoder = typeof decoder === 'function' ? { mapFromDriverValue: decoder } : decoder;\n\t\treturn this as SQL<GetDecoderResult<TDecoder>>;\n\t}\n\n\tinlineParams(): this {\n\t\tthis.shouldInlineParams = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * This method is used to conditionally include a part of the query.\n\t *\n\t * @param condition - Condition to check\n\t * @returns itself if the condition is `true`, otherwise `undefined`\n\t */\n\tif(condition: any | undefined): this | undefined {\n\t\treturn condition ? this : undefined;\n\t}\n}\n\nexport type GetDecoderResult<T> = T extends Column ? T['_']['data'] : T extends\n\t| DriverValueDecoder<infer TData, any>\n\t| DriverValueDecoder<infer TData, any>['mapFromDriverValue'] ? TData\n: never;\n\n/**\n * Any DB name (table, column, index etc.)\n */\nexport class Name implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Name';\n\n\tprotected brand!: 'Name';\n\n\tconstructor(readonly value: string) {}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/**\n * Any DB name (table, column, index etc.)\n * @deprecated Use `sql.identifier` instead.\n */\nexport function name(value: string): Name {\n\treturn new Name(value);\n}\n\nexport interface DriverValueDecoder<TData, TDriverParam> {\n\tmapFromDriverValue(value: TDriverParam): TData;\n}\n\nexport interface DriverValueEncoder<TData, TDriverParam> {\n\tmapToDriverValue(value: TData): TDriverParam | SQL;\n}\n\nexport function isDriverValueEncoder(value: unknown): value is DriverValueEncoder<any, any> {\n\treturn typeof value === 'object' && value !== null && 'mapToDriverValue' in value\n\t\t&& typeof (value as any).mapToDriverValue === 'function';\n}\n\nexport const noopDecoder: DriverValueDecoder<any, any> = {\n\tmapFromDriverValue: (value) => value,\n};\n\nexport const noopEncoder: DriverValueEncoder<any, any> = {\n\tmapToDriverValue: (value) => value,\n};\n\nexport interface DriverValueMapper<TData, TDriverParam>\n\textends DriverValueDecoder<TData, TDriverParam>, DriverValueEncoder<TData, TDriverParam>\n{}\n\nexport const noopMapper: DriverValueMapper<any, any> = {\n\t...noopDecoder,\n\t...noopEncoder,\n};\n\n/** Parameter value that is optionally bound to an encoder (for example, a column). */\nexport class Param<TDataType = unknown, TDriverParamType = TDataType> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Param';\n\n\tprotected brand!: 'BoundParamValue';\n\n\t/**\n\t * @param value - Parameter value\n\t * @param encoder - Encoder to convert the value to a driver parameter\n\t */\n\tconstructor(\n\t\treadonly value: TDataType,\n\t\treadonly encoder: DriverValueEncoder<TDataType, TDriverParamType> = noopEncoder,\n\t) {}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.param` instead. */\nexport function param<TData, TDriver>(\n\tvalue: TData,\n\tencoder?: DriverValueEncoder<TData, TDriver>,\n): Param<TData, TDriver> {\n\treturn new Param(value, encoder);\n}\n\n/**\n * Anything that can be passed to the `` sql`...` `` tagged function.\n */\nexport type SQLChunk =\n\t| StringChunk\n\t| SQLChunk[]\n\t| SQLWrapper\n\t| SQL\n\t| Table\n\t| View\n\t| Subquery\n\t| AnyColumn\n\t| Param\n\t| Name\n\t| undefined\n\t| FakePrimitiveParam\n\t| Placeholder;\n\nexport function sql<T>(strings: TemplateStringsArray, ...params: any[]): SQL<T>;\n/*\n\tThe type of `params` is specified as `SQLChunk[]`, but that's slightly incorrect -\n\tin runtime, users won't pass `FakePrimitiveParam` instances as `params` - they will pass primitive values\n\twhich will be wrapped in `Param`. That's why the overload specifies `params` as `any[]` and not as `SQLSourceParam[]`.\n\tThis type is used to make our lives easier and the type checker happy.\n*/\nexport function sql(strings: TemplateStringsArray, ...params: SQLChunk[]): SQL {\n\tconst queryChunks: SQLChunk[] = [];\n\tif (params.length > 0 || (strings.length > 0 && strings[0] !== '')) {\n\t\tqueryChunks.push(new StringChunk(strings[0]!));\n\t}\n\tfor (const [paramIndex, param] of params.entries()) {\n\t\tqueryChunks.push(param, new StringChunk(strings[paramIndex + 1]!));\n\t}\n\n\treturn new SQL(queryChunks);\n}\n\nexport namespace sql {\n\texport function empty(): SQL {\n\t\treturn new SQL([]);\n\t}\n\n\t/** @deprecated - use `sql.join()` */\n\texport function fromList(list: SQLChunk[]): SQL {\n\t\treturn new SQL(list);\n\t}\n\n\t/**\n\t * Convenience function to create an SQL query from a raw string.\n\t * @param str The raw SQL query string.\n\t */\n\texport function raw(str: string): SQL {\n\t\treturn new SQL([new StringChunk(str)]);\n\t}\n\n\t/**\n\t * Join a list of SQL chunks with a separator.\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`]);\n\t * // sql`abc`\n\t * ```\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`], sql`, `);\n\t * // sql`a, b, c`\n\t * ```\n\t */\n\texport function join(chunks: SQLChunk[], separator?: SQLChunk): SQL {\n\t\tconst result: SQLChunk[] = [];\n\t\tfor (const [i, chunk] of chunks.entries()) {\n\t\t\tif (i > 0 && separator !== undefined) {\n\t\t\t\tresult.push(separator);\n\t\t\t}\n\t\t\tresult.push(chunk);\n\t\t}\n\t\treturn new SQL(result);\n\t}\n\n\t/**\n\t * Create a SQL chunk that represents a DB identifier (table, column, index etc.).\n\t * When used in a query, the identifier will be escaped based on the DB engine.\n\t * For example, in PostgreSQL, identifiers are escaped with double quotes.\n\t *\n\t * **WARNING: This function does not offer any protection against SQL injections, so you must validate any user input beforehand.**\n\t *\n\t * @example ```ts\n\t * const query = sql`SELECT * FROM ${sql.identifier('my-table')}`;\n\t * // 'SELECT * FROM \"my-table\"'\n\t * ```\n\t */\n\texport function identifier(value: string): Name {\n\t\treturn new Name(value);\n\t}\n\n\texport function placeholder<TName extends string>(name: TName): Placeholder<TName> {\n\t\treturn new Placeholder(name);\n\t}\n\n\texport function param<TData, TDriver>(\n\t\tvalue: TData,\n\t\tencoder?: DriverValueEncoder<TData, TDriver>,\n\t): Param<TData, TDriver> {\n\t\treturn new Param(value, encoder);\n\t}\n}\n\nexport namespace SQL {\n\texport class Aliased<T = unknown> implements SQLWrapper {\n\t\tstatic readonly [entityKind]: string = 'SQL.Aliased';\n\n\t\tdeclare _: {\n\t\t\tbrand: 'SQL.Aliased';\n\t\t\ttype: T;\n\t\t};\n\n\t\t/** @internal */\n\t\tisSelectionField = false;\n\n\t\tconstructor(\n\t\t\treadonly sql: SQL,\n\t\t\treadonly fieldAlias: string,\n\t\t) {}\n\n\t\tgetSQL(): SQL {\n\t\t\treturn this.sql;\n\t\t}\n\n\t\t/** @internal */\n\t\tclone() {\n\t\t\treturn new Aliased(this.sql, this.fieldAlias);\n\t\t}\n\t}\n}\n\nexport class Placeholder<TName extends string = string, TValue = any> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Placeholder';\n\n\tdeclare protected: TValue;\n\n\tconstructor(readonly name: TName) {}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.placeholder` instead. */\nexport function placeholder<TName extends string>(name: TName): Placeholder<TName> {\n\treturn new Placeholder(name);\n}\n\nexport function fillPlaceholders(params: unknown[], values: Record<string, unknown>): unknown[] {\n\treturn params.map((p) => {\n\t\tif (is(p, Placeholder)) {\n\t\t\tif (!(p.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.name}\" was provided`);\n\t\t\t}\n\n\t\t\treturn values[p.name];\n\t\t}\n\n\t\tif (is(p, Param) && is(p.value, Placeholder)) {\n\t\t\tif (!(p.value.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.value.name}\" was provided`);\n\t\t\t}\n\n\t\t\treturn p.encoder.mapToDriverValue(values[p.value.name]);\n\t\t}\n\n\t\treturn p;\n\t});\n}\n\nexport type ColumnsSelection = Record<string, unknown>;\n\nconst IsDrizzleView = Symbol.for('drizzle:IsDrizzleView');\n\nexport abstract class View<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n\tTSelection extends ColumnsSelection = ColumnsSelection,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'View';\n\n\tdeclare _: {\n\t\tbrand: 'View';\n\t\tviewBrand: string;\n\t\tname: TName;\n\t\texisting: TExisting;\n\t\tselectedFields: TSelection;\n\t};\n\n\t/** @internal */\n\t[ViewBaseConfig]: {\n\t\tname: TName;\n\t\toriginalName: TName;\n\t\tschema: string | undefined;\n\t\tselectedFields: ColumnsSelection;\n\t\tisExisting: TExisting;\n\t\tquery: TExisting extends true ? undefined : SQL;\n\t\tisAlias: boolean;\n\t};\n\n\t/** @internal */\n\t[IsDrizzleView] = true;\n\n\tdeclare readonly $inferSelect: InferSelectViewModel<View<Assume<TName, string>, TExisting, TSelection>>;\n\n\tconstructor(\n\t\t{ name, schema, selectedFields, query }: {\n\t\t\tname: TName;\n\t\t\tschema: string | undefined;\n\t\t\tselectedFields: ColumnsSelection;\n\t\t\tquery: SQL | undefined;\n\t\t},\n\t) {\n\t\tthis[ViewBaseConfig] = {\n\t\t\tname,\n\t\t\toriginalName: name,\n\t\t\tschema,\n\t\t\tselectedFields,\n\t\t\tquery: query as (TExisting extends true ? undefined : SQL),\n\t\t\tisExisting: !query as TExisting,\n\t\t\tisAlias: false,\n\t\t};\n\t}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\nexport function isView(view: unknown): view is View {\n\treturn typeof view === 'object' && view !== null && IsDrizzleView in view;\n}\n\nexport function getViewName<T extends View>(view: T): T['_']['name'] {\n\treturn view[ViewBaseConfig].name;\n}\n\nexport type InferSelectViewModel<TView extends View> =\n\tEqual<TView['_']['selectedFields'], { [x: string]: unknown }> extends true ? { [x: string]: unknown }\n\t\t: SelectResult<\n\t\t\tTView['_']['selectedFields'],\n\t\t\t'single',\n\t\t\tRecord<TView['_']['name'], 'not-null'>\n\t\t>;\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\n// Defined separately from the Table class to resolve circular dependency\nTable.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\n// Defined separately from the Column class to resolve circular dependency\nSubquery.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,kBAAyB;AAEzB,sBAAyB;AACzB,qBAAuB;AAEvB,yBAA+B;AAE/B,oBAAuB;AACvB,mBAA+B;AAOxB,MAAM,mBAAmB;AAAA,EAC/B,QAAiB,wBAAU,IAAY;AACxC;AAkDO,SAAS,aAAa,OAAqC;AACjE,SAAO,UAAU,QAAQ,UAAU,UAAa,OAAQ,MAAc,WAAW;AAClF;AAEA,SAAS,aAAa,SAA+C;AACpE,QAAM,SAA2B,EAAE,KAAK,IAAI,QAAQ,CAAC,EAAE;AACvD,aAAW,SAAS,SAAS;AAC5B,WAAO,OAAO,MAAM;AACpB,WAAO,OAAO,KAAK,GAAG,MAAM,MAAM;AAClC,QAAI,MAAM,SAAS,QAAQ;AAC1B,UAAI,CAAC,OAAO,SAAS;AACpB,eAAO,UAAU,CAAC;AAAA,MACnB;AACA,aAAO,QAAQ,KAAK,GAAG,MAAM,OAAO;AAAA,IACrC;AAAA,EACD;AACA,SAAO;AACR;AAEO,MAAM,YAAkC;AAAA,EAC9C,QAAiB,wBAAU,IAAY;AAAA,EAE9B;AAAA,EAET,YAAY,OAA0B;AACrC,SAAK,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,EACnD;AAAA,EAEA,SAAuB;AACtB,WAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EACtB;AACD;AAEO,MAAM,IAAuC;AAAA,EAenD,YAAqB,aAAyB;AAAzB;AACpB,eAAW,SAAS,aAAa;AAChC,cAAI,kBAAG,OAAO,kBAAK,GAAG;AACrB,cAAM,aAAa,MAAM,mBAAM,OAAO,MAAM;AAE5C,aAAK,WAAW;AAAA,UACf,eAAe,SACZ,MAAM,mBAAM,OAAO,IAAI,IACvB,aAAa,MAAM,MAAM,mBAAM,OAAO,IAAI;AAAA,QAC9C;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EA1BA,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAQvC,UAAsC;AAAA,EAC9B,qBAAqB;AAAA;AAAA,EAG7B,aAAuB,CAAC;AAAA,EAgBxB,OAAO,OAAkB;AACxB,SAAK,YAAY,KAAK,GAAG,MAAM,WAAW;AAC1C,WAAO;AAAA,EACR;AAAA,EAEA,QAAQ,QAA4C;AACnD,WAAO,sBAAO,gBAAgB,oBAAoB,CAAC,SAAS;AAC3D,YAAM,QAAQ,KAAK,2BAA2B,KAAK,aAAa,MAAM;AACtE,YAAM,cAAc;AAAA,QACnB,sBAAsB,MAAM;AAAA,QAC5B,wBAAwB,KAAK,UAAU,MAAM,MAAM;AAAA,MACpD,CAAC;AACD,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,2BAA2B,QAAoB,SAAkC;AAChF,UAAM,SAAS,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA,MACzC,cAAc,QAAQ,gBAAgB,KAAK;AAAA,MAC3C,iBAAiB,QAAQ,mBAAmB,EAAE,OAAO,EAAE;AAAA,IACxD,CAAC;AAED,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AAEJ,WAAO,aAAa,OAAO,IAAI,CAAC,UAA4B;AAC3D,cAAI,kBAAG,OAAO,WAAW,GAAG;AAC3B,eAAO,EAAE,KAAK,MAAM,MAAM,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE;AAAA,MAChD;AAEA,cAAI,kBAAG,OAAO,IAAI,GAAG;AACpB,eAAO,EAAE,KAAK,WAAW,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE;AAAA,MACnD;AAEA,UAAI,UAAU,QAAW;AACxB,eAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,EAAE;AAAA,MAC9B;AAEA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,cAAM,SAAqB,CAAC,IAAI,YAAY,GAAG,CAAC;AAChD,mBAAW,CAAC,GAAG,CAAC,KAAK,MAAM,QAAQ,GAAG;AACrC,iBAAO,KAAK,CAAC;AACb,cAAI,IAAI,MAAM,SAAS,GAAG;AACzB,mBAAO,KAAK,IAAI,YAAY,IAAI,CAAC;AAAA,UAClC;AAAA,QACD;AACA,eAAO,KAAK,IAAI,YAAY,GAAG,CAAC;AAChC,eAAO,KAAK,2BAA2B,QAAQ,MAAM;AAAA,MACtD;AAEA,cAAI,kBAAG,OAAO,GAAG,GAAG;AACnB,eAAO,KAAK,2BAA2B,MAAM,aAAa;AAAA,UACzD,GAAG;AAAA,UACH,cAAc,gBAAgB,MAAM;AAAA,QACrC,CAAC;AAAA,MACF;AAEA,cAAI,kBAAG,OAAO,kBAAK,GAAG;AACrB,cAAM,aAAa,MAAM,mBAAM,OAAO,MAAM;AAC5C,cAAM,YAAY,MAAM,mBAAM,OAAO,IAAI;AACzC,eAAO;AAAA,UACN,KAAK,eAAe,UAAa,MAAM,oBAAO,IAC3C,WAAW,SAAS,IACpB,WAAW,UAAU,IAAI,MAAM,WAAW,SAAS;AAAA,UACtD,QAAQ,CAAC;AAAA,QACV;AAAA,MACD;AAEA,cAAI,kBAAG,OAAO,oBAAM,GAAG;AACtB,cAAM,aAAa,OAAO,gBAAgB,KAAK;AAC/C,YAAI,QAAQ,iBAAiB,WAAW;AACvC,iBAAO,EAAE,KAAK,WAAW,UAAU,GAAG,QAAQ,CAAC,EAAE;AAAA,QAClD;AAEA,cAAM,aAAa,MAAM,MAAM,mBAAM,OAAO,MAAM;AAClD,eAAO;AAAA,UACN,KAAK,MAAM,MAAM,oBAAO,KAAK,eAAe,SACzC,WAAW,MAAM,MAAM,mBAAM,OAAO,IAAI,CAAC,IAAI,MAAM,WAAW,UAAU,IACxE,WAAW,UAAU,IAAI,MAAM,WAAW,MAAM,MAAM,mBAAM,OAAO,IAAI,CAAC,IAAI,MAC3E,WAAW,UAAU;AAAA,UACzB,QAAQ,CAAC;AAAA,QACV;AAAA,MACD;AAEA,cAAI,kBAAG,OAAO,IAAI,GAAG;AACpB,cAAM,aAAa,MAAM,iCAAc,EAAE;AACzC,cAAM,WAAW,MAAM,iCAAc,EAAE;AACvC,eAAO;AAAA,UACN,KAAK,eAAe,UAAa,MAAM,iCAAc,EAAE,UACpD,WAAW,QAAQ,IACnB,WAAW,UAAU,IAAI,MAAM,WAAW,QAAQ;AAAA,UACrD,QAAQ,CAAC;AAAA,QACV;AAAA,MACD;AAEA,cAAI,kBAAG,OAAO,KAAK,GAAG;AACrB,gBAAI,kBAAG,MAAM,OAAO,WAAW,GAAG;AACjC,iBAAO,EAAE,KAAK,YAAY,gBAAgB,SAAS,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;AAAA,QAC/F;AAEA,cAAM,cAAc,MAAM,UAAU,OAAO,OAAO,MAAM,QAAQ,iBAAiB,MAAM,KAAK;AAE5F,gBAAI,kBAAG,aAAa,GAAG,GAAG;AACzB,iBAAO,KAAK,2BAA2B,CAAC,WAAW,GAAG,MAAM;AAAA,QAC7D;AAEA,YAAI,cAAc;AACjB,iBAAO,EAAE,KAAK,KAAK,eAAe,aAAa,MAAM,GAAG,QAAQ,CAAC,EAAE;AAAA,QACpE;AAEA,YAAI,UAA+B,CAAC,MAAM;AAC1C,YAAI,eAAe;AAClB,oBAAU,CAAC,cAAc,MAAM,OAAO,CAAC;AAAA,QACxC;AAEA,eAAO,EAAE,KAAK,YAAY,gBAAgB,SAAS,WAAW,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ;AAAA,MACjG;AAEA,cAAI,kBAAG,OAAO,WAAW,GAAG;AAC3B,eAAO,EAAE,KAAK,YAAY,gBAAgB,SAAS,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;AAAA,MAC/F;AAEA,cAAI,kBAAG,OAAO,IAAI,OAAO,KAAK,MAAM,eAAe,QAAW;AAC7D,eAAO,EAAE,KAAK,WAAW,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE;AAAA,MACxD;AAEA,cAAI,kBAAG,OAAO,wBAAQ,GAAG;AACxB,YAAI,MAAM,EAAE,QAAQ;AACnB,iBAAO,EAAE,KAAK,WAAW,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,EAAE;AAAA,QACrD;AACA,eAAO,KAAK,2BAA2B;AAAA,UACtC,IAAI,YAAY,GAAG;AAAA,UACnB,MAAM,EAAE;AAAA,UACR,IAAI,YAAY,IAAI;AAAA,UACpB,IAAI,KAAK,MAAM,EAAE,KAAK;AAAA,QACvB,GAAG,MAAM;AAAA,MACV;AAEA,cAAI,sBAAS,KAAK,GAAG;AACpB,YAAI,MAAM,QAAQ;AACjB,iBAAO,EAAE,KAAK,WAAW,MAAM,MAAM,IAAI,MAAM,WAAW,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE;AAAA,QACvF;AACA,eAAO,EAAE,KAAK,WAAW,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE;AAAA,MACtD;AAEA,UAAI,aAAa,KAAK,GAAG;AACxB,YAAI,MAAM,sBAAsB,GAAG;AAClC,iBAAO,KAAK,2BAA2B,CAAC,MAAM,OAAO,CAAC,GAAG,MAAM;AAAA,QAChE;AACA,eAAO,KAAK,2BAA2B;AAAA,UACtC,IAAI,YAAY,GAAG;AAAA,UACnB,MAAM,OAAO;AAAA,UACb,IAAI,YAAY,GAAG;AAAA,QACpB,GAAG,MAAM;AAAA,MACV;AAEA,UAAI,cAAc;AACjB,eAAO,EAAE,KAAK,KAAK,eAAe,OAAO,MAAM,GAAG,QAAQ,CAAC,EAAE;AAAA,MAC9D;AAEA,aAAO,EAAE,KAAK,YAAY,gBAAgB,SAAS,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;AAAA,IAC/F,CAAC,CAAC;AAAA,EACH;AAAA,EAEQ,eACP,OACA,EAAE,aAAa,GACN;AACT,QAAI,UAAU,MAAM;AACnB,aAAO;AAAA,IACR;AACA,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAC5D,aAAO,MAAM,SAAS;AAAA,IACvB;AACA,QAAI,OAAO,UAAU,UAAU;AAC9B,aAAO,aAAa,KAAK;AAAA,IAC1B;AACA,QAAI,OAAO,UAAU,UAAU;AAC9B,YAAM,sBAAsB,MAAM,SAAS;AAC3C,UAAI,wBAAwB,mBAAmB;AAC9C,eAAO,aAAa,KAAK,UAAU,KAAK,CAAC;AAAA,MAC1C;AACA,aAAO,aAAa,mBAAmB;AAAA,IACxC;AACA,UAAM,IAAI,MAAM,6BAA6B,KAAK;AAAA,EACnD;AAAA,EAEA,SAAc;AACb,WAAO;AAAA,EACR;AAAA,EAaA,GAAG,OAAyC;AAE3C,QAAI,UAAU,QAAW;AACxB,aAAO;AAAA,IACR;AAEA,WAAO,IAAI,IAAI,QAAQ,MAAM,KAAK;AAAA,EACnC;AAAA,EAEA,QAIE,SAAoD;AACrD,SAAK,UAAU,OAAO,YAAY,aAAa,EAAE,oBAAoB,QAAQ,IAAI;AACjF,WAAO;AAAA,EACR;AAAA,EAEA,eAAqB;AACpB,SAAK,qBAAqB;AAC1B,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAG,WAA8C;AAChD,WAAO,YAAY,OAAO;AAAA,EAC3B;AACD;AAUO,MAAM,KAA2B;AAAA,EAKvC,YAAqB,OAAe;AAAf;AAAA,EAAgB;AAAA,EAJrC,QAAiB,wBAAU,IAAY;AAAA,EAE7B;AAAA,EAIV,SAAuB;AACtB,WAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EACtB;AACD;AAMO,SAAS,KAAK,OAAqB;AACzC,SAAO,IAAI,KAAK,KAAK;AACtB;AAUO,SAAS,qBAAqB,OAAuD;AAC3F,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,sBAAsB,SACxE,OAAQ,MAAc,qBAAqB;AAChD;AAEO,MAAM,cAA4C;AAAA,EACxD,oBAAoB,CAAC,UAAU;AAChC;AAEO,MAAM,cAA4C;AAAA,EACxD,kBAAkB,CAAC,UAAU;AAC9B;AAMO,MAAM,aAA0C;AAAA,EACtD,GAAG;AAAA,EACH,GAAG;AACJ;AAGO,MAAM,MAA+E;AAAA;AAAA;AAAA;AAAA;AAAA,EAS3F,YACU,OACA,UAA2D,aACnE;AAFQ;AACA;AAAA,EACP;AAAA,EAXH,QAAiB,wBAAU,IAAY;AAAA,EAE7B;AAAA,EAWV,SAAuB;AACtB,WAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EACtB;AACD;AAGO,SAAS,MACf,OACA,SACwB;AACxB,SAAO,IAAI,MAAM,OAAO,OAAO;AAChC;AA2BO,SAAS,IAAI,YAAkC,QAAyB;AAC9E,QAAM,cAA0B,CAAC;AACjC,MAAI,OAAO,SAAS,KAAM,QAAQ,SAAS,KAAK,QAAQ,CAAC,MAAM,IAAK;AACnE,gBAAY,KAAK,IAAI,YAAY,QAAQ,CAAC,CAAE,CAAC;AAAA,EAC9C;AACA,aAAW,CAAC,YAAYA,MAAK,KAAK,OAAO,QAAQ,GAAG;AACnD,gBAAY,KAAKA,QAAO,IAAI,YAAY,QAAQ,aAAa,CAAC,CAAE,CAAC;AAAA,EAClE;AAEA,SAAO,IAAI,IAAI,WAAW;AAC3B;AAAA,CAEO,CAAUC,SAAV;AACC,WAAS,QAAa;AAC5B,WAAO,IAAI,IAAI,CAAC,CAAC;AAAA,EAClB;AAFO,EAAAA,KAAS;AAKT,WAAS,SAAS,MAAuB;AAC/C,WAAO,IAAI,IAAI,IAAI;AAAA,EACpB;AAFO,EAAAA,KAAS;AAQT,WAAS,IAAI,KAAkB;AACrC,WAAO,IAAI,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,EACtC;AAFO,EAAAA,KAAS;AAiBT,WAAS,KAAK,QAAoB,WAA2B;AACnE,UAAM,SAAqB,CAAC;AAC5B,eAAW,CAAC,GAAG,KAAK,KAAK,OAAO,QAAQ,GAAG;AAC1C,UAAI,IAAI,KAAK,cAAc,QAAW;AACrC,eAAO,KAAK,SAAS;AAAA,MACtB;AACA,aAAO,KAAK,KAAK;AAAA,IAClB;AACA,WAAO,IAAI,IAAI,MAAM;AAAA,EACtB;AATO,EAAAA,KAAS;AAuBT,WAAS,WAAW,OAAqB;AAC/C,WAAO,IAAI,KAAK,KAAK;AAAA,EACtB;AAFO,EAAAA,KAAS;AAIT,WAASC,aAAkCC,OAAiC;AAClF,WAAO,IAAI,YAAYA,KAAI;AAAA,EAC5B;AAFO,EAAAF,KAAS,cAAAC;AAIT,WAASF,OACf,OACA,SACwB;AACxB,WAAO,IAAI,MAAM,OAAO,OAAO;AAAA,EAChC;AALO,EAAAC,KAAS,QAAAD;AAAA,GA9DA;AAAA,CAsEV,CAAUI,SAAV;AAAA,EACC,MAAM,QAA2C;AAAA,IAWvD,YACUH,MACA,YACR;AAFQ,iBAAAA;AACA;AAAA,IACP;AAAA,IAbH,QAAiB,wBAAU,IAAY;AAAA;AAAA,IAQvC,mBAAmB;AAAA,IAOnB,SAAc;AACb,aAAO,KAAK;AAAA,IACb;AAAA;AAAA,IAGA,QAAQ;AACP,aAAO,IAAI,QAAQ,KAAK,KAAK,KAAK,UAAU;AAAA,IAC7C;AAAA,EACD;AAxBO,EAAAG,KAAM;AAAA,GADG;AA4BV,MAAM,YAA+E;AAAA,EAK3F,YAAqBD,OAAa;AAAb,gBAAAA;AAAA,EAAc;AAAA,EAJnC,QAAiB,wBAAU,IAAY;AAAA,EAMvC,SAAc;AACb,WAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EACtB;AACD;AAGO,SAAS,YAAkCA,OAAiC;AAClF,SAAO,IAAI,YAAYA,KAAI;AAC5B;AAEO,SAAS,iBAAiB,QAAmB,QAA4C;AAC/F,SAAO,OAAO,IAAI,CAAC,MAAM;AACxB,YAAI,kBAAG,GAAG,WAAW,GAAG;AACvB,UAAI,EAAE,EAAE,QAAQ,SAAS;AACxB,cAAM,IAAI,MAAM,6BAA6B,EAAE,IAAI,gBAAgB;AAAA,MACpE;AAEA,aAAO,OAAO,EAAE,IAAI;AAAA,IACrB;AAEA,YAAI,kBAAG,GAAG,KAAK,SAAK,kBAAG,EAAE,OAAO,WAAW,GAAG;AAC7C,UAAI,EAAE,EAAE,MAAM,QAAQ,SAAS;AAC9B,cAAM,IAAI,MAAM,6BAA6B,EAAE,MAAM,IAAI,gBAAgB;AAAA,MAC1E;AAEA,aAAO,EAAE,QAAQ,iBAAiB,OAAO,EAAE,MAAM,IAAI,CAAC;AAAA,IACvD;AAEA,WAAO;AAAA,EACR,CAAC;AACF;AAIA,MAAM,gBAAgB,OAAO,IAAI,uBAAuB;AAEjD,MAAe,KAIE;AAAA,EACvB,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAWvC,CAAC,iCAAc;AAAA;AAAA,EAWf,CAAC,aAAa,IAAI;AAAA,EAIlB,YACC,EAAE,MAAAA,OAAM,QAAQ,gBAAgB,MAAM,GAMrC;AACD,SAAK,iCAAc,IAAI;AAAA,MACtB,MAAAA;AAAA,MACA,cAAcA;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,CAAC;AAAA,MACb,SAAS;AAAA,IACV;AAAA,EACD;AAAA,EAEA,SAAuB;AACtB,WAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EACtB;AACD;AAEO,SAAS,OAAO,MAA6B;AACnD,SAAO,OAAO,SAAS,YAAY,SAAS,QAAQ,iBAAiB;AACtE;AAEO,SAAS,YAA4B,MAAyB;AACpE,SAAO,KAAK,iCAAc,EAAE;AAC7B;AAWA,qBAAO,UAAU,SAAS,WAAW;AACpC,SAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AACtB;AAGA,mBAAM,UAAU,SAAS,WAAW;AACnC,SAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AACtB;AAGA,yBAAS,UAAU,SAAS,WAAW;AACtC,SAAO,IAAI,IAAI,CAAC,IAAI,CAAC;AACtB;","names":["param","sql","placeholder","name","SQL"]}
|
package/sql/sql.js
CHANGED
|
@@ -38,11 +38,21 @@ class StringChunk {
|
|
|
38
38
|
class SQL {
|
|
39
39
|
constructor(queryChunks) {
|
|
40
40
|
this.queryChunks = queryChunks;
|
|
41
|
+
for (const chunk of queryChunks) {
|
|
42
|
+
if (is(chunk, Table)) {
|
|
43
|
+
const schemaName = chunk[Table.Symbol.Schema];
|
|
44
|
+
this.usedTables.push(
|
|
45
|
+
schemaName === void 0 ? chunk[Table.Symbol.Name] : schemaName + "." + chunk[Table.Symbol.Name]
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
41
49
|
}
|
|
42
50
|
static [entityKind] = "SQL";
|
|
43
51
|
/** @internal */
|
|
44
52
|
decoder = noopDecoder;
|
|
45
53
|
shouldInlineParams = false;
|
|
54
|
+
/** @internal */
|
|
55
|
+
usedTables = [];
|
|
46
56
|
append(query) {
|
|
47
57
|
this.queryChunks.push(...query.queryChunks);
|
|
48
58
|
return this;
|