drizzle-orm 0.39.0-19ccabb → 0.39.0-2c67783
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/alias.cjs.map +1 -1
- package/alias.d.cts +3 -3
- package/alias.d.ts +3 -3
- package/alias.js.map +1 -1
- package/aws-data-api/pg/driver.cjs +5 -19
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +8 -9
- package/aws-data-api/pg/driver.d.ts +8 -9
- package/aws-data-api/pg/driver.js +8 -9
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/migrator.cjs.map +1 -1
- package/aws-data-api/pg/migrator.d.cts +1 -2
- package/aws-data-api/pg/migrator.d.ts +1 -2
- package/aws-data-api/pg/migrator.js.map +1 -1
- package/aws-data-api/pg/session.cjs +4 -67
- package/aws-data-api/pg/session.cjs.map +1 -1
- package/aws-data-api/pg/session.d.cts +8 -13
- package/aws-data-api/pg/session.d.ts +8 -13
- package/aws-data-api/pg/session.js +4 -67
- package/aws-data-api/pg/session.js.map +1 -1
- package/better-sqlite3/driver.cjs +5 -12
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.d.cts +6 -7
- package/better-sqlite3/driver.d.ts +6 -7
- package/better-sqlite3/driver.js +8 -12
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/migrator.cjs.map +1 -1
- package/better-sqlite3/migrator.d.cts +1 -2
- package/better-sqlite3/migrator.d.ts +1 -2
- package/better-sqlite3/migrator.js.map +1 -1
- package/better-sqlite3/session.cjs +4 -49
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +8 -14
- package/better-sqlite3/session.d.ts +8 -14
- package/better-sqlite3/session.js +4 -49
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/driver.cjs +96 -0
- package/bun-sql/driver.cjs.map +1 -0
- package/bun-sql/driver.d.cts +30 -0
- package/bun-sql/driver.d.ts +30 -0
- package/bun-sql/driver.js +74 -0
- package/bun-sql/driver.js.map +1 -0
- package/bun-sql/index.cjs +25 -0
- package/bun-sql/index.cjs.map +1 -0
- package/bun-sql/index.d.cts +2 -0
- package/bun-sql/index.d.ts +2 -0
- package/bun-sql/index.js +3 -0
- package/bun-sql/index.js.map +1 -0
- package/bun-sql/migrator.cjs +33 -0
- package/bun-sql/migrator.cjs.map +1 -0
- package/bun-sql/migrator.d.cts +3 -0
- package/bun-sql/migrator.d.ts +3 -0
- package/bun-sql/migrator.js +9 -0
- package/bun-sql/migrator.js.map +1 -0
- package/bun-sql/session.cjs +162 -0
- package/bun-sql/session.cjs.map +1 -0
- package/bun-sql/session.d.cts +50 -0
- package/bun-sql/session.d.ts +50 -0
- package/bun-sql/session.js +136 -0
- package/bun-sql/session.js.map +1 -0
- package/bun-sqlite/driver.cjs +5 -22
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.d.cts +6 -7
- package/bun-sqlite/driver.d.ts +6 -7
- package/bun-sqlite/driver.js +8 -12
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/migrator.cjs.map +1 -1
- package/bun-sqlite/migrator.d.cts +1 -2
- package/bun-sqlite/migrator.d.ts +1 -2
- package/bun-sqlite/migrator.js.map +1 -1
- package/bun-sqlite/session.cjs +4 -49
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.d.cts +9 -15
- package/bun-sqlite/session.d.ts +9 -15
- package/bun-sqlite/session.js +4 -49
- package/bun-sqlite/session.js.map +1 -1
- package/d1/driver.cjs +5 -22
- package/d1/driver.cjs.map +1 -1
- package/d1/driver.d.cts +2 -3
- package/d1/driver.d.ts +2 -3
- package/d1/driver.js +8 -12
- package/d1/driver.js.map +1 -1
- package/d1/migrator.cjs.map +1 -1
- package/d1/migrator.d.cts +1 -2
- package/d1/migrator.d.ts +1 -2
- package/d1/migrator.js.map +1 -1
- package/d1/session.cjs +6 -48
- package/d1/session.cjs.map +1 -1
- package/d1/session.d.cts +8 -15
- package/d1/session.d.ts +8 -15
- package/d1/session.js +6 -48
- package/d1/session.js.map +1 -1
- package/durable-sqlite/driver.cjs +5 -16
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.d.cts +2 -3
- package/durable-sqlite/driver.d.ts +2 -3
- package/durable-sqlite/driver.js +8 -6
- package/durable-sqlite/driver.js.map +1 -1
- package/durable-sqlite/migrator.cjs.map +1 -1
- package/durable-sqlite/migrator.d.cts +1 -2
- package/durable-sqlite/migrator.d.ts +1 -2
- package/durable-sqlite/migrator.js.map +1 -1
- package/durable-sqlite/session.cjs +4 -46
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.d.cts +8 -14
- package/durable-sqlite/session.d.ts +8 -14
- package/durable-sqlite/session.js +4 -46
- package/durable-sqlite/session.js.map +1 -1
- package/expo-sqlite/driver.cjs +5 -22
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.d.cts +2 -3
- package/expo-sqlite/driver.d.ts +2 -3
- package/expo-sqlite/driver.js +8 -12
- package/expo-sqlite/driver.js.map +1 -1
- package/expo-sqlite/migrator.cjs.map +1 -1
- package/expo-sqlite/migrator.d.cts +2 -3
- package/expo-sqlite/migrator.d.ts +2 -3
- package/expo-sqlite/migrator.js.map +1 -1
- package/expo-sqlite/query.cjs +2 -13
- package/expo-sqlite/query.cjs.map +1 -1
- package/expo-sqlite/query.d.cts +1 -2
- package/expo-sqlite/query.d.ts +1 -2
- package/expo-sqlite/query.js +2 -3
- package/expo-sqlite/query.js.map +1 -1
- package/expo-sqlite/session.cjs +4 -47
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.d.cts +8 -14
- package/expo-sqlite/session.d.ts +8 -14
- package/expo-sqlite/session.js +4 -47
- package/expo-sqlite/session.js.map +1 -1
- package/libsql/driver-core.cjs +5 -22
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.d.cts +1 -2
- package/libsql/driver-core.d.ts +1 -2
- package/libsql/driver-core.js +8 -12
- package/libsql/driver-core.js.map +1 -1
- package/libsql/driver.cjs.map +1 -1
- package/libsql/driver.d.cts +5 -6
- package/libsql/driver.d.ts +5 -6
- package/libsql/driver.js.map +1 -1
- package/libsql/http/index.cjs.map +1 -1
- package/libsql/http/index.d.cts +5 -6
- package/libsql/http/index.d.ts +5 -6
- package/libsql/http/index.js.map +1 -1
- package/libsql/migrator.cjs.map +1 -1
- package/libsql/migrator.d.cts +1 -2
- package/libsql/migrator.d.ts +1 -2
- package/libsql/migrator.js.map +1 -1
- package/libsql/node/index.cjs.map +1 -1
- package/libsql/node/index.d.cts +5 -6
- package/libsql/node/index.d.ts +5 -6
- package/libsql/node/index.js.map +1 -1
- package/libsql/session.cjs +4 -56
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +9 -15
- package/libsql/session.d.ts +9 -15
- package/libsql/session.js +4 -56
- package/libsql/session.js.map +1 -1
- package/libsql/sqlite3/index.cjs.map +1 -1
- package/libsql/sqlite3/index.d.cts +5 -6
- package/libsql/sqlite3/index.d.ts +5 -6
- package/libsql/sqlite3/index.js.map +1 -1
- package/libsql/wasm/index.cjs.map +1 -1
- package/libsql/wasm/index.d.cts +5 -6
- package/libsql/wasm/index.d.ts +5 -6
- package/libsql/wasm/index.js.map +1 -1
- package/libsql/web/index.cjs.map +1 -1
- package/libsql/web/index.d.cts +5 -6
- package/libsql/web/index.d.ts +5 -6
- package/libsql/web/index.js.map +1 -1
- package/libsql/ws/index.cjs.map +1 -1
- package/libsql/ws/index.d.cts +5 -6
- package/libsql/ws/index.d.ts +5 -6
- package/libsql/ws/index.js.map +1 -1
- package/mysql-core/db.cjs +25 -40
- package/mysql-core/db.cjs.map +1 -1
- package/mysql-core/db.d.cts +12 -22
- package/mysql-core/db.d.ts +12 -22
- package/mysql-core/db.js +24 -39
- package/mysql-core/db.js.map +1 -1
- package/mysql-core/dialect.cjs +15 -194
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +13 -33
- package/mysql-core/dialect.d.ts +13 -33
- package/mysql-core/dialect.js +21 -191
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/count.cjs.map +1 -1
- package/mysql-core/query-builders/count.d.cts +1 -1
- package/mysql-core/query-builders/count.d.ts +1 -1
- package/mysql-core/query-builders/count.js.map +1 -1
- package/mysql-core/query-builders/query-builder.cjs +15 -11
- package/mysql-core/query-builders/query-builder.cjs.map +1 -1
- package/mysql-core/query-builders/query-builder.d.cts +2 -6
- package/mysql-core/query-builders/query-builder.d.ts +2 -6
- package/mysql-core/query-builders/query-builder.js +15 -11
- package/mysql-core/query-builders/query-builder.js.map +1 -1
- package/mysql-core/query-builders/query.cjs +31 -18
- package/mysql-core/query-builders/query.cjs.map +1 -1
- package/mysql-core/query-builders/query.d.cts +10 -8
- package/mysql-core/query-builders/query.d.ts +10 -8
- package/mysql-core/query-builders/query.js +31 -18
- package/mysql-core/query-builders/query.js.map +1 -1
- package/mysql-core/session.cjs +2 -3
- package/mysql-core/session.cjs.map +1 -1
- package/mysql-core/session.d.cts +7 -10
- package/mysql-core/session.d.ts +7 -10
- package/mysql-core/session.js +2 -3
- package/mysql-core/session.js.map +1 -1
- package/mysql-core/subquery.cjs.map +1 -1
- package/mysql-core/subquery.d.cts +15 -2
- package/mysql-core/subquery.d.ts +15 -2
- package/mysql-proxy/driver.cjs +5 -22
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.d.cts +2 -3
- package/mysql-proxy/driver.d.ts +2 -3
- package/mysql-proxy/driver.js +8 -12
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql-proxy/migrator.cjs.map +1 -1
- package/mysql-proxy/migrator.d.cts +1 -2
- package/mysql-proxy/migrator.d.ts +1 -2
- package/mysql-proxy/migrator.js.map +1 -1
- package/mysql-proxy/session.cjs +2 -27
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +8 -13
- package/mysql-proxy/session.d.ts +8 -13
- package/mysql-proxy/session.js +2 -27
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +7 -24
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +9 -10
- package/mysql2/driver.d.ts +9 -10
- package/mysql2/driver.js +10 -14
- package/mysql2/driver.js.map +1 -1
- package/mysql2/migrator.cjs.map +1 -1
- package/mysql2/migrator.d.cts +1 -2
- package/mysql2/migrator.d.ts +1 -2
- package/mysql2/migrator.js.map +1 -1
- package/mysql2/session.cjs +2 -30
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +8 -13
- package/mysql2/session.d.ts +8 -13
- package/mysql2/session.js +2 -30
- package/mysql2/session.js.map +1 -1
- package/neon/index.cjs +2 -0
- package/neon/index.cjs.map +1 -1
- package/neon/index.d.cts +1 -0
- package/neon/index.d.ts +1 -0
- package/neon/index.js +1 -0
- package/neon/index.js.map +1 -1
- package/neon/neon-identity.cjs +38 -0
- package/neon/neon-identity.cjs.map +1 -0
- package/neon/neon-identity.d.cts +116 -0
- package/neon/neon-identity.d.ts +116 -0
- package/neon/neon-identity.js +14 -0
- package/neon/neon-identity.js.map +1 -0
- package/neon-http/driver.cjs +7 -21
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +9 -10
- package/neon-http/driver.d.ts +9 -10
- package/neon-http/driver.js +7 -11
- package/neon-http/driver.js.map +1 -1
- package/neon-http/migrator.cjs.map +1 -1
- package/neon-http/migrator.d.cts +1 -2
- package/neon-http/migrator.d.ts +1 -2
- package/neon-http/migrator.js.map +1 -1
- package/neon-http/session.cjs +2 -32
- package/neon-http/session.cjs.map +1 -1
- package/neon-http/session.d.cts +8 -13
- package/neon-http/session.d.ts +8 -13
- package/neon-http/session.js +2 -32
- package/neon-http/session.js.map +1 -1
- package/neon-serverless/driver.cjs +7 -18
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +8 -9
- package/neon-serverless/driver.d.ts +8 -9
- package/neon-serverless/driver.js +10 -8
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/migrator.cjs.map +1 -1
- package/neon-serverless/migrator.d.cts +1 -2
- package/neon-serverless/migrator.d.ts +1 -2
- package/neon-serverless/migrator.js.map +1 -1
- package/neon-serverless/session.cjs +5 -40
- package/neon-serverless/session.cjs.map +1 -1
- package/neon-serverless/session.d.cts +8 -13
- package/neon-serverless/session.d.ts +8 -13
- package/neon-serverless/session.js +5 -40
- package/neon-serverless/session.js.map +1 -1
- package/node-postgres/driver.cjs +7 -13
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +8 -9
- package/node-postgres/driver.d.ts +8 -9
- package/node-postgres/driver.js +10 -13
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/migrator.cjs.map +1 -1
- package/node-postgres/migrator.d.cts +1 -2
- package/node-postgres/migrator.d.ts +1 -2
- package/node-postgres/migrator.js.map +1 -1
- package/node-postgres/session.cjs +4 -45
- package/node-postgres/session.cjs.map +1 -1
- package/node-postgres/session.d.cts +8 -13
- package/node-postgres/session.d.ts +8 -13
- package/node-postgres/session.js +4 -45
- package/node-postgres/session.js.map +1 -1
- package/op-sqlite/driver.cjs +5 -22
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.d.cts +2 -3
- package/op-sqlite/driver.d.ts +2 -3
- package/op-sqlite/driver.js +8 -12
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/migrator.cjs.map +1 -1
- package/op-sqlite/migrator.d.cts +2 -3
- package/op-sqlite/migrator.d.ts +2 -3
- package/op-sqlite/migrator.js.map +1 -1
- package/op-sqlite/session.cjs +4 -47
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +8 -14
- package/op-sqlite/session.d.ts +8 -14
- package/op-sqlite/session.js +4 -47
- package/op-sqlite/session.js.map +1 -1
- package/package.json +64 -52
- package/pg-core/db.cjs +24 -42
- package/pg-core/db.cjs.map +1 -1
- package/pg-core/db.d.cts +13 -23
- package/pg-core/db.d.ts +13 -23
- package/pg-core/db.js +23 -41
- package/pg-core/db.js.map +1 -1
- package/pg-core/dialect.cjs +488 -161
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +7 -24
- package/pg-core/dialect.d.ts +7 -24
- package/pg-core/dialect.js +494 -158
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/query-builders/count.cjs.map +1 -1
- package/pg-core/query-builders/count.d.cts +1 -1
- package/pg-core/query-builders/count.d.ts +1 -1
- package/pg-core/query-builders/count.js.map +1 -1
- package/pg-core/query-builders/delete.cjs +13 -0
- package/pg-core/query-builders/delete.cjs.map +1 -1
- package/pg-core/query-builders/delete.d.cts +13 -10
- package/pg-core/query-builders/delete.d.ts +13 -10
- package/pg-core/query-builders/delete.js +14 -1
- package/pg-core/query-builders/delete.js.map +1 -1
- package/pg-core/query-builders/insert.cjs +13 -0
- package/pg-core/query-builders/insert.cjs.map +1 -1
- package/pg-core/query-builders/insert.d.cts +10 -8
- package/pg-core/query-builders/insert.d.ts +10 -8
- package/pg-core/query-builders/insert.js +14 -1
- package/pg-core/query-builders/insert.js.map +1 -1
- package/pg-core/query-builders/query-builder.cjs +15 -11
- package/pg-core/query-builders/query-builder.cjs.map +1 -1
- package/pg-core/query-builders/query-builder.d.cts +3 -6
- package/pg-core/query-builders/query-builder.d.ts +3 -6
- package/pg-core/query-builders/query-builder.js +15 -11
- package/pg-core/query-builders/query-builder.js.map +1 -1
- package/pg-core/query-builders/query.cjs +18 -15
- package/pg-core/query-builders/query.cjs.map +1 -1
- package/pg-core/query-builders/query.d.cts +6 -6
- package/pg-core/query-builders/query.d.ts +6 -6
- package/pg-core/query-builders/query.js +18 -15
- package/pg-core/query-builders/query.js.map +1 -1
- package/pg-core/query-builders/select.cjs +8 -7
- package/pg-core/query-builders/select.cjs.map +1 -1
- package/pg-core/query-builders/select.d.cts +3 -3
- package/pg-core/query-builders/select.d.ts +3 -3
- package/pg-core/query-builders/select.js +8 -7
- package/pg-core/query-builders/select.js.map +1 -1
- package/pg-core/query-builders/select.types.cjs.map +1 -1
- package/pg-core/query-builders/select.types.d.cts +3 -2
- package/pg-core/query-builders/select.types.d.ts +3 -2
- package/pg-core/query-builders/update.cjs +15 -2
- package/pg-core/query-builders/update.cjs.map +1 -1
- package/pg-core/query-builders/update.d.cts +18 -13
- package/pg-core/query-builders/update.d.ts +18 -13
- package/pg-core/query-builders/update.js +16 -3
- package/pg-core/query-builders/update.js.map +1 -1
- package/pg-core/session.cjs +2 -3
- package/pg-core/session.cjs.map +1 -1
- package/pg-core/session.d.cts +6 -9
- package/pg-core/session.d.ts +6 -9
- package/pg-core/session.js +2 -3
- package/pg-core/session.js.map +1 -1
- package/pg-core/subquery.cjs.map +1 -1
- package/pg-core/subquery.d.cts +15 -2
- package/pg-core/subquery.d.ts +15 -2
- package/pg-proxy/driver.cjs +5 -21
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.d.cts +2 -3
- package/pg-proxy/driver.d.ts +2 -3
- package/pg-proxy/driver.js +8 -11
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/migrator.cjs.map +1 -1
- package/pg-proxy/migrator.d.cts +1 -2
- package/pg-proxy/migrator.d.ts +1 -2
- package/pg-proxy/migrator.js.map +1 -1
- package/pg-proxy/session.cjs +2 -37
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +8 -13
- package/pg-proxy/session.d.ts +8 -13
- package/pg-proxy/session.js +2 -37
- package/pg-proxy/session.js.map +1 -1
- package/pglite/driver.cjs +7 -23
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +8 -9
- package/pglite/driver.d.ts +8 -9
- package/pglite/driver.js +10 -13
- package/pglite/driver.js.map +1 -1
- package/pglite/migrator.cjs.map +1 -1
- package/pglite/migrator.d.cts +1 -2
- package/pglite/migrator.d.ts +1 -2
- package/pglite/migrator.js.map +1 -1
- package/pglite/session.cjs +3 -34
- package/pglite/session.cjs.map +1 -1
- package/pglite/session.d.cts +8 -13
- package/pglite/session.d.ts +8 -13
- package/pglite/session.js +3 -34
- package/pglite/session.js.map +1 -1
- package/planetscale-serverless/driver.cjs +5 -22
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +6 -7
- package/planetscale-serverless/driver.d.ts +6 -7
- package/planetscale-serverless/driver.js +8 -12
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/migrator.cjs.map +1 -1
- package/planetscale-serverless/migrator.d.cts +1 -2
- package/planetscale-serverless/migrator.d.ts +1 -2
- package/planetscale-serverless/migrator.js.map +1 -1
- package/planetscale-serverless/session.cjs +5 -45
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +9 -14
- package/planetscale-serverless/session.d.ts +9 -14
- package/planetscale-serverless/session.js +5 -45
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/driver.cjs +5 -6
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +6 -7
- package/postgres-js/driver.d.ts +6 -7
- package/postgres-js/driver.js +8 -6
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/migrator.cjs.map +1 -1
- package/postgres-js/migrator.d.cts +1 -2
- package/postgres-js/migrator.d.ts +1 -2
- package/postgres-js/migrator.js.map +1 -1
- package/postgres-js/session.cjs +6 -51
- package/postgres-js/session.cjs.map +1 -1
- package/postgres-js/session.d.cts +9 -15
- package/postgres-js/session.d.ts +9 -15
- package/postgres-js/session.js +6 -51
- package/postgres-js/session.js.map +1 -1
- package/prisma/mysql/driver.cjs +1 -1
- package/prisma/mysql/driver.cjs.map +1 -1
- package/prisma/mysql/driver.js +1 -1
- package/prisma/mysql/driver.js.map +1 -1
- package/prisma/mysql/session.cjs +0 -3
- package/prisma/mysql/session.cjs.map +1 -1
- package/prisma/mysql/session.d.cts +1 -3
- package/prisma/mysql/session.d.ts +1 -3
- package/prisma/mysql/session.js +0 -3
- package/prisma/mysql/session.js.map +1 -1
- package/prisma/pg/driver.cjs +1 -1
- package/prisma/pg/driver.cjs.map +1 -1
- package/prisma/pg/driver.js +1 -1
- package/prisma/pg/driver.js.map +1 -1
- package/prisma/pg/session.cjs +0 -3
- package/prisma/pg/session.cjs.map +1 -1
- package/prisma/pg/session.d.cts +1 -3
- package/prisma/pg/session.d.ts +1 -3
- package/prisma/pg/session.js +0 -3
- package/prisma/pg/session.js.map +1 -1
- package/prisma/sqlite/driver.cjs +1 -1
- package/prisma/sqlite/driver.cjs.map +1 -1
- package/prisma/sqlite/driver.js +1 -1
- package/prisma/sqlite/driver.js.map +1 -1
- package/prisma/sqlite/session.cjs +0 -3
- package/prisma/sqlite/session.cjs.map +1 -1
- package/prisma/sqlite/session.d.cts +2 -4
- package/prisma/sqlite/session.d.ts +2 -4
- package/prisma/sqlite/session.js +0 -3
- package/prisma/sqlite/session.js.map +1 -1
- package/query-builders/select.types.cjs.map +1 -1
- package/query-builders/select.types.d.cts +1 -1
- package/query-builders/select.types.d.ts +1 -1
- package/relations.cjs +245 -595
- package/relations.cjs.map +1 -1
- package/relations.d.cts +131 -276
- package/relations.d.ts +131 -276
- package/relations.js +239 -589
- package/relations.js.map +1 -1
- package/singlestore/driver.cjs +1 -1
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +1 -1
- package/singlestore/driver.d.ts +1 -1
- package/singlestore/driver.js +3 -3
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +4 -4
- package/singlestore/session.d.ts +4 -4
- package/singlestore/session.js.map +1 -1
- package/singlestore-core/db.cjs +17 -11
- package/singlestore-core/db.cjs.map +1 -1
- package/singlestore-core/db.d.cts +7 -10
- package/singlestore-core/db.d.ts +7 -10
- package/singlestore-core/db.js +17 -11
- package/singlestore-core/db.js.map +1 -1
- package/singlestore-core/dialect.cjs +6 -16
- package/singlestore-core/dialect.cjs.map +1 -1
- package/singlestore-core/dialect.d.cts +6 -6
- package/singlestore-core/dialect.d.ts +6 -6
- package/singlestore-core/dialect.js +12 -6
- package/singlestore-core/dialect.js.map +1 -1
- package/singlestore-core/query-builders/query-builder.cjs +15 -11
- package/singlestore-core/query-builders/query-builder.cjs.map +1 -1
- package/singlestore-core/query-builders/query-builder.d.cts +2 -6
- package/singlestore-core/query-builders/query-builder.d.ts +2 -6
- package/singlestore-core/query-builders/query-builder.js +15 -11
- package/singlestore-core/query-builders/query-builder.js.map +1 -1
- package/singlestore-core/query-builders/query.cjs +2 -12
- package/singlestore-core/query-builders/query.cjs.map +1 -1
- package/singlestore-core/query-builders/query.d.cts +6 -6
- package/singlestore-core/query-builders/query.d.ts +6 -6
- package/singlestore-core/query-builders/query.js +4 -2
- package/singlestore-core/query-builders/query.js.map +1 -1
- package/singlestore-core/session.cjs.map +1 -1
- package/singlestore-core/session.d.cts +5 -5
- package/singlestore-core/session.d.ts +5 -5
- package/singlestore-core/session.js.map +1 -1
- package/singlestore-core/subquery.cjs.map +1 -1
- package/singlestore-core/subquery.d.cts +15 -2
- package/singlestore-core/subquery.d.ts +15 -2
- package/singlestore-core/table.cjs.map +1 -1
- package/singlestore-core/table.d.cts +12 -12
- package/singlestore-core/table.d.ts +12 -12
- package/singlestore-core/table.js.map +1 -1
- package/singlestore-proxy/driver.cjs +1 -1
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.js +3 -3
- package/singlestore-proxy/driver.js.map +1 -1
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.d.cts +4 -4
- package/singlestore-proxy/session.d.ts +4 -4
- package/singlestore-proxy/session.js.map +1 -1
- package/sql/sql.cjs +6 -1
- package/sql/sql.cjs.map +1 -1
- package/sql/sql.d.cts +9 -8
- package/sql/sql.d.ts +9 -8
- package/sql/sql.js +5 -1
- package/sql/sql.js.map +1 -1
- package/sql-js/driver.cjs +5 -16
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.d.cts +2 -3
- package/sql-js/driver.d.ts +2 -3
- package/sql-js/driver.js +8 -6
- package/sql-js/driver.js.map +1 -1
- package/sql-js/migrator.cjs.map +1 -1
- package/sql-js/migrator.d.cts +1 -2
- package/sql-js/migrator.d.ts +1 -2
- package/sql-js/migrator.js.map +1 -1
- package/sql-js/session.cjs +36 -71
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.d.cts +13 -16
- package/sql-js/session.d.ts +13 -16
- package/sql-js/session.js +36 -71
- package/sql-js/session.js.map +1 -1
- package/sqlite-core/db.cjs +31 -49
- package/sqlite-core/db.cjs.map +1 -1
- package/sqlite-core/db.d.cts +12 -23
- package/sqlite-core/db.d.ts +12 -23
- package/sqlite-core/db.js +30 -48
- package/sqlite-core/db.js.map +1 -1
- package/sqlite-core/dialect.cjs +8 -184
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +9 -28
- package/sqlite-core/dialect.d.ts +9 -28
- package/sqlite-core/dialect.js +14 -181
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/query-builders/count.cjs.map +1 -1
- package/sqlite-core/query-builders/count.d.cts +1 -1
- package/sqlite-core/query-builders/count.d.ts +1 -1
- package/sqlite-core/query-builders/count.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.d.cts +1 -1
- package/sqlite-core/query-builders/delete.d.ts +1 -1
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/insert.cjs +9 -3
- package/sqlite-core/query-builders/insert.cjs.map +1 -1
- package/sqlite-core/query-builders/insert.d.cts +4 -4
- package/sqlite-core/query-builders/insert.d.ts +4 -4
- package/sqlite-core/query-builders/insert.js +9 -3
- package/sqlite-core/query-builders/insert.js.map +1 -1
- package/sqlite-core/query-builders/query-builder.cjs +15 -11
- package/sqlite-core/query-builders/query-builder.cjs.map +1 -1
- package/sqlite-core/query-builders/query-builder.d.cts +2 -6
- package/sqlite-core/query-builders/query-builder.d.ts +2 -6
- package/sqlite-core/query-builders/query-builder.js +15 -11
- package/sqlite-core/query-builders/query-builder.js.map +1 -1
- package/sqlite-core/query-builders/query.cjs +35 -56
- package/sqlite-core/query-builders/query.cjs.map +1 -1
- package/sqlite-core/query-builders/query.d.cts +17 -18
- package/sqlite-core/query-builders/query.d.ts +17 -18
- package/sqlite-core/query-builders/query.js +35 -56
- package/sqlite-core/query-builders/query.js.map +1 -1
- package/sqlite-core/query-builders/select.cjs.map +1 -1
- package/sqlite-core/query-builders/select.d.cts +3 -3
- package/sqlite-core/query-builders/select.d.ts +3 -3
- package/sqlite-core/query-builders/select.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.d.cts +3 -3
- package/sqlite-core/query-builders/update.d.ts +3 -3
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-core/session.cjs +2 -6
- package/sqlite-core/session.cjs.map +1 -1
- package/sqlite-core/session.d.cts +7 -15
- package/sqlite-core/session.d.ts +7 -15
- package/sqlite-core/session.js +2 -6
- package/sqlite-core/session.js.map +1 -1
- package/sqlite-core/subquery.cjs.map +1 -1
- package/sqlite-core/subquery.d.cts +15 -2
- package/sqlite-core/subquery.d.ts +15 -2
- package/sqlite-proxy/driver.cjs +5 -23
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.d.cts +3 -4
- package/sqlite-proxy/driver.d.ts +3 -4
- package/sqlite-proxy/driver.js +5 -13
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/migrator.cjs.map +1 -1
- package/sqlite-proxy/migrator.d.cts +1 -2
- package/sqlite-proxy/migrator.d.ts +1 -2
- package/sqlite-proxy/migrator.js.map +1 -1
- package/sqlite-proxy/session.cjs +6 -50
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +8 -14
- package/sqlite-proxy/session.d.ts +8 -14
- package/sqlite-proxy/session.js +6 -50
- package/sqlite-proxy/session.js.map +1 -1
- package/subquery.cjs.map +1 -1
- package/subquery.d.cts +1 -0
- package/subquery.d.ts +1 -0
- package/subquery.js.map +1 -1
- package/table.cjs.map +1 -1
- package/table.d.cts +1 -1
- package/table.d.ts +1 -1
- package/table.js.map +1 -1
- package/tidb-serverless/driver.cjs +5 -22
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +6 -7
- package/tidb-serverless/driver.d.ts +6 -7
- package/tidb-serverless/driver.js +8 -12
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/migrator.cjs.map +1 -1
- package/tidb-serverless/migrator.d.cts +1 -2
- package/tidb-serverless/migrator.d.ts +1 -2
- package/tidb-serverless/migrator.js.map +1 -1
- package/tidb-serverless/session.cjs +5 -62
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +9 -14
- package/tidb-serverless/session.d.ts +9 -14
- package/tidb-serverless/session.js +5 -62
- package/tidb-serverless/session.js.map +1 -1
- package/utils.cjs +2 -2
- package/utils.cjs.map +1 -1
- package/utils.d.cts +1 -3
- package/utils.d.ts +1 -3
- package/utils.js +2 -2
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +7 -23
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +8 -9
- package/vercel-postgres/driver.d.ts +8 -9
- package/vercel-postgres/driver.js +10 -13
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/migrator.cjs.map +1 -1
- package/vercel-postgres/migrator.d.cts +1 -2
- package/vercel-postgres/migrator.d.ts +1 -2
- package/vercel-postgres/migrator.js.map +1 -1
- package/vercel-postgres/session.cjs +8 -34
- package/vercel-postgres/session.cjs.map +1 -1
- package/vercel-postgres/session.d.cts +10 -14
- package/vercel-postgres/session.d.ts +10 -14
- package/vercel-postgres/session.js +8 -34
- 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 +5 -17
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +4 -5
- package/xata-http/driver.d.ts +4 -5
- package/xata-http/driver.js +5 -7
- package/xata-http/driver.js.map +1 -1
- package/xata-http/migrator.cjs.map +1 -1
- package/xata-http/migrator.d.cts +1 -2
- package/xata-http/migrator.d.ts +1 -2
- package/xata-http/migrator.js.map +1 -1
- package/xata-http/session.cjs +2 -30
- package/xata-http/session.cjs.map +1 -1
- package/xata-http/session.d.cts +8 -13
- package/xata-http/session.d.ts +8 -13
- package/xata-http/session.js +2 -30
- package/xata-http/session.js.map +1 -1
- package/_relations.cjs +0 -328
- package/_relations.cjs.map +0 -1
- package/_relations.d.cts +0 -215
- package/_relations.d.ts +0 -215
- package/_relations.js +0 -316
- package/_relations.js.map +0 -1
- package/mysql-core/query-builders/_query.cjs +0 -149
- package/mysql-core/query-builders/_query.cjs.map +0 -1
- package/mysql-core/query-builders/_query.d.cts +0 -44
- package/mysql-core/query-builders/_query.d.ts +0 -44
- package/mysql-core/query-builders/_query.js +0 -114
- package/mysql-core/query-builders/_query.js.map +0 -1
- package/pg-core/query-builders/_query.cjs +0 -155
- package/pg-core/query-builders/_query.cjs.map +0 -1
- package/pg-core/query-builders/_query.d.cts +0 -47
- package/pg-core/query-builders/_query.d.ts +0 -47
- package/pg-core/query-builders/_query.js +0 -120
- package/pg-core/query-builders/_query.js.map +0 -1
- package/sqlite-core/query-builders/_query.cjs +0 -187
- package/sqlite-core/query-builders/_query.cjs.map +0 -1
- package/sqlite-core/query-builders/_query.d.cts +0 -55
- package/sqlite-core/query-builders/_query.d.ts +0 -55
- package/sqlite-core/query-builders/_query.js +0 -151
- package/sqlite-core/query-builders/_query.js.map +0 -1
package/sql-js/session.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sql-js/session.ts"],"sourcesContent":["import type { BindParams, Database } from 'sql.js';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface SQLJsSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLJsSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', void, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: SQLJsSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): PreparedQuery<T> {\n\t\treturn new PreparedQuery(this.client, query, this.logger, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): PreparedQuery<T, true> {\n\t\treturn new PreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: SQLJsTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new SQLJsTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class SQLJsTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', void, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: SQLJsTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new SQLJsTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\ttx.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\ttx.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\ttx.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'SQLJsPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): void {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst result = stmt.run(params as BindParams);\n\n\t\tstmt.free();\n\n\t\treturn result;\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst { fields, joinsNotNullableMap, logger, query, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tstmt.bind(params as BindParams);\n\t\t\tconst rows: unknown[] = [];\n\t\t\twhile (stmt.step()) {\n\t\t\t\trows.push(stmt.getAsObject());\n\t\t\t}\n\n\t\t\tstmt.free();\n\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows, normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap));\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst { logger, query, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tstmt.bind(params as BindParams);\n\t\tconst rows: Record<string, unknown>[] = [];\n\t\twhile (stmt.step()) {\n\t\t\trows.push(stmt.getAsObject());\n\t\t}\n\n\t\tstmt.free();\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows, normalizeFieldValue) as T['all'];\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = stmt.getAsObject(params as BindParams);\n\n\t\t\tstmt.free();\n\n\t\t\treturn result;\n\t\t}\n\n\t\tconst row = stmt.get(params as BindParams);\n\n\t\tstmt.free();\n\n\t\tif (!row || (row.length === 0 && fields!.length > 0)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)([row], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { customResultMapper } = this;\n\n\t\tconst row = stmt.getAsObject(params as BindParams);\n\n\t\tstmt.free();\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tlet nonUndef = false;\n\t\tfor (const v of Object.values(row)) {\n\t\t\tif (v !== undefined) {\n\t\t\t\tnonUndef = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!nonUndef) return undefined;\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row], normalizeFieldValue) as T['get'];\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tstmt.bind(params as BindParams);\n\t\tconst rows: unknown[] = [];\n\t\twhile (stmt.step()) {\n\t\t\trows.push(stmt.get());\n\t\t}\n\n\t\tstmt.free();\n\n\t\treturn rows;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (value instanceof Uint8Array) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["PreparedQueryBase","rows"]}
|
|
1
|
+
{"version":3,"sources":["../../src/sql-js/session.ts"],"sourcesContent":["import type { BindParams, Database, Statement } from 'sql.js';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface SQLJsSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLJsSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'sync', void, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: SQLJsSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(stmt, query, this.logger, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\toverride prepareOneTimeQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new SQLJsTransaction('sync', this.dialect, this, this.schema);\n\t\tthis.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class SQLJsTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', void, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsTransaction';\n\n\toverride transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T): T {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new SQLJsTransaction('sync', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\ttx.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\ttx.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\ttx.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<\n\t{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLJsPreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t\tprivate isOneTimeQuery = false,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): void {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst result = this.stmt.run(params as BindParams);\n\n\t\tif (this.isOneTimeQuery) {\n\t\t\tthis.free();\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { fields, joinsNotNullableMap, logger, query, stmt, isOneTimeQuery, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tstmt.bind(params as BindParams);\n\t\t\tconst rows: unknown[] = [];\n\t\t\twhile (stmt.step()) {\n\t\t\t\trows.push(stmt.getAsObject());\n\t\t\t}\n\n\t\t\tif (isOneTimeQuery) {\n\t\t\t\tthis.free();\n\t\t\t}\n\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows, normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, isOneTimeQuery, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = stmt.getAsObject(params as BindParams);\n\n\t\t\tif (isOneTimeQuery) {\n\t\t\t\tthis.free();\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tconst row = stmt.get(params as BindParams);\n\n\t\tif (isOneTimeQuery) {\n\t\t\tthis.free();\n\t\t}\n\n\t\tif (!row || (row.length === 0 && fields!.length > 0)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper([row], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tthis.stmt.bind(params as BindParams);\n\t\tconst rows: unknown[] = [];\n\t\twhile (this.stmt.step()) {\n\t\t\trows.push(this.stmt.get());\n\t\t}\n\n\t\tif (this.isOneTimeQuery) {\n\t\t\tthis.free();\n\t\t}\n\n\t\treturn rows;\n\t}\n\n\tfree(): boolean {\n\t\treturn this.stmt.free();\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (value instanceof Uint8Array) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["PreparedQueryBase","rows"]}
|
package/sql-js/session.d.cts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Database } from 'sql.js';
|
|
2
|
-
import type * as V1 from "../_relations.cjs";
|
|
1
|
+
import type { Database, Statement } from 'sql.js';
|
|
3
2
|
import { entityKind } from "../entity.cjs";
|
|
4
3
|
import type { Logger } from "../logger.cjs";
|
|
5
|
-
import type {
|
|
4
|
+
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
|
|
6
5
|
import { type Query } from "../sql/sql.cjs";
|
|
7
6
|
import type { SQLiteSyncDialect } from "../sqlite-core/dialect.cjs";
|
|
8
7
|
import { SQLiteTransaction } from "../sqlite-core/index.cjs";
|
|
@@ -13,22 +12,21 @@ export interface SQLJsSessionOptions {
|
|
|
13
12
|
logger?: Logger;
|
|
14
13
|
}
|
|
15
14
|
type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
16
|
-
export declare class SQLJsSession<TFullSchema extends Record<string, unknown>,
|
|
15
|
+
export declare class SQLJsSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'sync', void, TFullSchema, TSchema> {
|
|
17
16
|
private client;
|
|
18
|
-
private relations;
|
|
19
17
|
private schema;
|
|
20
18
|
static readonly [entityKind]: string;
|
|
21
19
|
private logger;
|
|
22
|
-
constructor(client: Database, dialect: SQLiteSyncDialect,
|
|
20
|
+
constructor(client: Database, dialect: SQLiteSyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: SQLJsSessionOptions);
|
|
23
21
|
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean): PreparedQuery<T>;
|
|
24
|
-
|
|
25
|
-
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema,
|
|
22
|
+
prepareOneTimeQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): PreparedQuery<T>;
|
|
23
|
+
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T, config?: SQLiteTransactionConfig): T;
|
|
26
24
|
}
|
|
27
|
-
export declare class SQLJsTransaction<TFullSchema extends Record<string, unknown>,
|
|
25
|
+
export declare class SQLJsTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'sync', void, TFullSchema, TSchema> {
|
|
28
26
|
static readonly [entityKind]: string;
|
|
29
|
-
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema,
|
|
27
|
+
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T): T;
|
|
30
28
|
}
|
|
31
|
-
export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig
|
|
29
|
+
export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<{
|
|
32
30
|
type: 'sync';
|
|
33
31
|
run: void;
|
|
34
32
|
all: T['all'];
|
|
@@ -36,19 +34,18 @@ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQuery
|
|
|
36
34
|
values: T['values'];
|
|
37
35
|
execute: T['execute'];
|
|
38
36
|
}> {
|
|
39
|
-
private
|
|
37
|
+
private stmt;
|
|
40
38
|
private logger;
|
|
41
39
|
private fields;
|
|
42
40
|
private _isResponseInArrayMode;
|
|
43
41
|
private customResultMapper?;
|
|
44
|
-
private
|
|
42
|
+
private isOneTimeQuery;
|
|
45
43
|
static readonly [entityKind]: string;
|
|
46
|
-
constructor(
|
|
44
|
+
constructor(stmt: Statement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isOneTimeQuery?: boolean);
|
|
47
45
|
run(placeholderValues?: Record<string, unknown>): void;
|
|
48
46
|
all(placeholderValues?: Record<string, unknown>): T['all'];
|
|
49
|
-
private allRqbV2;
|
|
50
47
|
get(placeholderValues?: Record<string, unknown>): T['get'];
|
|
51
|
-
private getRqbV2;
|
|
52
48
|
values(placeholderValues?: Record<string, unknown>): T['values'];
|
|
49
|
+
free(): boolean;
|
|
53
50
|
}
|
|
54
51
|
export {};
|
package/sql-js/session.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Database } from 'sql.js';
|
|
2
|
-
import type * as V1 from "../_relations.js";
|
|
1
|
+
import type { Database, Statement } from 'sql.js';
|
|
3
2
|
import { entityKind } from "../entity.js";
|
|
4
3
|
import type { Logger } from "../logger.js";
|
|
5
|
-
import type {
|
|
4
|
+
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
|
|
6
5
|
import { type Query } from "../sql/sql.js";
|
|
7
6
|
import type { SQLiteSyncDialect } from "../sqlite-core/dialect.js";
|
|
8
7
|
import { SQLiteTransaction } from "../sqlite-core/index.js";
|
|
@@ -13,22 +12,21 @@ export interface SQLJsSessionOptions {
|
|
|
13
12
|
logger?: Logger;
|
|
14
13
|
}
|
|
15
14
|
type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
16
|
-
export declare class SQLJsSession<TFullSchema extends Record<string, unknown>,
|
|
15
|
+
export declare class SQLJsSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'sync', void, TFullSchema, TSchema> {
|
|
17
16
|
private client;
|
|
18
|
-
private relations;
|
|
19
17
|
private schema;
|
|
20
18
|
static readonly [entityKind]: string;
|
|
21
19
|
private logger;
|
|
22
|
-
constructor(client: Database, dialect: SQLiteSyncDialect,
|
|
20
|
+
constructor(client: Database, dialect: SQLiteSyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: SQLJsSessionOptions);
|
|
23
21
|
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean): PreparedQuery<T>;
|
|
24
|
-
|
|
25
|
-
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema,
|
|
22
|
+
prepareOneTimeQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): PreparedQuery<T>;
|
|
23
|
+
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T, config?: SQLiteTransactionConfig): T;
|
|
26
24
|
}
|
|
27
|
-
export declare class SQLJsTransaction<TFullSchema extends Record<string, unknown>,
|
|
25
|
+
export declare class SQLJsTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'sync', void, TFullSchema, TSchema> {
|
|
28
26
|
static readonly [entityKind]: string;
|
|
29
|
-
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema,
|
|
27
|
+
transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T): T;
|
|
30
28
|
}
|
|
31
|
-
export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig
|
|
29
|
+
export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<{
|
|
32
30
|
type: 'sync';
|
|
33
31
|
run: void;
|
|
34
32
|
all: T['all'];
|
|
@@ -36,19 +34,18 @@ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQuery
|
|
|
36
34
|
values: T['values'];
|
|
37
35
|
execute: T['execute'];
|
|
38
36
|
}> {
|
|
39
|
-
private
|
|
37
|
+
private stmt;
|
|
40
38
|
private logger;
|
|
41
39
|
private fields;
|
|
42
40
|
private _isResponseInArrayMode;
|
|
43
41
|
private customResultMapper?;
|
|
44
|
-
private
|
|
42
|
+
private isOneTimeQuery;
|
|
45
43
|
static readonly [entityKind]: string;
|
|
46
|
-
constructor(
|
|
44
|
+
constructor(stmt: Statement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isOneTimeQuery?: boolean);
|
|
47
45
|
run(placeholderValues?: Record<string, unknown>): void;
|
|
48
46
|
all(placeholderValues?: Record<string, unknown>): T['all'];
|
|
49
|
-
private allRqbV2;
|
|
50
47
|
get(placeholderValues?: Record<string, unknown>): T['get'];
|
|
51
|
-
private getRqbV2;
|
|
52
48
|
values(placeholderValues?: Record<string, unknown>): T['values'];
|
|
49
|
+
free(): boolean;
|
|
53
50
|
}
|
|
54
51
|
export {};
|
package/sql-js/session.js
CHANGED
|
@@ -5,32 +5,33 @@ import { SQLiteTransaction } from "../sqlite-core/index.js";
|
|
|
5
5
|
import { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from "../sqlite-core/session.js";
|
|
6
6
|
import { mapResultRow } from "../utils.js";
|
|
7
7
|
class SQLJsSession extends SQLiteSession {
|
|
8
|
-
constructor(client, dialect,
|
|
8
|
+
constructor(client, dialect, schema, options = {}) {
|
|
9
9
|
super(dialect);
|
|
10
10
|
this.client = client;
|
|
11
|
-
this.relations = relations;
|
|
12
11
|
this.schema = schema;
|
|
13
12
|
this.logger = options.logger ?? new NoopLogger();
|
|
14
13
|
}
|
|
15
14
|
static [entityKind] = "SQLJsSession";
|
|
16
15
|
logger;
|
|
17
16
|
prepareQuery(query, fields, executeMethod, isResponseInArrayMode) {
|
|
18
|
-
|
|
17
|
+
const stmt = this.client.prepare(query.sql);
|
|
18
|
+
return new PreparedQuery(stmt, query, this.logger, fields, executeMethod, isResponseInArrayMode);
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
prepareOneTimeQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper) {
|
|
21
|
+
const stmt = this.client.prepare(query.sql);
|
|
21
22
|
return new PreparedQuery(
|
|
22
|
-
|
|
23
|
+
stmt,
|
|
23
24
|
query,
|
|
24
25
|
this.logger,
|
|
25
26
|
fields,
|
|
26
27
|
executeMethod,
|
|
27
|
-
|
|
28
|
+
isResponseInArrayMode,
|
|
28
29
|
customResultMapper,
|
|
29
30
|
true
|
|
30
31
|
);
|
|
31
32
|
}
|
|
32
33
|
transaction(transaction, config = {}) {
|
|
33
|
-
const tx = new SQLJsTransaction("sync", this.dialect, this, this.
|
|
34
|
+
const tx = new SQLJsTransaction("sync", this.dialect, this, this.schema);
|
|
34
35
|
this.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ""}`));
|
|
35
36
|
try {
|
|
36
37
|
const result = transaction(tx);
|
|
@@ -46,14 +47,7 @@ class SQLJsTransaction extends SQLiteTransaction {
|
|
|
46
47
|
static [entityKind] = "SQLJsTransaction";
|
|
47
48
|
transaction(transaction) {
|
|
48
49
|
const savepointName = `sp${this.nestedIndex + 1}`;
|
|
49
|
-
const tx = new SQLJsTransaction(
|
|
50
|
-
"sync",
|
|
51
|
-
this.dialect,
|
|
52
|
-
this.session,
|
|
53
|
-
this.relations,
|
|
54
|
-
this.schema,
|
|
55
|
-
this.nestedIndex + 1
|
|
56
|
-
);
|
|
50
|
+
const tx = new SQLJsTransaction("sync", this.dialect, this.session, this.schema, this.nestedIndex + 1);
|
|
57
51
|
tx.run(sql.raw(`savepoint ${savepointName}`));
|
|
58
52
|
try {
|
|
59
53
|
const result = transaction(tx);
|
|
@@ -66,29 +60,27 @@ class SQLJsTransaction extends SQLiteTransaction {
|
|
|
66
60
|
}
|
|
67
61
|
}
|
|
68
62
|
class PreparedQuery extends PreparedQueryBase {
|
|
69
|
-
constructor(
|
|
63
|
+
constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper, isOneTimeQuery = false) {
|
|
70
64
|
super("sync", executeMethod, query);
|
|
71
|
-
this.
|
|
65
|
+
this.stmt = stmt;
|
|
72
66
|
this.logger = logger;
|
|
73
67
|
this.fields = fields;
|
|
74
68
|
this._isResponseInArrayMode = _isResponseInArrayMode;
|
|
75
69
|
this.customResultMapper = customResultMapper;
|
|
76
|
-
this.
|
|
70
|
+
this.isOneTimeQuery = isOneTimeQuery;
|
|
77
71
|
}
|
|
78
72
|
static [entityKind] = "SQLJsPreparedQuery";
|
|
79
73
|
run(placeholderValues) {
|
|
80
|
-
const stmt = this.client.prepare(this.query.sql);
|
|
81
74
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
82
75
|
this.logger.logQuery(this.query.sql, params);
|
|
83
|
-
const result = stmt.run(params);
|
|
84
|
-
|
|
76
|
+
const result = this.stmt.run(params);
|
|
77
|
+
if (this.isOneTimeQuery) {
|
|
78
|
+
this.free();
|
|
79
|
+
}
|
|
85
80
|
return result;
|
|
86
81
|
}
|
|
87
82
|
all(placeholderValues) {
|
|
88
|
-
|
|
89
|
-
return this.allRqbV2(placeholderValues);
|
|
90
|
-
const stmt = this.client.prepare(this.query.sql);
|
|
91
|
-
const { fields, joinsNotNullableMap, logger, query, customResultMapper } = this;
|
|
83
|
+
const { fields, joinsNotNullableMap, logger, query, stmt, isOneTimeQuery, customResultMapper } = this;
|
|
92
84
|
if (!fields && !customResultMapper) {
|
|
93
85
|
const params = fillPlaceholders(query.params, placeholderValues ?? {});
|
|
94
86
|
logger.logQuery(query.sql, params);
|
|
@@ -97,7 +89,9 @@ class PreparedQuery extends PreparedQueryBase {
|
|
|
97
89
|
while (stmt.step()) {
|
|
98
90
|
rows2.push(stmt.getAsObject());
|
|
99
91
|
}
|
|
100
|
-
|
|
92
|
+
if (isOneTimeQuery) {
|
|
93
|
+
this.free();
|
|
94
|
+
}
|
|
101
95
|
return rows2;
|
|
102
96
|
}
|
|
103
97
|
const rows = this.values(placeholderValues);
|
|
@@ -106,33 +100,21 @@ class PreparedQuery extends PreparedQueryBase {
|
|
|
106
100
|
}
|
|
107
101
|
return rows.map((row) => mapResultRow(fields, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap));
|
|
108
102
|
}
|
|
109
|
-
allRqbV2(placeholderValues) {
|
|
110
|
-
const stmt = this.client.prepare(this.query.sql);
|
|
111
|
-
const { logger, query, customResultMapper } = this;
|
|
112
|
-
const params = fillPlaceholders(query.params, placeholderValues ?? {});
|
|
113
|
-
logger.logQuery(query.sql, params);
|
|
114
|
-
stmt.bind(params);
|
|
115
|
-
const rows = [];
|
|
116
|
-
while (stmt.step()) {
|
|
117
|
-
rows.push(stmt.getAsObject());
|
|
118
|
-
}
|
|
119
|
-
stmt.free();
|
|
120
|
-
return customResultMapper(rows, normalizeFieldValue);
|
|
121
|
-
}
|
|
122
103
|
get(placeholderValues) {
|
|
123
|
-
if (this.isRqbV2Query)
|
|
124
|
-
return this.getRqbV2(placeholderValues);
|
|
125
|
-
const stmt = this.client.prepare(this.query.sql);
|
|
126
104
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
127
105
|
this.logger.logQuery(this.query.sql, params);
|
|
128
|
-
const { fields, joinsNotNullableMap, customResultMapper } = this;
|
|
106
|
+
const { fields, stmt, isOneTimeQuery, joinsNotNullableMap, customResultMapper } = this;
|
|
129
107
|
if (!fields && !customResultMapper) {
|
|
130
108
|
const result = stmt.getAsObject(params);
|
|
131
|
-
|
|
109
|
+
if (isOneTimeQuery) {
|
|
110
|
+
this.free();
|
|
111
|
+
}
|
|
132
112
|
return result;
|
|
133
113
|
}
|
|
134
114
|
const row = stmt.get(params);
|
|
135
|
-
|
|
115
|
+
if (isOneTimeQuery) {
|
|
116
|
+
this.free();
|
|
117
|
+
}
|
|
136
118
|
if (!row || row.length === 0 && fields.length > 0) {
|
|
137
119
|
return void 0;
|
|
138
120
|
}
|
|
@@ -141,39 +123,22 @@ class PreparedQuery extends PreparedQueryBase {
|
|
|
141
123
|
}
|
|
142
124
|
return mapResultRow(fields, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap);
|
|
143
125
|
}
|
|
144
|
-
getRqbV2(placeholderValues) {
|
|
145
|
-
const stmt = this.client.prepare(this.query.sql);
|
|
146
|
-
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
147
|
-
this.logger.logQuery(this.query.sql, params);
|
|
148
|
-
const { customResultMapper } = this;
|
|
149
|
-
const row = stmt.getAsObject(params);
|
|
150
|
-
stmt.free();
|
|
151
|
-
if (!row) {
|
|
152
|
-
return void 0;
|
|
153
|
-
}
|
|
154
|
-
let nonUndef = false;
|
|
155
|
-
for (const v of Object.values(row)) {
|
|
156
|
-
if (v !== void 0) {
|
|
157
|
-
nonUndef = true;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (!nonUndef)
|
|
162
|
-
return void 0;
|
|
163
|
-
return customResultMapper([row], normalizeFieldValue);
|
|
164
|
-
}
|
|
165
126
|
values(placeholderValues) {
|
|
166
|
-
const stmt = this.client.prepare(this.query.sql);
|
|
167
127
|
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
168
128
|
this.logger.logQuery(this.query.sql, params);
|
|
169
|
-
stmt.bind(params);
|
|
129
|
+
this.stmt.bind(params);
|
|
170
130
|
const rows = [];
|
|
171
|
-
while (stmt.step()) {
|
|
172
|
-
rows.push(stmt.get());
|
|
131
|
+
while (this.stmt.step()) {
|
|
132
|
+
rows.push(this.stmt.get());
|
|
133
|
+
}
|
|
134
|
+
if (this.isOneTimeQuery) {
|
|
135
|
+
this.free();
|
|
173
136
|
}
|
|
174
|
-
stmt.free();
|
|
175
137
|
return rows;
|
|
176
138
|
}
|
|
139
|
+
free() {
|
|
140
|
+
return this.stmt.free();
|
|
141
|
+
}
|
|
177
142
|
/** @internal */
|
|
178
143
|
isResponseInArrayMode() {
|
|
179
144
|
return this._isResponseInArrayMode;
|
package/sql-js/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sql-js/session.ts"],"sourcesContent":["import type { BindParams, Database } from 'sql.js';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface SQLJsSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLJsSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', void, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: SQLJsSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): PreparedQuery<T> {\n\t\treturn new PreparedQuery(this.client, query, this.logger, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): PreparedQuery<T, true> {\n\t\treturn new PreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: SQLJsTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new SQLJsTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tthis.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class SQLJsTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', void, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: SQLJsTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new SQLJsTransaction(\n\t\t\t'sync',\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\ttx.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\ttx.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\ttx.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'SQLJsPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): void {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst result = stmt.run(params as BindParams);\n\n\t\tstmt.free();\n\n\t\treturn result;\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst { fields, joinsNotNullableMap, logger, query, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tstmt.bind(params as BindParams);\n\t\t\tconst rows: unknown[] = [];\n\t\t\twhile (stmt.step()) {\n\t\t\t\trows.push(stmt.getAsObject());\n\t\t\t}\n\n\t\t\tstmt.free();\n\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows, normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap));\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst { logger, query, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\tstmt.bind(params as BindParams);\n\t\tconst rows: Record<string, unknown>[] = [];\n\t\twhile (stmt.step()) {\n\t\t\trows.push(stmt.getAsObject());\n\t\t}\n\n\t\tstmt.free();\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows, normalizeFieldValue) as T['all'];\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = stmt.getAsObject(params as BindParams);\n\n\t\t\tstmt.free();\n\n\t\t\treturn result;\n\t\t}\n\n\t\tconst row = stmt.get(params as BindParams);\n\n\t\tstmt.free();\n\n\t\tif (!row || (row.length === 0 && fields!.length > 0)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)([row], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { customResultMapper } = this;\n\n\t\tconst row = stmt.getAsObject(params as BindParams);\n\n\t\tstmt.free();\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tlet nonUndef = false;\n\t\tfor (const v of Object.values(row)) {\n\t\t\tif (v !== undefined) {\n\t\t\t\tnonUndef = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!nonUndef) return undefined;\n\n\t\treturn (customResultMapper as (\n\t\t\trows: Record<string, unknown>[],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row], normalizeFieldValue) as T['get'];\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst stmt = this.client.prepare(this.query.sql);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tstmt.bind(params as BindParams);\n\t\tconst rows: unknown[] = [];\n\t\twhile (stmt.step()) {\n\t\t\trows.push(stmt.get());\n\t\t}\n\n\t\tstmt.free();\n\n\t\treturn rows;\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (value instanceof Uint8Array) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
|
|
1
|
+
{"version":3,"sources":["../../src/sql-js/session.ts"],"sourcesContent":["import type { BindParams, Database, Statement } from 'sql.js';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery as PreparedQueryBase, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface SQLJsSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class SQLJsSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'sync', void, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: SQLJsSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(stmt, query, this.logger, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\toverride prepareOneTimeQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new SQLJsTransaction('sync', this.dialect, this, this.schema);\n\t\tthis.run(sql.raw(`begin${config.behavior ? ` ${config.behavior}` : ''}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.run(sql`commit`);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.run(sql`rollback`);\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class SQLJsTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', void, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLJsTransaction';\n\n\toverride transaction<T>(transaction: (tx: SQLJsTransaction<TFullSchema, TSchema>) => T): T {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new SQLJsTransaction('sync', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\ttx.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\ttx.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\ttx.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<\n\t{ type: 'sync'; run: void; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLJsPreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t\tprivate isOneTimeQuery = false,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): void {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tconst result = this.stmt.run(params as BindParams);\n\n\t\tif (this.isOneTimeQuery) {\n\t\t\tthis.free();\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { fields, joinsNotNullableMap, logger, query, stmt, isOneTimeQuery, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\tstmt.bind(params as BindParams);\n\t\t\tconst rows: unknown[] = [];\n\t\t\twhile (stmt.step()) {\n\t\t\t\trows.push(stmt.getAsObject());\n\t\t\t}\n\n\t\t\tif (isOneTimeQuery) {\n\t\t\t\tthis.free();\n\t\t\t}\n\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows, normalizeFieldValue) as T['all'];\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, isOneTimeQuery, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst result = stmt.getAsObject(params as BindParams);\n\n\t\t\tif (isOneTimeQuery) {\n\t\t\t\tthis.free();\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tconst row = stmt.get(params as BindParams);\n\n\t\tif (isOneTimeQuery) {\n\t\t\tthis.free();\n\t\t}\n\n\t\tif (!row || (row.length === 0 && fields!.length > 0)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper([row], normalizeFieldValue) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row.map((v) => normalizeFieldValue(v)), joinsNotNullableMap);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\tthis.stmt.bind(params as BindParams);\n\t\tconst rows: unknown[] = [];\n\t\twhile (this.stmt.step()) {\n\t\t\trows.push(this.stmt.get());\n\t\t}\n\n\t\tif (this.isOneTimeQuery) {\n\t\t\tthis.free();\n\t\t}\n\n\t\treturn rows;\n\t}\n\n\tfree(): boolean {\n\t\treturn this.stmt.free();\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nfunction normalizeFieldValue(value: unknown) {\n\tif (value instanceof Uint8Array) { // eslint-disable-line no-instanceof/no-instanceof\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\tif (!(value instanceof Buffer)) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t\t\treturn Buffer.from(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\treturn new TextDecoder().decode(value);\n\t\t}\n\t\tthrow new Error('TextDecoder is not available. Please provide either Buffer or TextDecoder polyfill.');\n\t}\n\treturn value;\n}\n"],"mappings":"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","names":["rows"]}
|
package/sqlite-core/db.cjs
CHANGED
|
@@ -27,65 +27,41 @@ var import_selection_proxy = require("../selection-proxy.cjs");
|
|
|
27
27
|
var import_sql = require("../sql/sql.cjs");
|
|
28
28
|
var import_query_builders = require("./query-builders/index.cjs");
|
|
29
29
|
var import_subquery = require("../subquery.cjs");
|
|
30
|
-
var import_query = require("./query-builders/_query.cjs");
|
|
31
30
|
var import_count = require("./query-builders/count.cjs");
|
|
32
|
-
var
|
|
31
|
+
var import_query = require("./query-builders/query.cjs");
|
|
33
32
|
var import_raw = require("./query-builders/raw.cjs");
|
|
34
33
|
class BaseSQLiteDatabase {
|
|
35
|
-
constructor(resultKind, dialect, session,
|
|
34
|
+
constructor(resultKind, dialect, session, schema) {
|
|
36
35
|
this.resultKind = resultKind;
|
|
37
36
|
this.dialect = dialect;
|
|
38
37
|
this.session = session;
|
|
39
|
-
this.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
fullSchema: _schema.fullSchema,
|
|
44
|
-
tableNamesMap: _schema.tableNamesMap,
|
|
45
|
-
relations: rel
|
|
38
|
+
this._ = schema ? {
|
|
39
|
+
schema: schema.schema,
|
|
40
|
+
fullSchema: schema.fullSchema,
|
|
41
|
+
tableNamesMap: schema.tableNamesMap
|
|
46
42
|
} : {
|
|
47
43
|
schema: void 0,
|
|
48
44
|
fullSchema: {},
|
|
49
|
-
tableNamesMap: {}
|
|
50
|
-
relations: rel
|
|
45
|
+
tableNamesMap: {}
|
|
51
46
|
};
|
|
52
|
-
this.
|
|
53
|
-
const query = this.
|
|
47
|
+
this.query = {};
|
|
48
|
+
const query = this.query;
|
|
54
49
|
if (this._.schema) {
|
|
55
50
|
for (const [tableName, columns] of Object.entries(this._.schema)) {
|
|
56
|
-
query[tableName] = new import_query.
|
|
51
|
+
query[tableName] = new import_query.RelationalQueryBuilder(
|
|
57
52
|
resultKind,
|
|
58
|
-
|
|
53
|
+
schema.fullSchema,
|
|
59
54
|
this._.schema,
|
|
60
55
|
this._.tableNamesMap,
|
|
61
|
-
|
|
56
|
+
schema.fullSchema[tableName],
|
|
62
57
|
columns,
|
|
63
58
|
dialect,
|
|
64
59
|
session
|
|
65
60
|
);
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
|
-
this.query = {};
|
|
69
|
-
if (relations) {
|
|
70
|
-
for (const [tableName, relation] of Object.entries(relations.tablesConfig)) {
|
|
71
|
-
this.query[tableName] = new import_query2.RelationalQueryBuilder(
|
|
72
|
-
resultKind,
|
|
73
|
-
relations.tables,
|
|
74
|
-
relations.tablesConfig,
|
|
75
|
-
relations.tableNamesMap,
|
|
76
|
-
relation.table,
|
|
77
|
-
relation,
|
|
78
|
-
dialect,
|
|
79
|
-
session,
|
|
80
|
-
rowModeRQB
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
63
|
}
|
|
85
64
|
static [import_entity.entityKind] = "BaseSQLiteDatabase";
|
|
86
|
-
/** @deprecated */
|
|
87
|
-
_query;
|
|
88
|
-
// TO-DO: Figure out how to pass DrizzleTypeError without breaking withReplicas
|
|
89
65
|
query;
|
|
90
66
|
/**
|
|
91
67
|
* Creates a subquery that defines a temporary named result set as a CTE.
|
|
@@ -119,20 +95,24 @@ class BaseSQLiteDatabase {
|
|
|
119
95
|
* const result = await db.with(sq).select({ name: sq.name }).from(sq);
|
|
120
96
|
* ```
|
|
121
97
|
*/
|
|
122
|
-
$with(alias) {
|
|
98
|
+
$with = (alias, selection) => {
|
|
123
99
|
const self = this;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
qb = qb(new import_query_builders.QueryBuilder(self.dialect));
|
|
128
|
-
}
|
|
129
|
-
return new Proxy(
|
|
130
|
-
new import_subquery.WithSubquery(qb.getSQL(), qb.getSelectedFields(), alias, true),
|
|
131
|
-
new import_selection_proxy.SelectionProxyHandler({ alias, sqlAliasedBehavior: "alias", sqlBehavior: "error" })
|
|
132
|
-
);
|
|
100
|
+
const as = (qb) => {
|
|
101
|
+
if (typeof qb === "function") {
|
|
102
|
+
qb = qb(new import_query_builders.QueryBuilder(self.dialect));
|
|
133
103
|
}
|
|
104
|
+
return new Proxy(
|
|
105
|
+
new import_subquery.WithSubquery(
|
|
106
|
+
qb.getSQL(),
|
|
107
|
+
selection ?? ("getSelectedFields" in qb ? qb.getSelectedFields() ?? {} : {}),
|
|
108
|
+
alias,
|
|
109
|
+
true
|
|
110
|
+
),
|
|
111
|
+
new import_selection_proxy.SelectionProxyHandler({ alias, sqlAliasedBehavior: "alias", sqlBehavior: "error" })
|
|
112
|
+
);
|
|
134
113
|
};
|
|
135
|
-
|
|
114
|
+
return { as };
|
|
115
|
+
};
|
|
136
116
|
$count(source, filters) {
|
|
137
117
|
return new import_count.SQLiteCountBuilder({ source, filters, session: this.session });
|
|
138
118
|
}
|
|
@@ -339,6 +319,7 @@ class BaseSQLiteDatabase {
|
|
|
339
319
|
const withReplicas = (primary, replicas, getReplica = () => replicas[Math.floor(Math.random() * replicas.length)]) => {
|
|
340
320
|
const select = (...args) => getReplica(replicas).select(...args);
|
|
341
321
|
const selectDistinct = (...args) => getReplica(replicas).selectDistinct(...args);
|
|
322
|
+
const $count = (...args) => getReplica(replicas).$count(...args);
|
|
342
323
|
const $with = (...args) => getReplica(replicas).with(...args);
|
|
343
324
|
const update = (...args) => primary.update(...args);
|
|
344
325
|
const insert = (...args) => primary.insert(...args);
|
|
@@ -361,9 +342,10 @@ const withReplicas = (primary, replicas, getReplica = () => replicas[Math.floor(
|
|
|
361
342
|
$primary: primary,
|
|
362
343
|
select,
|
|
363
344
|
selectDistinct,
|
|
345
|
+
$count,
|
|
364
346
|
with: $with,
|
|
365
|
-
get
|
|
366
|
-
return getReplica(replicas).
|
|
347
|
+
get query() {
|
|
348
|
+
return getReplica(replicas).query;
|
|
367
349
|
}
|
|
368
350
|
};
|
|
369
351
|
};
|