drizzle-orm 0.43.1-b08434e → 0.43.1-e3d1c4f
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 +7 -6
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +4 -3
- package/aws-data-api/pg/driver.d.ts +4 -3
- package/aws-data-api/pg/driver.js +7 -6
- package/aws-data-api/pg/driver.js.map +1 -1
- package/aws-data-api/pg/session.cjs +26 -9
- package/aws-data-api/pg/session.cjs.map +1 -1
- package/aws-data-api/pg/session.d.cts +5 -4
- package/aws-data-api/pg/session.d.ts +5 -4
- package/aws-data-api/pg/session.js +26 -9
- package/aws-data-api/pg/session.js.map +1 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.d.cts +4 -3
- package/better-sqlite3/driver.d.ts +4 -3
- package/better-sqlite3/driver.js.map +1 -1
- package/better-sqlite3/session.cjs +5 -5
- package/better-sqlite3/session.cjs.map +1 -1
- package/better-sqlite3/session.d.cts +5 -5
- package/better-sqlite3/session.d.ts +5 -5
- package/better-sqlite3/session.js +5 -5
- package/better-sqlite3/session.js.map +1 -1
- package/bun-sql/driver.cjs +3 -2
- package/bun-sql/driver.cjs.map +1 -1
- package/bun-sql/driver.d.cts +4 -3
- package/bun-sql/driver.d.ts +4 -3
- package/bun-sql/driver.js +3 -2
- package/bun-sql/driver.js.map +1 -1
- package/bun-sql/session.cjs +20 -11
- package/bun-sql/session.cjs.map +1 -1
- package/bun-sql/session.d.cts +6 -5
- package/bun-sql/session.d.ts +6 -5
- package/bun-sql/session.js +20 -11
- package/bun-sql/session.js.map +1 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.d.cts +4 -3
- package/bun-sqlite/driver.d.ts +4 -3
- package/bun-sqlite/driver.js.map +1 -1
- package/bun-sqlite/session.cjs +5 -5
- package/bun-sqlite/session.cjs.map +1 -1
- package/bun-sqlite/session.d.cts +5 -5
- package/bun-sqlite/session.d.ts +5 -5
- package/bun-sqlite/session.js +5 -5
- package/bun-sqlite/session.js.map +1 -1
- package/column-builder.cjs.map +1 -1
- package/column-builder.d.cts +7 -2
- package/column-builder.d.ts +7 -2
- package/column-builder.js.map +1 -1
- package/column.cjs +2 -0
- package/column.cjs.map +1 -1
- package/column.d.cts +6 -0
- package/column.d.ts +6 -0
- package/column.js +2 -0
- package/column.js.map +1 -1
- package/d1/driver.cjs +3 -2
- package/d1/driver.cjs.map +1 -1
- package/d1/driver.d.cts +2 -1
- package/d1/driver.d.ts +2 -1
- package/d1/driver.js +3 -2
- package/d1/driver.js.map +1 -1
- package/d1/session.cjs +20 -11
- package/d1/session.cjs.map +1 -1
- package/d1/session.d.cts +8 -7
- package/d1/session.d.ts +8 -7
- package/d1/session.js +20 -11
- package/d1/session.js.map +1 -1
- package/durable-sqlite/driver.cjs.map +1 -1
- package/durable-sqlite/driver.d.cts +2 -1
- package/durable-sqlite/driver.d.ts +2 -1
- package/durable-sqlite/driver.js.map +1 -1
- package/durable-sqlite/session.cjs +5 -5
- package/durable-sqlite/session.cjs.map +1 -1
- package/durable-sqlite/session.d.cts +5 -5
- package/durable-sqlite/session.d.ts +5 -5
- package/durable-sqlite/session.js +5 -5
- package/durable-sqlite/session.js.map +1 -1
- package/expo-sqlite/driver.cjs.map +1 -1
- package/expo-sqlite/driver.d.cts +2 -1
- package/expo-sqlite/driver.d.ts +2 -1
- package/expo-sqlite/driver.js.map +1 -1
- package/expo-sqlite/session.cjs +5 -5
- package/expo-sqlite/session.cjs.map +1 -1
- package/expo-sqlite/session.d.cts +5 -5
- package/expo-sqlite/session.d.ts +5 -5
- package/expo-sqlite/session.js +5 -5
- package/expo-sqlite/session.js.map +1 -1
- package/extension-core/gel/index.cjs +33 -0
- package/extension-core/gel/index.cjs.map +1 -0
- package/extension-core/gel/index.d.cts +67 -0
- package/extension-core/gel/index.d.ts +67 -0
- package/extension-core/gel/index.js +9 -0
- package/extension-core/gel/index.js.map +1 -0
- package/extension-core/index.cjs +42 -0
- package/extension-core/index.cjs.map +1 -0
- package/extension-core/index.d.cts +9 -0
- package/extension-core/index.d.ts +9 -0
- package/extension-core/index.js +15 -0
- package/extension-core/index.js.map +1 -0
- package/extension-core/mysql/index.cjs +33 -0
- package/extension-core/mysql/index.cjs.map +1 -0
- package/extension-core/mysql/index.d.cts +69 -0
- package/extension-core/mysql/index.d.ts +69 -0
- package/extension-core/mysql/index.js +9 -0
- package/extension-core/mysql/index.js.map +1 -0
- package/extension-core/pg/index.cjs +33 -0
- package/extension-core/pg/index.cjs.map +1 -0
- package/extension-core/pg/index.d.cts +67 -0
- package/extension-core/pg/index.d.ts +67 -0
- package/extension-core/pg/index.js +9 -0
- package/extension-core/pg/index.js.map +1 -0
- package/extension-core/singlestore/index.cjs +33 -0
- package/extension-core/singlestore/index.cjs.map +1 -0
- package/extension-core/singlestore/index.d.cts +67 -0
- package/extension-core/singlestore/index.d.ts +67 -0
- package/extension-core/singlestore/index.js +9 -0
- package/extension-core/singlestore/index.js.map +1 -0
- package/extension-core/sqlite/index.cjs +33 -0
- package/extension-core/sqlite/index.cjs.map +1 -0
- package/extension-core/sqlite/index.d.cts +68 -0
- package/extension-core/sqlite/index.d.ts +68 -0
- package/extension-core/sqlite/index.js +9 -0
- package/extension-core/sqlite/index.js.map +1 -0
- package/extensions/hook/gel/index.cjs +47 -0
- package/extensions/hook/gel/index.cjs.map +1 -0
- package/extensions/hook/gel/index.d.cts +11 -0
- package/extensions/hook/gel/index.d.ts +11 -0
- package/extensions/hook/gel/index.js +22 -0
- package/extensions/hook/gel/index.js.map +1 -0
- package/extensions/hook/mysql/index.cjs +47 -0
- package/extensions/hook/mysql/index.cjs.map +1 -0
- package/extensions/hook/mysql/index.d.cts +11 -0
- package/extensions/hook/mysql/index.d.ts +11 -0
- package/extensions/hook/mysql/index.js +22 -0
- package/extensions/hook/mysql/index.js.map +1 -0
- package/extensions/hook/pg/index.cjs +47 -0
- package/extensions/hook/pg/index.cjs.map +1 -0
- package/extensions/hook/pg/index.d.cts +11 -0
- package/extensions/hook/pg/index.d.ts +11 -0
- package/extensions/hook/pg/index.js +22 -0
- package/extensions/hook/pg/index.js.map +1 -0
- package/extensions/hook/singlestore/index.cjs +47 -0
- package/extensions/hook/singlestore/index.cjs.map +1 -0
- package/extensions/hook/singlestore/index.d.cts +11 -0
- package/extensions/hook/singlestore/index.d.ts +11 -0
- package/extensions/hook/singlestore/index.js +22 -0
- package/extensions/hook/singlestore/index.js.map +1 -0
- package/extensions/hook/sqlite/index.cjs +47 -0
- package/extensions/hook/sqlite/index.cjs.map +1 -0
- package/extensions/hook/sqlite/index.d.cts +11 -0
- package/extensions/hook/sqlite/index.d.ts +11 -0
- package/extensions/hook/sqlite/index.js +22 -0
- package/extensions/hook/sqlite/index.js.map +1 -0
- package/extensions/s3-file/common.cjs +321 -0
- package/extensions/s3-file/common.cjs.map +1 -0
- package/extensions/s3-file/common.d.cts +88 -0
- package/extensions/s3-file/common.d.ts +88 -0
- package/extensions/s3-file/common.js +288 -0
- package/extensions/s3-file/common.js.map +1 -0
- package/extensions/s3-file/gel/column.cjs +124 -0
- package/extensions/s3-file/gel/column.cjs.map +1 -0
- package/extensions/s3-file/gel/column.d.cts +105 -0
- package/extensions/s3-file/gel/column.d.ts +105 -0
- package/extensions/s3-file/gel/column.js +103 -0
- package/extensions/s3-file/gel/column.js.map +1 -0
- package/extensions/s3-file/gel/extension.cjs +271 -0
- package/extensions/s3-file/gel/extension.cjs.map +1 -0
- package/extensions/s3-file/gel/extension.d.cts +18 -0
- package/extensions/s3-file/gel/extension.d.ts +18 -0
- package/extensions/s3-file/gel/extension.js +257 -0
- package/extensions/s3-file/gel/extension.js.map +1 -0
- package/extensions/s3-file/gel/index.cjs +25 -0
- package/extensions/s3-file/gel/index.cjs.map +1 -0
- package/extensions/s3-file/gel/index.d.cts +2 -0
- package/extensions/s3-file/gel/index.d.ts +2 -0
- package/extensions/s3-file/gel/index.js +3 -0
- package/extensions/s3-file/gel/index.js.map +1 -0
- package/extensions/s3-file/index.cjs +23 -0
- package/extensions/s3-file/index.cjs.map +1 -0
- package/extensions/s3-file/index.d.cts +1 -0
- package/extensions/s3-file/index.d.ts +1 -0
- package/extensions/s3-file/index.js +2 -0
- package/extensions/s3-file/index.js.map +1 -0
- package/extensions/s3-file/mysql/column.cjs +121 -0
- package/extensions/s3-file/mysql/column.cjs.map +1 -0
- package/extensions/s3-file/mysql/column.d.cts +63 -0
- package/extensions/s3-file/mysql/column.d.ts +63 -0
- package/extensions/s3-file/mysql/column.js +97 -0
- package/extensions/s3-file/mysql/column.js.map +1 -0
- package/extensions/s3-file/mysql/extension.cjs +250 -0
- package/extensions/s3-file/mysql/extension.cjs.map +1 -0
- package/extensions/s3-file/mysql/extension.d.cts +18 -0
- package/extensions/s3-file/mysql/extension.d.ts +18 -0
- package/extensions/s3-file/mysql/extension.js +236 -0
- package/extensions/s3-file/mysql/extension.js.map +1 -0
- package/extensions/s3-file/mysql/index.cjs +25 -0
- package/extensions/s3-file/mysql/index.cjs.map +1 -0
- package/extensions/s3-file/mysql/index.d.cts +2 -0
- package/extensions/s3-file/mysql/index.d.ts +2 -0
- package/extensions/s3-file/mysql/index.js +3 -0
- package/extensions/s3-file/mysql/index.js.map +1 -0
- package/extensions/s3-file/pg/column.cjs +124 -0
- package/extensions/s3-file/pg/column.cjs.map +1 -0
- package/extensions/s3-file/pg/column.d.cts +105 -0
- package/extensions/s3-file/pg/column.d.ts +105 -0
- package/extensions/s3-file/pg/column.js +103 -0
- package/extensions/s3-file/pg/column.js.map +1 -0
- package/extensions/s3-file/pg/extension.cjs +272 -0
- package/extensions/s3-file/pg/extension.cjs.map +1 -0
- package/extensions/s3-file/pg/extension.d.cts +18 -0
- package/extensions/s3-file/pg/extension.d.ts +18 -0
- package/extensions/s3-file/pg/extension.js +258 -0
- package/extensions/s3-file/pg/extension.js.map +1 -0
- package/extensions/s3-file/pg/index.cjs +25 -0
- package/extensions/s3-file/pg/index.cjs.map +1 -0
- package/extensions/s3-file/pg/index.d.cts +2 -0
- package/extensions/s3-file/pg/index.d.ts +2 -0
- package/extensions/s3-file/pg/index.js +3 -0
- package/extensions/s3-file/pg/index.js.map +1 -0
- package/extensions/s3-file/singlestore/column.cjs +121 -0
- package/extensions/s3-file/singlestore/column.cjs.map +1 -0
- package/extensions/s3-file/singlestore/column.d.cts +63 -0
- package/extensions/s3-file/singlestore/column.d.ts +63 -0
- package/extensions/s3-file/singlestore/column.js +97 -0
- package/extensions/s3-file/singlestore/column.js.map +1 -0
- package/extensions/s3-file/singlestore/extension.cjs +247 -0
- package/extensions/s3-file/singlestore/extension.cjs.map +1 -0
- package/extensions/s3-file/singlestore/extension.d.cts +18 -0
- package/extensions/s3-file/singlestore/extension.d.ts +18 -0
- package/extensions/s3-file/singlestore/extension.js +233 -0
- package/extensions/s3-file/singlestore/extension.js.map +1 -0
- package/extensions/s3-file/singlestore/index.cjs +25 -0
- package/extensions/s3-file/singlestore/index.cjs.map +1 -0
- package/extensions/s3-file/singlestore/index.d.cts +2 -0
- package/extensions/s3-file/singlestore/index.d.ts +2 -0
- package/extensions/s3-file/singlestore/index.js +3 -0
- package/extensions/s3-file/singlestore/index.js.map +1 -0
- package/extensions/s3-file/sqlite/column.cjs +121 -0
- package/extensions/s3-file/sqlite/column.cjs.map +1 -0
- package/extensions/s3-file/sqlite/column.d.cts +63 -0
- package/extensions/s3-file/sqlite/column.d.ts +63 -0
- package/extensions/s3-file/sqlite/column.js +97 -0
- package/extensions/s3-file/sqlite/column.js.map +1 -0
- package/extensions/s3-file/sqlite/extension.cjs +250 -0
- package/extensions/s3-file/sqlite/extension.cjs.map +1 -0
- package/extensions/s3-file/sqlite/extension.d.cts +18 -0
- package/extensions/s3-file/sqlite/extension.d.ts +18 -0
- package/extensions/s3-file/sqlite/extension.js +236 -0
- package/extensions/s3-file/sqlite/extension.js.map +1 -0
- package/extensions/s3-file/sqlite/index.cjs +25 -0
- package/extensions/s3-file/sqlite/index.cjs.map +1 -0
- package/extensions/s3-file/sqlite/index.d.cts +2 -0
- package/extensions/s3-file/sqlite/index.d.ts +2 -0
- package/extensions/s3-file/sqlite/index.js +3 -0
- package/extensions/s3-file/sqlite/index.js.map +1 -0
- package/gel/driver.cjs +6 -4
- package/gel/driver.cjs.map +1 -1
- package/gel/driver.d.cts +6 -4
- package/gel/driver.d.ts +6 -4
- package/gel/driver.js +6 -4
- package/gel/driver.js.map +1 -1
- package/gel/session.cjs +12 -9
- package/gel/session.cjs.map +1 -1
- package/gel/session.d.cts +5 -4
- package/gel/session.d.ts +5 -4
- package/gel/session.js +12 -9
- package/gel/session.js.map +1 -1
- package/gel-core/columns/common.cjs +8 -0
- package/gel-core/columns/common.cjs.map +1 -1
- package/gel-core/columns/common.d.cts +2 -0
- package/gel-core/columns/common.d.ts +2 -0
- package/gel-core/columns/common.js +8 -0
- package/gel-core/columns/common.js.map +1 -1
- package/gel-core/db.cjs +5 -3
- package/gel-core/db.cjs.map +1 -1
- package/gel-core/db.d.cts +3 -1
- package/gel-core/db.d.ts +3 -1
- package/gel-core/db.js +5 -3
- package/gel-core/db.js.map +1 -1
- package/gel-core/dialect.cjs +25 -19
- package/gel-core/dialect.cjs.map +1 -1
- package/gel-core/dialect.d.cts +7 -6
- package/gel-core/dialect.d.ts +7 -6
- package/gel-core/dialect.js +26 -20
- package/gel-core/dialect.js.map +1 -1
- package/gel-core/query-builders/delete.cjs +7 -2
- package/gel-core/query-builders/delete.cjs.map +1 -1
- package/gel-core/query-builders/delete.js +7 -2
- package/gel-core/query-builders/delete.js.map +1 -1
- package/gel-core/query-builders/insert.cjs +32 -6
- package/gel-core/query-builders/insert.cjs.map +1 -1
- package/gel-core/query-builders/insert.js +34 -8
- package/gel-core/query-builders/insert.js.map +1 -1
- package/gel-core/query-builders/query.cjs +12 -1
- package/gel-core/query-builders/query.cjs.map +1 -1
- package/gel-core/query-builders/query.js +12 -1
- package/gel-core/query-builders/query.js.map +1 -1
- package/gel-core/query-builders/select.cjs +9 -2
- package/gel-core/query-builders/select.cjs.map +1 -1
- package/gel-core/query-builders/select.js +9 -2
- package/gel-core/query-builders/select.js.map +1 -1
- package/gel-core/query-builders/update.cjs +8 -3
- package/gel-core/query-builders/update.cjs.map +1 -1
- package/gel-core/query-builders/update.js +8 -3
- package/gel-core/query-builders/update.js.map +1 -1
- package/gel-core/session.cjs +48 -4
- package/gel-core/session.cjs.map +1 -1
- package/gel-core/session.d.cts +11 -5
- package/gel-core/session.d.ts +11 -5
- package/gel-core/session.js +48 -4
- package/gel-core/session.js.map +1 -1
- package/libsql/driver-core.cjs +3 -2
- package/libsql/driver-core.cjs.map +1 -1
- package/libsql/driver-core.js +3 -2
- package/libsql/driver-core.js.map +1 -1
- package/libsql/driver.cjs +4 -1
- package/libsql/driver.cjs.map +1 -1
- package/libsql/driver.d.cts +4 -3
- package/libsql/driver.d.ts +4 -3
- package/libsql/driver.js +4 -1
- package/libsql/driver.js.map +1 -1
- package/libsql/http/index.cjs +4 -1
- package/libsql/http/index.cjs.map +1 -1
- package/libsql/http/index.d.cts +4 -3
- package/libsql/http/index.d.ts +4 -3
- package/libsql/http/index.js +4 -1
- package/libsql/http/index.js.map +1 -1
- package/libsql/node/index.cjs +4 -1
- package/libsql/node/index.cjs.map +1 -1
- package/libsql/node/index.d.cts +4 -3
- package/libsql/node/index.d.ts +4 -3
- package/libsql/node/index.js +4 -1
- package/libsql/node/index.js.map +1 -1
- package/libsql/session.cjs +29 -12
- package/libsql/session.cjs.map +1 -1
- package/libsql/session.d.cts +8 -7
- package/libsql/session.d.ts +8 -7
- package/libsql/session.js +29 -12
- package/libsql/session.js.map +1 -1
- package/libsql/sqlite3/index.cjs +4 -1
- package/libsql/sqlite3/index.cjs.map +1 -1
- package/libsql/sqlite3/index.d.cts +4 -3
- package/libsql/sqlite3/index.d.ts +4 -3
- package/libsql/sqlite3/index.js +4 -1
- package/libsql/sqlite3/index.js.map +1 -1
- package/libsql/wasm/index.cjs +4 -1
- package/libsql/wasm/index.cjs.map +1 -1
- package/libsql/wasm/index.d.cts +4 -3
- package/libsql/wasm/index.d.ts +4 -3
- package/libsql/wasm/index.js +4 -1
- package/libsql/wasm/index.js.map +1 -1
- package/libsql/web/index.cjs +4 -1
- package/libsql/web/index.cjs.map +1 -1
- package/libsql/web/index.d.cts +4 -3
- package/libsql/web/index.d.ts +4 -3
- package/libsql/web/index.js +4 -1
- package/libsql/web/index.js.map +1 -1
- package/libsql/ws/index.cjs +4 -1
- package/libsql/ws/index.cjs.map +1 -1
- package/libsql/ws/index.d.cts +4 -3
- package/libsql/ws/index.d.ts +4 -3
- package/libsql/ws/index.js +4 -1
- package/libsql/ws/index.js.map +1 -1
- package/mysql-core/db.cjs +5 -3
- package/mysql-core/db.cjs.map +1 -1
- package/mysql-core/db.d.cts +3 -1
- package/mysql-core/db.d.ts +3 -1
- package/mysql-core/db.js +5 -3
- package/mysql-core/db.js.map +1 -1
- package/mysql-core/dialect.cjs +30 -23
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +8 -7
- package/mysql-core/dialect.d.ts +8 -7
- package/mysql-core/dialect.js +31 -24
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/delete.cjs +8 -2
- package/mysql-core/query-builders/delete.cjs.map +1 -1
- package/mysql-core/query-builders/delete.js +8 -2
- package/mysql-core/query-builders/delete.js.map +1 -1
- package/mysql-core/query-builders/insert.cjs +29 -5
- package/mysql-core/query-builders/insert.cjs.map +1 -1
- package/mysql-core/query-builders/insert.js +31 -7
- package/mysql-core/query-builders/insert.js.map +1 -1
- package/mysql-core/query-builders/query.cjs +14 -2
- package/mysql-core/query-builders/query.cjs.map +1 -1
- package/mysql-core/query-builders/query.js +14 -2
- package/mysql-core/query-builders/query.js.map +1 -1
- package/mysql-core/query-builders/select.cjs +12 -4
- package/mysql-core/query-builders/select.cjs.map +1 -1
- package/mysql-core/query-builders/select.js +12 -4
- package/mysql-core/query-builders/select.js.map +1 -1
- package/mysql-core/query-builders/update.cjs +15 -3
- package/mysql-core/query-builders/update.cjs.map +1 -1
- package/mysql-core/query-builders/update.js +15 -3
- package/mysql-core/query-builders/update.js.map +1 -1
- package/mysql-core/session.cjs +45 -3
- package/mysql-core/session.cjs.map +1 -1
- package/mysql-core/session.d.cts +13 -4
- package/mysql-core/session.d.ts +13 -4
- package/mysql-core/session.js +45 -3
- package/mysql-core/session.js.map +1 -1
- package/mysql-proxy/driver.cjs +3 -2
- package/mysql-proxy/driver.cjs.map +1 -1
- package/mysql-proxy/driver.d.cts +2 -1
- package/mysql-proxy/driver.d.ts +2 -1
- package/mysql-proxy/driver.js +3 -2
- package/mysql-proxy/driver.js.map +1 -1
- package/mysql-proxy/session.cjs +8 -8
- package/mysql-proxy/session.cjs.map +1 -1
- package/mysql-proxy/session.d.cts +5 -6
- package/mysql-proxy/session.d.ts +5 -6
- package/mysql-proxy/session.js +8 -8
- package/mysql-proxy/session.js.map +1 -1
- package/mysql2/driver.cjs +6 -4
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +4 -2
- package/mysql2/driver.d.ts +4 -2
- package/mysql2/driver.js +6 -4
- package/mysql2/driver.js.map +1 -1
- package/mysql2/session.cjs +14 -10
- package/mysql2/session.cjs.map +1 -1
- package/mysql2/session.d.cts +5 -5
- package/mysql2/session.d.ts +5 -5
- package/mysql2/session.js +14 -10
- package/mysql2/session.js.map +1 -1
- package/neon-http/driver.cjs +5 -3
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +6 -4
- package/neon-http/driver.d.ts +6 -4
- package/neon-http/driver.js +5 -3
- package/neon-http/driver.js.map +1 -1
- package/neon-http/session.cjs +8 -6
- package/neon-http/session.cjs.map +1 -1
- package/neon-http/session.d.cts +5 -4
- package/neon-http/session.d.ts +5 -4
- package/neon-http/session.js +8 -6
- package/neon-http/session.js.map +1 -1
- package/neon-serverless/driver.cjs +6 -4
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +6 -4
- package/neon-serverless/driver.d.ts +6 -4
- package/neon-serverless/driver.js +6 -4
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/session.cjs +23 -9
- package/neon-serverless/session.cjs.map +1 -1
- package/neon-serverless/session.d.cts +5 -4
- package/neon-serverless/session.d.ts +5 -4
- package/neon-serverless/session.js +23 -9
- package/neon-serverless/session.js.map +1 -1
- package/node-postgres/driver.cjs +6 -4
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +6 -4
- package/node-postgres/driver.d.ts +6 -4
- package/node-postgres/driver.js +6 -4
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/session.cjs +18 -9
- package/node-postgres/session.cjs.map +1 -1
- package/node-postgres/session.d.cts +5 -4
- package/node-postgres/session.d.ts +5 -4
- package/node-postgres/session.js +18 -9
- package/node-postgres/session.js.map +1 -1
- package/op-sqlite/driver.cjs.map +1 -1
- package/op-sqlite/driver.d.cts +2 -1
- package/op-sqlite/driver.d.ts +2 -1
- package/op-sqlite/driver.js.map +1 -1
- package/op-sqlite/session.cjs +5 -5
- package/op-sqlite/session.cjs.map +1 -1
- package/op-sqlite/session.d.cts +5 -5
- package/op-sqlite/session.d.ts +5 -5
- package/op-sqlite/session.js +5 -5
- package/op-sqlite/session.js.map +1 -1
- package/package.json +347 -1
- package/pg-core/columns/common.cjs +2 -0
- package/pg-core/columns/common.cjs.map +1 -1
- package/pg-core/columns/common.js +2 -0
- package/pg-core/columns/common.js.map +1 -1
- package/pg-core/db.cjs +5 -3
- package/pg-core/db.cjs.map +1 -1
- package/pg-core/db.d.cts +3 -1
- package/pg-core/db.d.ts +3 -1
- package/pg-core/db.js +5 -3
- package/pg-core/db.js.map +1 -1
- package/pg-core/dialect.cjs +26 -19
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +7 -6
- package/pg-core/dialect.d.ts +7 -6
- package/pg-core/dialect.js +27 -20
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/query-builders/delete.cjs +7 -2
- package/pg-core/query-builders/delete.cjs.map +1 -1
- package/pg-core/query-builders/delete.d.cts +1 -1
- package/pg-core/query-builders/delete.d.ts +1 -1
- package/pg-core/query-builders/delete.js +7 -2
- package/pg-core/query-builders/delete.js.map +1 -1
- package/pg-core/query-builders/insert.cjs +37 -6
- package/pg-core/query-builders/insert.cjs.map +1 -1
- package/pg-core/query-builders/insert.js +39 -8
- package/pg-core/query-builders/insert.js.map +1 -1
- package/pg-core/query-builders/query.cjs +12 -1
- package/pg-core/query-builders/query.cjs.map +1 -1
- package/pg-core/query-builders/query.js +12 -1
- package/pg-core/query-builders/query.js.map +1 -1
- package/pg-core/query-builders/select.cjs +11 -4
- package/pg-core/query-builders/select.cjs.map +1 -1
- package/pg-core/query-builders/select.js +11 -4
- package/pg-core/query-builders/select.js.map +1 -1
- package/pg-core/query-builders/update.cjs +8 -3
- package/pg-core/query-builders/update.cjs.map +1 -1
- package/pg-core/query-builders/update.d.cts +2 -2
- package/pg-core/query-builders/update.d.ts +2 -2
- package/pg-core/query-builders/update.js +9 -8
- package/pg-core/query-builders/update.js.map +1 -1
- package/pg-core/session.cjs +49 -4
- package/pg-core/session.cjs.map +1 -1
- package/pg-core/session.d.cts +11 -5
- package/pg-core/session.d.ts +11 -5
- package/pg-core/session.js +49 -4
- package/pg-core/session.js.map +1 -1
- package/pg-proxy/driver.cjs +3 -2
- package/pg-proxy/driver.cjs.map +1 -1
- package/pg-proxy/driver.d.cts +2 -1
- package/pg-proxy/driver.d.ts +2 -1
- package/pg-proxy/driver.js +3 -2
- package/pg-proxy/driver.js.map +1 -1
- package/pg-proxy/session.cjs +8 -6
- package/pg-proxy/session.cjs.map +1 -1
- package/pg-proxy/session.d.cts +5 -4
- package/pg-proxy/session.d.ts +5 -4
- package/pg-proxy/session.js +8 -6
- package/pg-proxy/session.js.map +1 -1
- package/pglite/driver.cjs +6 -4
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +6 -4
- package/pglite/driver.d.ts +6 -4
- package/pglite/driver.js +6 -4
- package/pglite/driver.js.map +1 -1
- package/pglite/session.cjs +19 -9
- package/pglite/session.cjs.map +1 -1
- package/pglite/session.d.cts +5 -4
- package/pglite/session.d.ts +5 -4
- package/pglite/session.js +19 -9
- package/pglite/session.js.map +1 -1
- package/planetscale-serverless/driver.cjs +3 -2
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +4 -3
- package/planetscale-serverless/driver.d.ts +4 -3
- package/planetscale-serverless/driver.js +3 -2
- package/planetscale-serverless/driver.js.map +1 -1
- package/planetscale-serverless/session.cjs +23 -13
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.d.cts +6 -7
- package/planetscale-serverless/session.d.ts +6 -7
- package/planetscale-serverless/session.js +23 -13
- package/planetscale-serverless/session.js.map +1 -1
- package/postgres-js/driver.cjs +3 -2
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +4 -3
- package/postgres-js/driver.d.ts +4 -3
- package/postgres-js/driver.js +3 -2
- package/postgres-js/driver.js.map +1 -1
- package/postgres-js/session.cjs +27 -16
- package/postgres-js/session.cjs.map +1 -1
- package/postgres-js/session.d.cts +6 -5
- package/postgres-js/session.d.ts +6 -5
- package/postgres-js/session.js +27 -16
- package/postgres-js/session.js.map +1 -1
- package/prisma/mysql/driver.cjs +3 -3
- package/prisma/mysql/driver.cjs.map +1 -1
- package/prisma/mysql/driver.d.cts +3 -2
- package/prisma/mysql/driver.d.ts +3 -2
- package/prisma/mysql/driver.js +3 -3
- package/prisma/mysql/driver.js.map +1 -1
- package/prisma/mysql/session.cjs +10 -11
- package/prisma/mysql/session.cjs.map +1 -1
- package/prisma/mysql/session.d.cts +7 -6
- package/prisma/mysql/session.d.ts +7 -6
- package/prisma/mysql/session.js +10 -11
- package/prisma/mysql/session.js.map +1 -1
- package/prisma/pg/driver.cjs +3 -3
- package/prisma/pg/driver.cjs.map +1 -1
- package/prisma/pg/driver.d.cts +2 -1
- package/prisma/pg/driver.d.ts +2 -1
- package/prisma/pg/driver.js +3 -3
- package/prisma/pg/driver.js.map +1 -1
- package/prisma/pg/session.cjs +7 -7
- package/prisma/pg/session.cjs.map +1 -1
- package/prisma/pg/session.d.cts +6 -5
- package/prisma/pg/session.d.ts +6 -5
- package/prisma/pg/session.js +7 -7
- package/prisma/pg/session.js.map +1 -1
- package/prisma/sqlite/driver.cjs +7 -1
- package/prisma/sqlite/driver.cjs.map +1 -1
- package/prisma/sqlite/driver.d.cts +2 -1
- package/prisma/sqlite/driver.d.ts +2 -1
- package/prisma/sqlite/driver.js +7 -1
- package/prisma/sqlite/driver.js.map +1 -1
- package/prisma/sqlite/session.cjs +6 -6
- package/prisma/sqlite/session.cjs.map +1 -1
- package/prisma/sqlite/session.d.cts +6 -5
- package/prisma/sqlite/session.d.ts +6 -5
- package/prisma/sqlite/session.js +6 -6
- package/prisma/sqlite/session.js.map +1 -1
- package/singlestore/driver.cjs +28 -19
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +4 -2
- package/singlestore/driver.d.ts +4 -2
- package/singlestore/driver.js +28 -19
- package/singlestore/driver.js.map +1 -1
- package/singlestore/session.cjs +14 -10
- package/singlestore/session.cjs.map +1 -1
- package/singlestore/session.d.cts +5 -5
- package/singlestore/session.d.ts +5 -5
- package/singlestore/session.js +14 -10
- package/singlestore/session.js.map +1 -1
- package/singlestore-core/db.cjs +5 -3
- package/singlestore-core/db.cjs.map +1 -1
- package/singlestore-core/db.d.cts +3 -1
- package/singlestore-core/db.d.ts +3 -1
- package/singlestore-core/db.js +5 -3
- package/singlestore-core/db.js.map +1 -1
- package/singlestore-core/dialect.cjs +25 -18
- package/singlestore-core/dialect.cjs.map +1 -1
- package/singlestore-core/dialect.d.cts +7 -6
- package/singlestore-core/dialect.d.ts +7 -6
- package/singlestore-core/dialect.js +26 -19
- package/singlestore-core/dialect.js.map +1 -1
- package/singlestore-core/query-builders/delete.cjs +8 -2
- package/singlestore-core/query-builders/delete.cjs.map +1 -1
- package/singlestore-core/query-builders/delete.js +8 -2
- package/singlestore-core/query-builders/delete.js.map +1 -1
- package/singlestore-core/query-builders/insert.cjs +29 -5
- package/singlestore-core/query-builders/insert.cjs.map +1 -1
- package/singlestore-core/query-builders/insert.js +31 -7
- package/singlestore-core/query-builders/insert.js.map +1 -1
- package/singlestore-core/query-builders/query.cjs +12 -1
- package/singlestore-core/query-builders/query.cjs.map +1 -1
- package/singlestore-core/query-builders/query.js +12 -1
- package/singlestore-core/query-builders/query.js.map +1 -1
- package/singlestore-core/query-builders/select.cjs +12 -4
- package/singlestore-core/query-builders/select.cjs.map +1 -1
- package/singlestore-core/query-builders/select.js +12 -4
- package/singlestore-core/query-builders/select.js.map +1 -1
- package/singlestore-core/query-builders/update.cjs +9 -3
- package/singlestore-core/query-builders/update.cjs.map +1 -1
- package/singlestore-core/query-builders/update.js +9 -3
- package/singlestore-core/query-builders/update.js.map +1 -1
- package/singlestore-core/session.cjs +45 -3
- package/singlestore-core/session.cjs.map +1 -1
- package/singlestore-core/session.d.cts +13 -4
- package/singlestore-core/session.d.ts +13 -4
- package/singlestore-core/session.js +45 -3
- package/singlestore-core/session.js.map +1 -1
- package/singlestore-proxy/driver.cjs +3 -2
- package/singlestore-proxy/driver.cjs.map +1 -1
- package/singlestore-proxy/driver.d.cts +2 -1
- package/singlestore-proxy/driver.d.ts +2 -1
- package/singlestore-proxy/driver.js +3 -2
- package/singlestore-proxy/driver.js.map +1 -1
- package/singlestore-proxy/session.cjs +8 -8
- package/singlestore-proxy/session.cjs.map +1 -1
- package/singlestore-proxy/session.d.cts +5 -6
- package/singlestore-proxy/session.d.ts +5 -6
- package/singlestore-proxy/session.js +8 -8
- package/singlestore-proxy/session.js.map +1 -1
- package/sql/sql.cjs +24 -2
- package/sql/sql.cjs.map +1 -1
- package/sql/sql.d.cts +12 -0
- package/sql/sql.d.ts +12 -0
- package/sql/sql.js +23 -2
- package/sql/sql.js.map +1 -1
- package/sql-js/driver.cjs.map +1 -1
- package/sql-js/driver.d.cts +2 -1
- package/sql-js/driver.d.ts +2 -1
- package/sql-js/driver.js.map +1 -1
- package/sql-js/session.cjs +4 -4
- package/sql-js/session.cjs.map +1 -1
- package/sql-js/session.d.cts +4 -4
- package/sql-js/session.d.ts +4 -4
- package/sql-js/session.js +4 -4
- package/sql-js/session.js.map +1 -1
- package/sqlite-core/db.cjs +5 -3
- package/sqlite-core/db.cjs.map +1 -1
- package/sqlite-core/db.d.cts +3 -1
- package/sqlite-core/db.d.ts +3 -1
- package/sqlite-core/db.js +5 -3
- package/sqlite-core/db.js.map +1 -1
- package/sqlite-core/dialect.cjs +30 -19
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +7 -6
- package/sqlite-core/dialect.d.ts +7 -6
- package/sqlite-core/dialect.js +31 -20
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs +8 -2
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.js +8 -2
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/insert.cjs +28 -5
- package/sqlite-core/query-builders/insert.cjs.map +1 -1
- package/sqlite-core/query-builders/insert.js +35 -7
- package/sqlite-core/query-builders/insert.js.map +1 -1
- package/sqlite-core/query-builders/query.cjs +12 -1
- package/sqlite-core/query-builders/query.cjs.map +1 -1
- package/sqlite-core/query-builders/query.js +12 -1
- package/sqlite-core/query-builders/query.js.map +1 -1
- package/sqlite-core/query-builders/select.cjs +15 -6
- package/sqlite-core/query-builders/select.cjs.map +1 -1
- package/sqlite-core/query-builders/select.js +15 -6
- package/sqlite-core/query-builders/select.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs +9 -3
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.js +9 -3
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-core/session.cjs +80 -6
- package/sqlite-core/session.cjs.map +1 -1
- package/sqlite-core/session.d.cts +19 -9
- package/sqlite-core/session.d.ts +19 -9
- package/sqlite-core/session.js +80 -6
- package/sqlite-core/session.js.map +1 -1
- package/sqlite-proxy/driver.cjs +4 -3
- package/sqlite-proxy/driver.cjs.map +1 -1
- package/sqlite-proxy/driver.d.cts +3 -2
- package/sqlite-proxy/driver.d.ts +3 -2
- package/sqlite-proxy/driver.js +4 -3
- package/sqlite-proxy/driver.js.map +1 -1
- package/sqlite-proxy/session.cjs +20 -11
- package/sqlite-proxy/session.cjs.map +1 -1
- package/sqlite-proxy/session.d.cts +8 -7
- package/sqlite-proxy/session.d.ts +8 -7
- package/sqlite-proxy/session.js +20 -11
- package/sqlite-proxy/session.js.map +1 -1
- package/tidb-serverless/driver.cjs +9 -2
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +4 -3
- package/tidb-serverless/driver.d.ts +4 -3
- package/tidb-serverless/driver.js +9 -2
- package/tidb-serverless/driver.js.map +1 -1
- package/tidb-serverless/session.cjs +23 -13
- package/tidb-serverless/session.cjs.map +1 -1
- package/tidb-serverless/session.d.cts +6 -7
- package/tidb-serverless/session.d.ts +6 -7
- package/tidb-serverless/session.js +23 -13
- package/tidb-serverless/session.js.map +1 -1
- package/tracing.cjs.map +1 -1
- package/tracing.js.map +1 -1
- package/utils.cjs +34 -2
- package/utils.cjs.map +1 -1
- package/utils.d.cts +5 -1
- package/utils.d.ts +5 -1
- package/utils.js +35 -4
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +10 -5
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +6 -4
- package/vercel-postgres/driver.d.ts +6 -4
- package/vercel-postgres/driver.js +10 -5
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/session.cjs +18 -9
- package/vercel-postgres/session.cjs.map +1 -1
- package/vercel-postgres/session.d.cts +5 -4
- package/vercel-postgres/session.d.ts +5 -4
- package/vercel-postgres/session.js +18 -9
- 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 -4
- package/xata-http/driver.cjs.map +1 -1
- package/xata-http/driver.d.cts +4 -2
- package/xata-http/driver.d.ts +4 -2
- package/xata-http/driver.js +7 -4
- package/xata-http/driver.js.map +1 -1
- package/xata-http/session.cjs +8 -6
- package/xata-http/session.cjs.map +1 -1
- package/xata-http/session.d.cts +5 -4
- package/xata-http/session.d.ts +5 -4
- package/xata-http/session.js +8 -6
- package/xata-http/session.js.map +1 -1
|
@@ -36,7 +36,13 @@ class MySqlUpdateBuilder {
|
|
|
36
36
|
}
|
|
37
37
|
static [import_entity.entityKind] = "MySqlUpdateBuilder";
|
|
38
38
|
set(values) {
|
|
39
|
-
return new MySqlUpdateBase(
|
|
39
|
+
return new MySqlUpdateBase(
|
|
40
|
+
this.table,
|
|
41
|
+
(0, import_utils.mapUpdateSet)(this.table, values, this.session.extensions),
|
|
42
|
+
this.session,
|
|
43
|
+
this.dialect,
|
|
44
|
+
this.withList
|
|
45
|
+
);
|
|
40
46
|
}
|
|
41
47
|
}
|
|
42
48
|
class MySqlUpdateBase extends import_query_promise.QueryPromise {
|
|
@@ -107,7 +113,7 @@ class MySqlUpdateBase extends import_query_promise.QueryPromise {
|
|
|
107
113
|
}
|
|
108
114
|
/** @internal */
|
|
109
115
|
getSQL() {
|
|
110
|
-
return this.dialect.buildUpdateQuery(this.config);
|
|
116
|
+
return this.dialect.buildUpdateQuery(this.config, this.session.extensions);
|
|
111
117
|
}
|
|
112
118
|
toSQL() {
|
|
113
119
|
const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
|
|
@@ -116,7 +122,13 @@ class MySqlUpdateBase extends import_query_promise.QueryPromise {
|
|
|
116
122
|
prepare() {
|
|
117
123
|
return this.session.prepareQuery(
|
|
118
124
|
this.dialect.sqlToQuery(this.getSQL()),
|
|
119
|
-
this.config.returning
|
|
125
|
+
this.config.returning,
|
|
126
|
+
{
|
|
127
|
+
query: "update",
|
|
128
|
+
config: this.config,
|
|
129
|
+
dialect: this.dialect,
|
|
130
|
+
session: this.session
|
|
131
|
+
}
|
|
120
132
|
);
|
|
121
133
|
}
|
|
122
134
|
execute = (placeholderValues) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mysql-core/query-builders/update.ts"],"sourcesContent":["import type { GetColumnData } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type {\n\tAnyMySqlQueryResultHKT,\n\tMySqlPreparedQueryConfig,\n\tMySqlQueryResultHKT,\n\tMySqlQueryResultKind,\n\tMySqlSession,\n\tPreparedQueryHKTBase,\n\tPreparedQueryKind,\n} from '~/mysql-core/session.ts';\nimport type { MySqlTable } from '~/mysql-core/table.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { Placeholder, Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { mapUpdateSet, type UpdateSet, type ValueOrArray } from '~/utils.ts';\nimport type { MySqlColumn } from '../columns/common.ts';\nimport type { SelectedFieldsOrdered } from './select.types.ts';\n\nexport interface MySqlUpdateConfig {\n\twhere?: SQL | undefined;\n\tlimit?: number | Placeholder;\n\torderBy?: (MySqlColumn | SQL | SQL.Aliased)[];\n\tset: UpdateSet;\n\ttable: MySqlTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type MySqlUpdateSetSource<TTable extends MySqlTable> =\n\t& {\n\t\t[Key in keyof TTable['$inferInsert']]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key], 'query'>\n\t\t\t| SQL\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport class MySqlUpdateBuilder<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tset(values: MySqlUpdateSetSource<TTable>): MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT> {\n\t\treturn new MySqlUpdateBase(this.table, mapUpdateSet(this.table, values), this.session, this.dialect, this.withList);\n\t}\n}\n\nexport type MySqlUpdateWithout<\n\tT extends AnyMySqlUpdateBase,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tMySqlUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['preparedQueryHKT'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type MySqlUpdatePrepare<T extends AnyMySqlUpdateBase> = PreparedQueryKind<\n\tT['_']['preparedQueryHKT'],\n\tMySqlPreparedQueryConfig & {\n\t\texecute: MySqlQueryResultKind<T['_']['queryResult'], never>;\n\t\titerator: never;\n\t},\n\ttrue\n>;\n\nexport type MySqlUpdateDynamic<T extends AnyMySqlUpdateBase> = MySqlUpdate<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['preparedQueryHKT']\n>;\n\nexport type MySqlUpdate<\n\tTTable extends MySqlTable = MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT = AnyMySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n> = MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT, true, never>;\n\nexport type AnyMySqlUpdateBase = MySqlUpdateBase<any, any, any, any, any>;\n\nexport interface MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>>, SQLWrapper {\n\treadonly _: {\n\t\treadonly table: TTable;\n\t\treadonly queryResult: TQueryResult;\n\t\treadonly preparedQueryHKT: TPreparedQueryHKT;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t};\n}\n\nexport class MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> implements SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'MySqlUpdate';\n\n\tprivate config: MySqlUpdateConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList };\n\t}\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): MySqlUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\torderBy(\n\t\tbuilder: (updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>,\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (MySqlColumn | SQL | SQL.Aliased)[]): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>]\n\t\t\t| (MySqlColumn | SQL | SQL.Aliased)[]\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as any,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t} else {\n\t\t\tconst orderByArray = columns as (MySqlColumn | SQL | SQL.Aliased)[];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\tlimit(limit: number | Placeholder): MySqlUpdateWithout<this, TDynamic, 'limit'> {\n\t\tthis.config.limit = limit;\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\tprepare(): MySqlUpdatePrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t) as MySqlUpdatePrepare<this>;\n\t}\n\n\toverride execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this.prepare().execute(placeholderValues);\n\t};\n\n\tprivate createIterator = (): ReturnType<this['prepare']>['iterator'] => {\n\t\tconst self = this;\n\t\treturn async function*(placeholderValues) {\n\t\t\tyield* self.prepare().iterator(placeholderValues);\n\t\t};\n\t};\n\n\titerator = this.createIterator();\n\n\t$dynamic(): MySqlUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA2B;AAY3B,2BAA6B;AAC7B,6BAAsC;AAGtC,mBAAsB;AACtB,mBAAgE;AAuBzD,MAAM,mBAIX;AAAA,EAOD,YACS,OACA,SACA,SACA,UACP;AAJO;AACA;AACA;AACA;AAAA,EACN;AAAA,EAXH,QAAiB,wBAAU,IAAY;AAAA,EAavC,IAAI,QAAgG;AACnG,WAAO,IAAI,gBAAgB,KAAK,WAAO,2BAAa,KAAK,OAAO,MAAM,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ;AAAA,EACnH;AACD;AAwDO,MAAM,wBASH,kCAA8E;AAAA,EAKvF,YACC,OACA,KACQ,SACA,SACR,UACC;AACD,UAAM;AAJE;AACA;AAIR,SAAK,SAAS,EAAE,KAAK,OAAO,SAAS;AAAA,EACtC;AAAA,EAbA,QAA0B,wBAAU,IAAY;AAAA,EAExC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CR,MAAM,OAAqE;AAC1E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA,EAMA,WACI,SAG6C;AAChD,QAAI,OAAO,QAAQ,CAAC,MAAM,YAAY;AACrC,YAAM,UAAU,QAAQ,CAAC;AAAA,QACxB,IAAI;AAAA,UACH,KAAK,OAAO,MAAM,mBAAM,OAAO,OAAO;AAAA,UACtC,IAAI,6CAAsB,EAAE,oBAAoB,SAAS,aAAa,MAAM,CAAC;AAAA,QAC9E;AAAA,MACD;AAEA,YAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAChE,WAAK,OAAO,UAAU;AAAA,IACvB,OAAO;AACN,YAAM,eAAe;AACrB,WAAK,OAAO,UAAU;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,OAA0E;AAC/E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,SAAc;AACb,WAAO,KAAK,QAAQ,iBAAiB,KAAK,MAAM;AAAA,EACjD;AAAA,EAEA,QAAe;AACd,UAAM,EAAE,SAAS,UAAU,GAAG,KAAK,IAAI,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAC5E,WAAO;AAAA,EACR;AAAA,EAEA,UAAoC;AACnC,WAAO,KAAK,QAAQ;AAAA,MACnB,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,MACrC,KAAK,OAAO;AAAA,IACb;AAAA,EACD;AAAA,EAES,UAAkD,CAAC,sBAAsB;AACjF,WAAO,KAAK,QAAQ,EAAE,QAAQ,iBAAiB;AAAA,EAChD;AAAA,EAEQ,iBAAiB,MAA+C;AACvE,UAAM,OAAO;AACb,WAAO,iBAAgB,mBAAmB;AACzC,aAAO,KAAK,QAAQ,EAAE,SAAS,iBAAiB;AAAA,IACjD;AAAA,EACD;AAAA,EAEA,WAAW,KAAK,eAAe;AAAA,EAE/B,WAAqC;AACpC,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/mysql-core/query-builders/update.ts"],"sourcesContent":["import type { GetColumnData } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type {\n\tAnyMySqlQueryResultHKT,\n\tMySqlPreparedQueryConfig,\n\tMySqlQueryResultHKT,\n\tMySqlQueryResultKind,\n\tMySqlSession,\n\tPreparedQueryHKTBase,\n\tPreparedQueryKind,\n} from '~/mysql-core/session.ts';\nimport type { MySqlTable } from '~/mysql-core/table.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { Placeholder, Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { mapUpdateSet, type UpdateSet, type ValueOrArray } from '~/utils.ts';\nimport type { MySqlColumn } from '../columns/common.ts';\nimport type { SelectedFieldsOrdered } from './select.types.ts';\n\nexport interface MySqlUpdateConfig {\n\twhere?: SQL | undefined;\n\tlimit?: number | Placeholder;\n\torderBy?: (MySqlColumn | SQL | SQL.Aliased)[];\n\tset: UpdateSet;\n\ttable: MySqlTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type MySqlUpdateSetSource<TTable extends MySqlTable> =\n\t& {\n\t\t[Key in keyof TTable['$inferInsert']]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key], 'query'>\n\t\t\t| SQL\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport class MySqlUpdateBuilder<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tset(values: MySqlUpdateSetSource<TTable>): MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT> {\n\t\treturn new MySqlUpdateBase(\n\t\t\tthis.table,\n\t\t\tmapUpdateSet(this.table, values, this.session.extensions),\n\t\t\tthis.session,\n\t\t\tthis.dialect,\n\t\t\tthis.withList,\n\t\t);\n\t}\n}\n\nexport type MySqlUpdateWithout<\n\tT extends AnyMySqlUpdateBase,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tMySqlUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['preparedQueryHKT'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type MySqlUpdatePrepare<T extends AnyMySqlUpdateBase> = PreparedQueryKind<\n\tT['_']['preparedQueryHKT'],\n\tMySqlPreparedQueryConfig & {\n\t\texecute: MySqlQueryResultKind<T['_']['queryResult'], never>;\n\t\titerator: never;\n\t},\n\ttrue\n>;\n\nexport type MySqlUpdateDynamic<T extends AnyMySqlUpdateBase> = MySqlUpdate<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['preparedQueryHKT']\n>;\n\nexport type MySqlUpdate<\n\tTTable extends MySqlTable = MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT = AnyMySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n> = MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT, true, never>;\n\nexport type AnyMySqlUpdateBase = MySqlUpdateBase<any, any, any, any, any>;\n\nexport interface MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>>, SQLWrapper {\n\treadonly _: {\n\t\treadonly table: TTable;\n\t\treadonly queryResult: TQueryResult;\n\t\treadonly preparedQueryHKT: TPreparedQueryHKT;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t};\n}\n\nexport class MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> implements SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'MySqlUpdate';\n\n\tprivate config: MySqlUpdateConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList };\n\t}\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): MySqlUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\torderBy(\n\t\tbuilder: (updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>,\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (MySqlColumn | SQL | SQL.Aliased)[]): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>]\n\t\t\t| (MySqlColumn | SQL | SQL.Aliased)[]\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as any,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t} else {\n\t\t\tconst orderByArray = columns as (MySqlColumn | SQL | SQL.Aliased)[];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\tlimit(limit: number | Placeholder): MySqlUpdateWithout<this, TDynamic, 'limit'> {\n\t\tthis.config.limit = limit;\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config, this.session.extensions);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\tprepare(): MySqlUpdatePrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t\t{\n\t\t\t\tquery: 'update',\n\t\t\t\tconfig: this.config,\n\t\t\t\tdialect: this.dialect,\n\t\t\t\tsession: this.session,\n\t\t\t},\n\t\t) as MySqlUpdatePrepare<this>;\n\t}\n\n\toverride execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this.prepare().execute(placeholderValues);\n\t};\n\n\tprivate createIterator = (): ReturnType<this['prepare']>['iterator'] => {\n\t\tconst self = this;\n\t\treturn async function*(placeholderValues) {\n\t\t\tyield* self.prepare().iterator(placeholderValues);\n\t\t};\n\t};\n\n\titerator = this.createIterator();\n\n\t$dynamic(): MySqlUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA2B;AAY3B,2BAA6B;AAC7B,6BAAsC;AAGtC,mBAAsB;AACtB,mBAAgE;AAuBzD,MAAM,mBAIX;AAAA,EAOD,YACS,OACA,SACA,SACA,UACP;AAJO;AACA;AACA;AACA;AAAA,EACN;AAAA,EAXH,QAAiB,wBAAU,IAAY;AAAA,EAavC,IAAI,QAAgG;AACnG,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,UACL,2BAAa,KAAK,OAAO,QAAQ,KAAK,QAAQ,UAAU;AAAA,MACxD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAwDO,MAAM,wBASH,kCAA8E;AAAA,EAKvF,YACC,OACA,KACQ,SACA,SACR,UACC;AACD,UAAM;AAJE;AACA;AAIR,SAAK,SAAS,EAAE,KAAK,OAAO,SAAS;AAAA,EACtC;AAAA,EAbA,QAA0B,wBAAU,IAAY;AAAA,EAExC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CR,MAAM,OAAqE;AAC1E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA,EAMA,WACI,SAG6C;AAChD,QAAI,OAAO,QAAQ,CAAC,MAAM,YAAY;AACrC,YAAM,UAAU,QAAQ,CAAC;AAAA,QACxB,IAAI;AAAA,UACH,KAAK,OAAO,MAAM,mBAAM,OAAO,OAAO;AAAA,UACtC,IAAI,6CAAsB,EAAE,oBAAoB,SAAS,aAAa,MAAM,CAAC;AAAA,QAC9E;AAAA,MACD;AAEA,YAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAChE,WAAK,OAAO,UAAU;AAAA,IACvB,OAAO;AACN,YAAM,eAAe;AACrB,WAAK,OAAO,UAAU;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,OAA0E;AAC/E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,SAAc;AACb,WAAO,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,KAAK,QAAQ,UAAU;AAAA,EAC1E;AAAA,EAEA,QAAe;AACd,UAAM,EAAE,SAAS,UAAU,GAAG,KAAK,IAAI,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAC5E,WAAO;AAAA,EACR;AAAA,EAEA,UAAoC;AACnC,WAAO,KAAK,QAAQ;AAAA,MACnB,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,MACrC,KAAK,OAAO;AAAA,MACZ;AAAA,QACC,OAAO;AAAA,QACP,QAAQ,KAAK;AAAA,QACb,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MACf;AAAA,IACD;AAAA,EACD;AAAA,EAES,UAAkD,CAAC,sBAAsB;AACjF,WAAO,KAAK,QAAQ,EAAE,QAAQ,iBAAiB;AAAA,EAChD;AAAA,EAEQ,iBAAiB,MAA+C;AACvE,UAAM,OAAO;AACb,WAAO,iBAAgB,mBAAmB;AACzC,aAAO,KAAK,QAAQ,EAAE,SAAS,iBAAiB;AAAA,IACjD;AAAA,EACD;AAAA,EAEA,WAAW,KAAK,eAAe;AAAA,EAE/B,WAAqC;AACpC,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
@@ -12,7 +12,13 @@ class MySqlUpdateBuilder {
|
|
|
12
12
|
}
|
|
13
13
|
static [entityKind] = "MySqlUpdateBuilder";
|
|
14
14
|
set(values) {
|
|
15
|
-
return new MySqlUpdateBase(
|
|
15
|
+
return new MySqlUpdateBase(
|
|
16
|
+
this.table,
|
|
17
|
+
mapUpdateSet(this.table, values, this.session.extensions),
|
|
18
|
+
this.session,
|
|
19
|
+
this.dialect,
|
|
20
|
+
this.withList
|
|
21
|
+
);
|
|
16
22
|
}
|
|
17
23
|
}
|
|
18
24
|
class MySqlUpdateBase extends QueryPromise {
|
|
@@ -83,7 +89,7 @@ class MySqlUpdateBase extends QueryPromise {
|
|
|
83
89
|
}
|
|
84
90
|
/** @internal */
|
|
85
91
|
getSQL() {
|
|
86
|
-
return this.dialect.buildUpdateQuery(this.config);
|
|
92
|
+
return this.dialect.buildUpdateQuery(this.config, this.session.extensions);
|
|
87
93
|
}
|
|
88
94
|
toSQL() {
|
|
89
95
|
const { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());
|
|
@@ -92,7 +98,13 @@ class MySqlUpdateBase extends QueryPromise {
|
|
|
92
98
|
prepare() {
|
|
93
99
|
return this.session.prepareQuery(
|
|
94
100
|
this.dialect.sqlToQuery(this.getSQL()),
|
|
95
|
-
this.config.returning
|
|
101
|
+
this.config.returning,
|
|
102
|
+
{
|
|
103
|
+
query: "update",
|
|
104
|
+
config: this.config,
|
|
105
|
+
dialect: this.dialect,
|
|
106
|
+
session: this.session
|
|
107
|
+
}
|
|
96
108
|
);
|
|
97
109
|
}
|
|
98
110
|
execute = (placeholderValues) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mysql-core/query-builders/update.ts"],"sourcesContent":["import type { GetColumnData } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type {\n\tAnyMySqlQueryResultHKT,\n\tMySqlPreparedQueryConfig,\n\tMySqlQueryResultHKT,\n\tMySqlQueryResultKind,\n\tMySqlSession,\n\tPreparedQueryHKTBase,\n\tPreparedQueryKind,\n} from '~/mysql-core/session.ts';\nimport type { MySqlTable } from '~/mysql-core/table.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { Placeholder, Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { mapUpdateSet, type UpdateSet, type ValueOrArray } from '~/utils.ts';\nimport type { MySqlColumn } from '../columns/common.ts';\nimport type { SelectedFieldsOrdered } from './select.types.ts';\n\nexport interface MySqlUpdateConfig {\n\twhere?: SQL | undefined;\n\tlimit?: number | Placeholder;\n\torderBy?: (MySqlColumn | SQL | SQL.Aliased)[];\n\tset: UpdateSet;\n\ttable: MySqlTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type MySqlUpdateSetSource<TTable extends MySqlTable> =\n\t& {\n\t\t[Key in keyof TTable['$inferInsert']]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key], 'query'>\n\t\t\t| SQL\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport class MySqlUpdateBuilder<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tset(values: MySqlUpdateSetSource<TTable>): MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT> {\n\t\treturn new MySqlUpdateBase(this.table, mapUpdateSet(this.table, values), this.session, this.dialect, this.withList);\n\t}\n}\n\nexport type MySqlUpdateWithout<\n\tT extends AnyMySqlUpdateBase,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tMySqlUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['preparedQueryHKT'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type MySqlUpdatePrepare<T extends AnyMySqlUpdateBase> = PreparedQueryKind<\n\tT['_']['preparedQueryHKT'],\n\tMySqlPreparedQueryConfig & {\n\t\texecute: MySqlQueryResultKind<T['_']['queryResult'], never>;\n\t\titerator: never;\n\t},\n\ttrue\n>;\n\nexport type MySqlUpdateDynamic<T extends AnyMySqlUpdateBase> = MySqlUpdate<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['preparedQueryHKT']\n>;\n\nexport type MySqlUpdate<\n\tTTable extends MySqlTable = MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT = AnyMySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n> = MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT, true, never>;\n\nexport type AnyMySqlUpdateBase = MySqlUpdateBase<any, any, any, any, any>;\n\nexport interface MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>>, SQLWrapper {\n\treadonly _: {\n\t\treadonly table: TTable;\n\t\treadonly queryResult: TQueryResult;\n\t\treadonly preparedQueryHKT: TPreparedQueryHKT;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t};\n}\n\nexport class MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> implements SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'MySqlUpdate';\n\n\tprivate config: MySqlUpdateConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList };\n\t}\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): MySqlUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\torderBy(\n\t\tbuilder: (updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>,\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (MySqlColumn | SQL | SQL.Aliased)[]): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>]\n\t\t\t| (MySqlColumn | SQL | SQL.Aliased)[]\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as any,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t} else {\n\t\t\tconst orderByArray = columns as (MySqlColumn | SQL | SQL.Aliased)[];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\tlimit(limit: number | Placeholder): MySqlUpdateWithout<this, TDynamic, 'limit'> {\n\t\tthis.config.limit = limit;\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\tprepare(): MySqlUpdatePrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t) as MySqlUpdatePrepare<this>;\n\t}\n\n\toverride execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this.prepare().execute(placeholderValues);\n\t};\n\n\tprivate createIterator = (): ReturnType<this['prepare']>['iterator'] => {\n\t\tconst self = this;\n\t\treturn async function*(placeholderValues) {\n\t\t\tyield* self.prepare().iterator(placeholderValues);\n\t\t};\n\t};\n\n\titerator = this.createIterator();\n\n\t$dynamic(): MySqlUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAY3B,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AAGtC,SAAS,aAAa;AACtB,SAAS,oBAAuD;AAuBzD,MAAM,mBAIX;AAAA,EAOD,YACS,OACA,SACA,SACA,UACP;AAJO;AACA;AACA;AACA;AAAA,EACN;AAAA,EAXH,QAAiB,UAAU,IAAY;AAAA,EAavC,IAAI,QAAgG;AACnG,WAAO,IAAI,gBAAgB,KAAK,OAAO,aAAa,KAAK,OAAO,MAAM,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ;AAAA,EACnH;AACD;AAwDO,MAAM,wBASH,aAA8E;AAAA,EAKvF,YACC,OACA,KACQ,SACA,SACR,UACC;AACD,UAAM;AAJE;AACA;AAIR,SAAK,SAAS,EAAE,KAAK,OAAO,SAAS;AAAA,EACtC;AAAA,EAbA,QAA0B,UAAU,IAAY;AAAA,EAExC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CR,MAAM,OAAqE;AAC1E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA,EAMA,WACI,SAG6C;AAChD,QAAI,OAAO,QAAQ,CAAC,MAAM,YAAY;AACrC,YAAM,UAAU,QAAQ,CAAC;AAAA,QACxB,IAAI;AAAA,UACH,KAAK,OAAO,MAAM,MAAM,OAAO,OAAO;AAAA,UACtC,IAAI,sBAAsB,EAAE,oBAAoB,SAAS,aAAa,MAAM,CAAC;AAAA,QAC9E;AAAA,MACD;AAEA,YAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAChE,WAAK,OAAO,UAAU;AAAA,IACvB,OAAO;AACN,YAAM,eAAe;AACrB,WAAK,OAAO,UAAU;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,OAA0E;AAC/E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,SAAc;AACb,WAAO,KAAK,QAAQ,iBAAiB,KAAK,MAAM;AAAA,EACjD;AAAA,EAEA,QAAe;AACd,UAAM,EAAE,SAAS,UAAU,GAAG,KAAK,IAAI,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAC5E,WAAO;AAAA,EACR;AAAA,EAEA,UAAoC;AACnC,WAAO,KAAK,QAAQ;AAAA,MACnB,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,MACrC,KAAK,OAAO;AAAA,IACb;AAAA,EACD;AAAA,EAES,UAAkD,CAAC,sBAAsB;AACjF,WAAO,KAAK,QAAQ,EAAE,QAAQ,iBAAiB;AAAA,EAChD;AAAA,EAEQ,iBAAiB,MAA+C;AACvE,UAAM,OAAO;AACb,WAAO,iBAAgB,mBAAmB;AACzC,aAAO,KAAK,QAAQ,EAAE,SAAS,iBAAiB;AAAA,IACjD;AAAA,EACD;AAAA,EAEA,WAAW,KAAK,eAAe;AAAA,EAE/B,WAAqC;AACpC,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/mysql-core/query-builders/update.ts"],"sourcesContent":["import type { GetColumnData } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type {\n\tAnyMySqlQueryResultHKT,\n\tMySqlPreparedQueryConfig,\n\tMySqlQueryResultHKT,\n\tMySqlQueryResultKind,\n\tMySqlSession,\n\tPreparedQueryHKTBase,\n\tPreparedQueryKind,\n} from '~/mysql-core/session.ts';\nimport type { MySqlTable } from '~/mysql-core/table.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { Placeholder, Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { mapUpdateSet, type UpdateSet, type ValueOrArray } from '~/utils.ts';\nimport type { MySqlColumn } from '../columns/common.ts';\nimport type { SelectedFieldsOrdered } from './select.types.ts';\n\nexport interface MySqlUpdateConfig {\n\twhere?: SQL | undefined;\n\tlimit?: number | Placeholder;\n\torderBy?: (MySqlColumn | SQL | SQL.Aliased)[];\n\tset: UpdateSet;\n\ttable: MySqlTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type MySqlUpdateSetSource<TTable extends MySqlTable> =\n\t& {\n\t\t[Key in keyof TTable['$inferInsert']]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key], 'query'>\n\t\t\t| SQL\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport class MySqlUpdateBuilder<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate withList?: Subquery[],\n\t) {}\n\n\tset(values: MySqlUpdateSetSource<TTable>): MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT> {\n\t\treturn new MySqlUpdateBase(\n\t\t\tthis.table,\n\t\t\tmapUpdateSet(this.table, values, this.session.extensions),\n\t\t\tthis.session,\n\t\t\tthis.dialect,\n\t\t\tthis.withList,\n\t\t);\n\t}\n}\n\nexport type MySqlUpdateWithout<\n\tT extends AnyMySqlUpdateBase,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tMySqlUpdateBase<\n\t\tT['_']['table'],\n\t\tT['_']['queryResult'],\n\t\tT['_']['preparedQueryHKT'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type MySqlUpdatePrepare<T extends AnyMySqlUpdateBase> = PreparedQueryKind<\n\tT['_']['preparedQueryHKT'],\n\tMySqlPreparedQueryConfig & {\n\t\texecute: MySqlQueryResultKind<T['_']['queryResult'], never>;\n\t\titerator: never;\n\t},\n\ttrue\n>;\n\nexport type MySqlUpdateDynamic<T extends AnyMySqlUpdateBase> = MySqlUpdate<\n\tT['_']['table'],\n\tT['_']['queryResult'],\n\tT['_']['preparedQueryHKT']\n>;\n\nexport type MySqlUpdate<\n\tTTable extends MySqlTable = MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT = AnyMySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n> = MySqlUpdateBase<TTable, TQueryResult, TPreparedQueryHKT, true, never>;\n\nexport type AnyMySqlUpdateBase = MySqlUpdateBase<any, any, any, any, any>;\n\nexport interface MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>>, SQLWrapper {\n\treadonly _: {\n\t\treadonly table: TTable;\n\t\treadonly queryResult: TQueryResult;\n\t\treadonly preparedQueryHKT: TPreparedQueryHKT;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t};\n}\n\nexport class MySqlUpdateBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> implements SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'MySqlUpdate';\n\n\tprivate config: MySqlUpdateConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprivate session: MySqlSession,\n\t\tprivate dialect: MySqlDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tsuper();\n\t\tthis.config = { set, table, withList };\n\t}\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): MySqlUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\torderBy(\n\t\tbuilder: (updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>,\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (MySqlColumn | SQL | SQL.Aliased)[]): MySqlUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(updateTable: TTable) => ValueOrArray<MySqlColumn | SQL | SQL.Aliased>]\n\t\t\t| (MySqlColumn | SQL | SQL.Aliased)[]\n\t): MySqlUpdateWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as any,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t} else {\n\t\t\tconst orderByArray = columns as (MySqlColumn | SQL | SQL.Aliased)[];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\tlimit(limit: number | Placeholder): MySqlUpdateWithout<this, TDynamic, 'limit'> {\n\t\tthis.config.limit = limit;\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config, this.session.extensions);\n\t}\n\n\ttoSQL(): Query {\n\t\tconst { typings: _typings, ...rest } = this.dialect.sqlToQuery(this.getSQL());\n\t\treturn rest;\n\t}\n\n\tprepare(): MySqlUpdatePrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\tthis.config.returning,\n\t\t\t{\n\t\t\t\tquery: 'update',\n\t\t\t\tconfig: this.config,\n\t\t\t\tdialect: this.dialect,\n\t\t\t\tsession: this.session,\n\t\t\t},\n\t\t) as MySqlUpdatePrepare<this>;\n\t}\n\n\toverride execute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this.prepare().execute(placeholderValues);\n\t};\n\n\tprivate createIterator = (): ReturnType<this['prepare']>['iterator'] => {\n\t\tconst self = this;\n\t\treturn async function*(placeholderValues) {\n\t\t\tyield* self.prepare().iterator(placeholderValues);\n\t\t};\n\t};\n\n\titerator = this.createIterator();\n\n\t$dynamic(): MySqlUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAY3B,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AAGtC,SAAS,aAAa;AACtB,SAAS,oBAAuD;AAuBzD,MAAM,mBAIX;AAAA,EAOD,YACS,OACA,SACA,SACA,UACP;AAJO;AACA;AACA;AACA;AAAA,EACN;AAAA,EAXH,QAAiB,UAAU,IAAY;AAAA,EAavC,IAAI,QAAgG;AACnG,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,aAAa,KAAK,OAAO,QAAQ,KAAK,QAAQ,UAAU;AAAA,MACxD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAwDO,MAAM,wBASH,aAA8E;AAAA,EAKvF,YACC,OACA,KACQ,SACA,SACR,UACC;AACD,UAAM;AAJE;AACA;AAIR,SAAK,SAAS,EAAE,KAAK,OAAO,SAAS;AAAA,EACtC;AAAA,EAbA,QAA0B,UAAU,IAAY;AAAA,EAExC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CR,MAAM,OAAqE;AAC1E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA,EAMA,WACI,SAG6C;AAChD,QAAI,OAAO,QAAQ,CAAC,MAAM,YAAY;AACrC,YAAM,UAAU,QAAQ,CAAC;AAAA,QACxB,IAAI;AAAA,UACH,KAAK,OAAO,MAAM,MAAM,OAAO,OAAO;AAAA,UACtC,IAAI,sBAAsB,EAAE,oBAAoB,SAAS,aAAa,MAAM,CAAC;AAAA,QAC9E;AAAA,MACD;AAEA,YAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAChE,WAAK,OAAO,UAAU;AAAA,IACvB,OAAO;AACN,YAAM,eAAe;AACrB,WAAK,OAAO,UAAU;AAAA,IACvB;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,OAA0E;AAC/E,SAAK,OAAO,QAAQ;AACpB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,SAAc;AACb,WAAO,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,KAAK,QAAQ,UAAU;AAAA,EAC1E;AAAA,EAEA,QAAe;AACd,UAAM,EAAE,SAAS,UAAU,GAAG,KAAK,IAAI,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAC5E,WAAO;AAAA,EACR;AAAA,EAEA,UAAoC;AACnC,WAAO,KAAK,QAAQ;AAAA,MACnB,KAAK,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,MACrC,KAAK,OAAO;AAAA,MACZ;AAAA,QACC,OAAO;AAAA,QACP,QAAQ,KAAK;AAAA,QACb,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MACf;AAAA,IACD;AAAA,EACD;AAAA,EAES,UAAkD,CAAC,sBAAsB;AACjF,WAAO,KAAK,QAAQ,EAAE,QAAQ,iBAAiB;AAAA,EAChD;AAAA,EAEQ,iBAAiB,MAA+C;AACvE,UAAM,OAAO;AACb,WAAO,iBAAgB,mBAAmB;AACzC,aAAO,KAAK,QAAQ,EAAE,SAAS,iBAAiB;AAAA,IACjD;AAAA,EACD;AAAA,EAEA,WAAW,KAAK,eAAe;AAAA,EAE/B,WAAqC;AACpC,WAAO;AAAA,EACR;AACD;","names":[]}
|
package/mysql-core/session.cjs
CHANGED
|
@@ -28,13 +28,55 @@ var import_errors = require("../errors.cjs");
|
|
|
28
28
|
var import_sql = require("../sql/sql.cjs");
|
|
29
29
|
var import_db = require("./db.cjs");
|
|
30
30
|
class MySqlPreparedQuery {
|
|
31
|
+
constructor(queryString, params, extensions, hookContext) {
|
|
32
|
+
this.queryString = queryString;
|
|
33
|
+
this.params = params;
|
|
34
|
+
this.extensions = extensions;
|
|
35
|
+
this.hookContext = hookContext;
|
|
36
|
+
}
|
|
31
37
|
static [import_entity.entityKind] = "MySqlPreparedQuery";
|
|
32
38
|
/** @internal */
|
|
33
39
|
joinsNotNullableMap;
|
|
40
|
+
extensionMetas = [];
|
|
41
|
+
async execute(placeholderValues) {
|
|
42
|
+
const {
|
|
43
|
+
extensions,
|
|
44
|
+
hookContext,
|
|
45
|
+
queryString,
|
|
46
|
+
params,
|
|
47
|
+
extensionMetas
|
|
48
|
+
} = this;
|
|
49
|
+
if (!extensions?.length || !hookContext)
|
|
50
|
+
return await this._execute(placeholderValues);
|
|
51
|
+
for (const [i, extension] of extensions.entries()) {
|
|
52
|
+
const ext = extension;
|
|
53
|
+
const config = {
|
|
54
|
+
...hookContext,
|
|
55
|
+
stage: "before",
|
|
56
|
+
sql: queryString,
|
|
57
|
+
params,
|
|
58
|
+
placeholders: placeholderValues,
|
|
59
|
+
metadata: extensionMetas[i]
|
|
60
|
+
};
|
|
61
|
+
await ext.hook(config);
|
|
62
|
+
extensionMetas[i] = config.metadata;
|
|
63
|
+
}
|
|
64
|
+
const res = await this._execute(placeholderValues);
|
|
65
|
+
for (const [i, ext] of extensions.entries()) {
|
|
66
|
+
await ext.hook({
|
|
67
|
+
...hookContext,
|
|
68
|
+
metadata: extensionMetas[i],
|
|
69
|
+
stage: "after",
|
|
70
|
+
data: res
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return res;
|
|
74
|
+
}
|
|
34
75
|
}
|
|
35
76
|
class MySqlSession {
|
|
36
|
-
constructor(dialect) {
|
|
77
|
+
constructor(dialect, extensions) {
|
|
37
78
|
this.dialect = dialect;
|
|
79
|
+
this.extensions = extensions;
|
|
38
80
|
}
|
|
39
81
|
static [import_entity.entityKind] = "MySqlSession";
|
|
40
82
|
execute(query) {
|
|
@@ -68,8 +110,8 @@ class MySqlSession {
|
|
|
68
110
|
}
|
|
69
111
|
}
|
|
70
112
|
class MySqlTransaction extends import_db.MySqlDatabase {
|
|
71
|
-
constructor(dialect, session, schema, nestedIndex, mode) {
|
|
72
|
-
super(dialect, session, schema, mode);
|
|
113
|
+
constructor(dialect, session, schema, nestedIndex, mode, extensions) {
|
|
114
|
+
super(dialect, session, schema, mode, extensions);
|
|
73
115
|
this.schema = schema;
|
|
74
116
|
this.nestedIndex = nestedIndex;
|
|
75
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mysql-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 { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\
|
|
1
|
+
{"version":3,"sources":["../../src/mysql-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type {\n\tBlankMySqlHookContext,\n\tDrizzleMySqlExtension,\n\tDrizzleMySqlHookContext,\n} from '~/extension-core/mysql/index.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 { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\tprivate extensionMetas: unknown[] = [];\n\n\tconstructor(\n\t\tprotected queryString: string,\n\t\tprotected params: unknown[],\n\t\tprotected extensions?: DrizzleMySqlExtension[],\n\t\tprotected hookContext?: BlankMySqlHookContext,\n\t) {}\n\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']> {\n\t\tconst {\n\t\t\textensions,\n\t\t\thookContext,\n\t\t\tqueryString,\n\t\t\tparams,\n\t\t\textensionMetas,\n\t\t} = this;\n\t\tif (!extensions?.length || !hookContext) return await this._execute(placeholderValues);\n\n\t\tfor (const [i, extension] of extensions.entries()) {\n\t\t\tconst ext = extension!;\n\t\t\tconst config = {\n\t\t\t\t...hookContext,\n\t\t\t\tstage: 'before',\n\t\t\t\tsql: queryString,\n\t\t\t\tparams: params,\n\t\t\t\tplaceholders: placeholderValues,\n\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t} as DrizzleMySqlHookContext;\n\n\t\t\tawait ext.hook(config);\n\t\t\textensionMetas[i] = config.metadata;\n\t\t}\n\n\t\tconst res = await this._execute(placeholderValues);\n\n\t\tfor (const [i, ext] of extensions.entries()) {\n\t\t\tawait ext.hook({\n\t\t\t\t...hookContext,\n\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t\tstage: 'after',\n\t\t\t\tdata: res as unknown[],\n\t\t\t});\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tprotected abstract _execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface MySqlTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n}\n\nexport abstract class MySqlSession<\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\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 = 'MySqlSession';\n\n\tconstructor(protected dialect: MySqlDialect, readonly extensions?: DrizzleMySqlExtension[]) {}\n\n\tabstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\thookContext?: BlankMySqlHookContext,\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<MySqlPreparedQueryConfig & { 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: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: MySqlTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: MySqlTransactionConfig): 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: MySqlTransactionConfig): 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 MySqlTransaction<\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tprotected schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t\tmode: Mode,\n\t\textensions?: DrizzleMySqlExtension[],\n\t) {\n\t\tsuper(dialect, session, schema, mode, extensions);\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: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {\n\ttype: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAAyC;AAOzC,iBAA0C;AAE1C,gBAA8B;AAuCvB,MAAe,mBAAuD;AAAA,EAO5E,YACW,aACA,QACA,YACA,aACT;AAJS;AACA;AACA;AACA;AAAA,EACR;AAAA,EAXH,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAGvC;AAAA,EACQ,iBAA4B,CAAC;AAAA,EASrC,MAAM,QAAQ,mBAAoE;AACjF,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAI,CAAC,YAAY,UAAU,CAAC;AAAa,aAAO,MAAM,KAAK,SAAS,iBAAiB;AAErF,eAAW,CAAC,GAAG,SAAS,KAAK,WAAW,QAAQ,GAAG;AAClD,YAAM,MAAM;AACZ,YAAM,SAAS;AAAA,QACd,GAAG;AAAA,QACH,OAAO;AAAA,QACP,KAAK;AAAA,QACL;AAAA,QACA,cAAc;AAAA,QACd,UAAU,eAAe,CAAC;AAAA,MAC3B;AAEA,YAAM,IAAI,KAAK,MAAM;AACrB,qBAAe,CAAC,IAAI,OAAO;AAAA,IAC5B;AAEA,UAAM,MAAM,MAAM,KAAK,SAAS,iBAAiB;AAEjD,eAAW,CAAC,GAAG,GAAG,KAAK,WAAW,QAAQ,GAAG;AAC5C,YAAM,IAAI,KAAK;AAAA,QACd,GAAG;AAAA,QACH,UAAU,eAAe,CAAC;AAAA,QAC1B,OAAO;AAAA,QACP,MAAM;AAAA,MACP,CAAC;AAAA,IACF;AAEA,WAAO;AAAA,EACR;AAKD;AAQO,MAAe,aAKpB;AAAA,EAGD,YAAsB,SAAgC,YAAsC;AAAtE;AAAgC;AAAA,EAAuC;AAAA,EAF7F,QAAiB,wBAAU,IAAY;AAAA,EAavC,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,QAAiD;AAC/E,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,gBAAgB;AAC1B,YAAM,KAAK,mBAAmB,OAAO,cAAc,EAAE;AAAA,IACtD;AAEA,WAAO,MAAM,SAAS,iCAAsB,eAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC1E;AAAA,EAEU,uBAAuB,QAAiD;AACjF,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,mCAAwB,eAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC5E;AACD;AAEO,MAAe,yBAKZ,wBAAqE;AAAA,EAG9E,YACC,SACA,SACU,QACS,aACnB,MACA,YACC;AACD,UAAM,SAAS,SAAS,QAAQ,MAAM,UAAU;AALtC;AACS;AAAA,EAKpB;AAAA,EAXA,QAA0B,wBAAU,IAAY;AAAA,EAahD,WAAkB;AACjB,UAAM,IAAI,uCAAyB;AAAA,EACpC;AAMD;","names":["sql"]}
|
package/mysql-core/session.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { entityKind } from "../entity.cjs";
|
|
2
|
+
import type { BlankMySqlHookContext, DrizzleMySqlExtension } from "../extension-core/mysql/index.cjs";
|
|
2
3
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
|
|
3
4
|
import { type Query, type SQL } from "../sql/sql.cjs";
|
|
4
5
|
import type { Assume, Equal } from "../utils.cjs";
|
|
@@ -32,8 +33,15 @@ export type PreparedQueryKind<TKind extends MySqlPreparedQueryHKT, TConfig exten
|
|
|
32
33
|
readonly config: TConfig;
|
|
33
34
|
})['type'];
|
|
34
35
|
export declare abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {
|
|
36
|
+
protected queryString: string;
|
|
37
|
+
protected params: unknown[];
|
|
38
|
+
protected extensions?: DrizzleMySqlExtension[] | undefined;
|
|
39
|
+
protected hookContext?: BlankMySqlHookContext | undefined;
|
|
35
40
|
static readonly [entityKind]: string;
|
|
36
|
-
|
|
41
|
+
private extensionMetas;
|
|
42
|
+
constructor(queryString: string, params: unknown[], extensions?: DrizzleMySqlExtension[] | undefined, hookContext?: BlankMySqlHookContext | undefined);
|
|
43
|
+
execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
44
|
+
protected abstract _execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
37
45
|
abstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
|
|
38
46
|
}
|
|
39
47
|
export interface MySqlTransactionConfig {
|
|
@@ -43,9 +51,10 @@ export interface MySqlTransactionConfig {
|
|
|
43
51
|
}
|
|
44
52
|
export declare abstract class MySqlSession<TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> {
|
|
45
53
|
protected dialect: MySqlDialect;
|
|
54
|
+
readonly extensions?: DrizzleMySqlExtension[] | undefined;
|
|
46
55
|
static readonly [entityKind]: string;
|
|
47
|
-
constructor(dialect: MySqlDialect);
|
|
48
|
-
abstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
|
|
56
|
+
constructor(dialect: MySqlDialect, extensions?: DrizzleMySqlExtension[] | undefined);
|
|
57
|
+
abstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, hookContext?: BlankMySqlHookContext, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
|
|
49
58
|
execute<T>(query: SQL): Promise<T>;
|
|
50
59
|
abstract all<T = unknown>(query: SQL): Promise<T[]>;
|
|
51
60
|
count(sql: SQL): Promise<number>;
|
|
@@ -57,7 +66,7 @@ export declare abstract class MySqlTransaction<TQueryResult extends MySqlQueryRe
|
|
|
57
66
|
protected schema: RelationalSchemaConfig<TSchema> | undefined;
|
|
58
67
|
protected readonly nestedIndex: number;
|
|
59
68
|
static readonly [entityKind]: string;
|
|
60
|
-
constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
|
|
69
|
+
constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode, extensions?: DrizzleMySqlExtension[]);
|
|
61
70
|
rollback(): never;
|
|
62
71
|
/** Nested transactions (aka savepoints) only work with InnoDB engine. */
|
|
63
72
|
abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
package/mysql-core/session.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { entityKind } from "../entity.js";
|
|
2
|
+
import type { BlankMySqlHookContext, DrizzleMySqlExtension } from "../extension-core/mysql/index.js";
|
|
2
3
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
|
|
3
4
|
import { type Query, type SQL } from "../sql/sql.js";
|
|
4
5
|
import type { Assume, Equal } from "../utils.js";
|
|
@@ -32,8 +33,15 @@ export type PreparedQueryKind<TKind extends MySqlPreparedQueryHKT, TConfig exten
|
|
|
32
33
|
readonly config: TConfig;
|
|
33
34
|
})['type'];
|
|
34
35
|
export declare abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {
|
|
36
|
+
protected queryString: string;
|
|
37
|
+
protected params: unknown[];
|
|
38
|
+
protected extensions?: DrizzleMySqlExtension[] | undefined;
|
|
39
|
+
protected hookContext?: BlankMySqlHookContext | undefined;
|
|
35
40
|
static readonly [entityKind]: string;
|
|
36
|
-
|
|
41
|
+
private extensionMetas;
|
|
42
|
+
constructor(queryString: string, params: unknown[], extensions?: DrizzleMySqlExtension[] | undefined, hookContext?: BlankMySqlHookContext | undefined);
|
|
43
|
+
execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
44
|
+
protected abstract _execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
|
|
37
45
|
abstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
|
|
38
46
|
}
|
|
39
47
|
export interface MySqlTransactionConfig {
|
|
@@ -43,9 +51,10 @@ export interface MySqlTransactionConfig {
|
|
|
43
51
|
}
|
|
44
52
|
export declare abstract class MySqlSession<TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> {
|
|
45
53
|
protected dialect: MySqlDialect;
|
|
54
|
+
readonly extensions?: DrizzleMySqlExtension[] | undefined;
|
|
46
55
|
static readonly [entityKind]: string;
|
|
47
|
-
constructor(dialect: MySqlDialect);
|
|
48
|
-
abstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
|
|
56
|
+
constructor(dialect: MySqlDialect, extensions?: DrizzleMySqlExtension[] | undefined);
|
|
57
|
+
abstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, hookContext?: BlankMySqlHookContext, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
|
|
49
58
|
execute<T>(query: SQL): Promise<T>;
|
|
50
59
|
abstract all<T = unknown>(query: SQL): Promise<T[]>;
|
|
51
60
|
count(sql: SQL): Promise<number>;
|
|
@@ -57,7 +66,7 @@ export declare abstract class MySqlTransaction<TQueryResult extends MySqlQueryRe
|
|
|
57
66
|
protected schema: RelationalSchemaConfig<TSchema> | undefined;
|
|
58
67
|
protected readonly nestedIndex: number;
|
|
59
68
|
static readonly [entityKind]: string;
|
|
60
|
-
constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
|
|
69
|
+
constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode, extensions?: DrizzleMySqlExtension[]);
|
|
61
70
|
rollback(): never;
|
|
62
71
|
/** Nested transactions (aka savepoints) only work with InnoDB engine. */
|
|
63
72
|
abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
package/mysql-core/session.js
CHANGED
|
@@ -3,13 +3,55 @@ import { TransactionRollbackError } from "../errors.js";
|
|
|
3
3
|
import { sql } from "../sql/sql.js";
|
|
4
4
|
import { MySqlDatabase } from "./db.js";
|
|
5
5
|
class MySqlPreparedQuery {
|
|
6
|
+
constructor(queryString, params, extensions, hookContext) {
|
|
7
|
+
this.queryString = queryString;
|
|
8
|
+
this.params = params;
|
|
9
|
+
this.extensions = extensions;
|
|
10
|
+
this.hookContext = hookContext;
|
|
11
|
+
}
|
|
6
12
|
static [entityKind] = "MySqlPreparedQuery";
|
|
7
13
|
/** @internal */
|
|
8
14
|
joinsNotNullableMap;
|
|
15
|
+
extensionMetas = [];
|
|
16
|
+
async execute(placeholderValues) {
|
|
17
|
+
const {
|
|
18
|
+
extensions,
|
|
19
|
+
hookContext,
|
|
20
|
+
queryString,
|
|
21
|
+
params,
|
|
22
|
+
extensionMetas
|
|
23
|
+
} = this;
|
|
24
|
+
if (!extensions?.length || !hookContext)
|
|
25
|
+
return await this._execute(placeholderValues);
|
|
26
|
+
for (const [i, extension] of extensions.entries()) {
|
|
27
|
+
const ext = extension;
|
|
28
|
+
const config = {
|
|
29
|
+
...hookContext,
|
|
30
|
+
stage: "before",
|
|
31
|
+
sql: queryString,
|
|
32
|
+
params,
|
|
33
|
+
placeholders: placeholderValues,
|
|
34
|
+
metadata: extensionMetas[i]
|
|
35
|
+
};
|
|
36
|
+
await ext.hook(config);
|
|
37
|
+
extensionMetas[i] = config.metadata;
|
|
38
|
+
}
|
|
39
|
+
const res = await this._execute(placeholderValues);
|
|
40
|
+
for (const [i, ext] of extensions.entries()) {
|
|
41
|
+
await ext.hook({
|
|
42
|
+
...hookContext,
|
|
43
|
+
metadata: extensionMetas[i],
|
|
44
|
+
stage: "after",
|
|
45
|
+
data: res
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return res;
|
|
49
|
+
}
|
|
9
50
|
}
|
|
10
51
|
class MySqlSession {
|
|
11
|
-
constructor(dialect) {
|
|
52
|
+
constructor(dialect, extensions) {
|
|
12
53
|
this.dialect = dialect;
|
|
54
|
+
this.extensions = extensions;
|
|
13
55
|
}
|
|
14
56
|
static [entityKind] = "MySqlSession";
|
|
15
57
|
execute(query) {
|
|
@@ -43,8 +85,8 @@ class MySqlSession {
|
|
|
43
85
|
}
|
|
44
86
|
}
|
|
45
87
|
class MySqlTransaction extends MySqlDatabase {
|
|
46
|
-
constructor(dialect, session, schema, nestedIndex, mode) {
|
|
47
|
-
super(dialect, session, schema, mode);
|
|
88
|
+
constructor(dialect, session, schema, nestedIndex, mode, extensions) {
|
|
89
|
+
super(dialect, session, schema, mode, extensions);
|
|
48
90
|
this.schema = schema;
|
|
49
91
|
this.nestedIndex = nestedIndex;
|
|
50
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mysql-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 { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\
|
|
1
|
+
{"version":3,"sources":["../../src/mysql-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type {\n\tBlankMySqlHookContext,\n\tDrizzleMySqlExtension,\n\tDrizzleMySqlHookContext,\n} from '~/extension-core/mysql/index.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 { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\tprivate extensionMetas: unknown[] = [];\n\n\tconstructor(\n\t\tprotected queryString: string,\n\t\tprotected params: unknown[],\n\t\tprotected extensions?: DrizzleMySqlExtension[],\n\t\tprotected hookContext?: BlankMySqlHookContext,\n\t) {}\n\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']> {\n\t\tconst {\n\t\t\textensions,\n\t\t\thookContext,\n\t\t\tqueryString,\n\t\t\tparams,\n\t\t\textensionMetas,\n\t\t} = this;\n\t\tif (!extensions?.length || !hookContext) return await this._execute(placeholderValues);\n\n\t\tfor (const [i, extension] of extensions.entries()) {\n\t\t\tconst ext = extension!;\n\t\t\tconst config = {\n\t\t\t\t...hookContext,\n\t\t\t\tstage: 'before',\n\t\t\t\tsql: queryString,\n\t\t\t\tparams: params,\n\t\t\t\tplaceholders: placeholderValues,\n\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t} as DrizzleMySqlHookContext;\n\n\t\t\tawait ext.hook(config);\n\t\t\textensionMetas[i] = config.metadata;\n\t\t}\n\n\t\tconst res = await this._execute(placeholderValues);\n\n\t\tfor (const [i, ext] of extensions.entries()) {\n\t\t\tawait ext.hook({\n\t\t\t\t...hookContext,\n\t\t\t\tmetadata: extensionMetas[i],\n\t\t\t\tstage: 'after',\n\t\t\t\tdata: res as unknown[],\n\t\t\t});\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tprotected abstract _execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface MySqlTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n}\n\nexport abstract class MySqlSession<\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\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 = 'MySqlSession';\n\n\tconstructor(protected dialect: MySqlDialect, readonly extensions?: DrizzleMySqlExtension[]) {}\n\n\tabstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\thookContext?: BlankMySqlHookContext,\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<MySqlPreparedQueryConfig & { 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: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: MySqlTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: MySqlTransactionConfig): 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: MySqlTransactionConfig): 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 MySqlTransaction<\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tprotected schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t\tmode: Mode,\n\t\textensions?: DrizzleMySqlExtension[],\n\t) {\n\t\tsuper(dialect, session, schema, mode, extensions);\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: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {\n\ttype: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AAOzC,SAA+B,WAAW;AAE1C,SAAS,qBAAqB;AAuCvB,MAAe,mBAAuD;AAAA,EAO5E,YACW,aACA,QACA,YACA,aACT;AAJS;AACA;AACA;AACA;AAAA,EACR;AAAA,EAXH,QAAiB,UAAU,IAAY;AAAA;AAAA,EAGvC;AAAA,EACQ,iBAA4B,CAAC;AAAA,EASrC,MAAM,QAAQ,mBAAoE;AACjF,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,QAAI,CAAC,YAAY,UAAU,CAAC;AAAa,aAAO,MAAM,KAAK,SAAS,iBAAiB;AAErF,eAAW,CAAC,GAAG,SAAS,KAAK,WAAW,QAAQ,GAAG;AAClD,YAAM,MAAM;AACZ,YAAM,SAAS;AAAA,QACd,GAAG;AAAA,QACH,OAAO;AAAA,QACP,KAAK;AAAA,QACL;AAAA,QACA,cAAc;AAAA,QACd,UAAU,eAAe,CAAC;AAAA,MAC3B;AAEA,YAAM,IAAI,KAAK,MAAM;AACrB,qBAAe,CAAC,IAAI,OAAO;AAAA,IAC5B;AAEA,UAAM,MAAM,MAAM,KAAK,SAAS,iBAAiB;AAEjD,eAAW,CAAC,GAAG,GAAG,KAAK,WAAW,QAAQ,GAAG;AAC5C,YAAM,IAAI,KAAK;AAAA,QACd,GAAG;AAAA,QACH,UAAU,eAAe,CAAC;AAAA,QAC1B,OAAO;AAAA,QACP,MAAM;AAAA,MACP,CAAC;AAAA,IACF;AAEA,WAAO;AAAA,EACR;AAKD;AAQO,MAAe,aAKpB;AAAA,EAGD,YAAsB,SAAgC,YAAsC;AAAtE;AAAgC;AAAA,EAAuC;AAAA,EAF7F,QAAiB,UAAU,IAAY;AAAA,EAavC,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,QAAiD;AAC/E,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,QAAiD;AACjF,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,yBAKZ,cAAqE;AAAA,EAG9E,YACC,SACA,SACU,QACS,aACnB,MACA,YACC;AACD,UAAM,SAAS,SAAS,QAAQ,MAAM,UAAU;AALtC;AACS;AAAA,EAKpB;AAAA,EAXA,QAA0B,UAAU,IAAY;AAAA,EAahD,WAAkB;AACjB,UAAM,IAAI,yBAAyB;AAAA,EACpC;AAMD;","names":["sql"]}
|
package/mysql-proxy/driver.cjs
CHANGED
|
@@ -51,8 +51,9 @@ function drizzle(callback, config = {}) {
|
|
|
51
51
|
tableNamesMap: tablesConfig.tableNamesMap
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
54
|
+
const extensions = config.extensions;
|
|
55
|
+
const session = new import_session.MySqlRemoteSession(callback, dialect, schema, { logger }, extensions);
|
|
56
|
+
return new MySqlRemoteDatabase(dialect, session, schema, "default", extensions);
|
|
56
57
|
}
|
|
57
58
|
// Annotate the CommonJS export names for ESM import in node:
|
|
58
59
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema> = {},\n): MySqlRemoteDatabase<TSchema> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new MySqlRemoteSession(callback, dialect, schema, { logger });\n\treturn new MySqlRemoteDatabase(dialect, session, schema as any, 'default') as MySqlRemoteDatabase
|
|
1
|
+
{"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { DrizzleMySqlExtension } from '~/extension-core/mysql/index.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema, DrizzleMySqlExtension> = {},\n): MySqlRemoteDatabase<TSchema> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst extensions = config.extensions;\n\tconst session = new MySqlRemoteSession(callback, dialect, schema, { logger }, extensions);\n\treturn new MySqlRemoteDatabase(dialect, session, schema as any, 'default', extensions) as MySqlRemoteDatabase<\n\t\tTSchema\n\t>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAC7B,uBAKO;AAEP,qBAAqG;AAE9F,MAAM,4BAEH,wBAA+E;AAAA,EACxF,QAA0B,wBAAU,IAAY;AACjD;AAQO,SAAS,QACf,UACA,SAAwD,CAAC,GAC1B;AAC/B,QAAM,UAAU,IAAI,4BAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,aAAa,OAAO;AAC1B,QAAM,UAAU,IAAI,kCAAmB,UAAU,SAAS,QAAQ,EAAE,OAAO,GAAG,UAAU;AACxF,SAAO,IAAI,oBAAoB,SAAS,SAAS,QAAe,WAAW,UAAU;AAGtF;","names":[]}
|
package/mysql-proxy/driver.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { entityKind } from "../entity.cjs";
|
|
2
|
+
import type { DrizzleMySqlExtension } from "../extension-core/mysql/index.cjs";
|
|
2
3
|
import { MySqlDatabase } from "../mysql-core/db.cjs";
|
|
3
4
|
import type { DrizzleConfig } from "../utils.cjs";
|
|
4
5
|
import { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT } from "./session.cjs";
|
|
@@ -10,4 +11,4 @@ export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execu
|
|
|
10
11
|
insertId?: number;
|
|
11
12
|
affectedRows?: number;
|
|
12
13
|
}>;
|
|
13
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>): MySqlRemoteDatabase<TSchema>;
|
|
14
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema, DrizzleMySqlExtension>): MySqlRemoteDatabase<TSchema>;
|
package/mysql-proxy/driver.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { entityKind } from "../entity.js";
|
|
2
|
+
import type { DrizzleMySqlExtension } from "../extension-core/mysql/index.js";
|
|
2
3
|
import { MySqlDatabase } from "../mysql-core/db.js";
|
|
3
4
|
import type { DrizzleConfig } from "../utils.js";
|
|
4
5
|
import { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT } from "./session.js";
|
|
@@ -10,4 +11,4 @@ export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execu
|
|
|
10
11
|
insertId?: number;
|
|
11
12
|
affectedRows?: number;
|
|
12
13
|
}>;
|
|
13
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>): MySqlRemoteDatabase<TSchema>;
|
|
14
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema, DrizzleMySqlExtension>): MySqlRemoteDatabase<TSchema>;
|
package/mysql-proxy/driver.js
CHANGED
|
@@ -30,8 +30,9 @@ function drizzle(callback, config = {}) {
|
|
|
30
30
|
tableNamesMap: tablesConfig.tableNamesMap
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
const
|
|
34
|
-
|
|
33
|
+
const extensions = config.extensions;
|
|
34
|
+
const session = new MySqlRemoteSession(callback, dialect, schema, { logger }, extensions);
|
|
35
|
+
return new MySqlRemoteDatabase(dialect, session, schema, "default", extensions);
|
|
35
36
|
}
|
|
36
37
|
export {
|
|
37
38
|
MySqlRemoteDatabase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema> = {},\n): MySqlRemoteDatabase<TSchema> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new MySqlRemoteSession(callback, dialect, schema, { logger });\n\treturn new MySqlRemoteDatabase(dialect, session, schema as any, 'default') as MySqlRemoteDatabase
|
|
1
|
+
{"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { DrizzleMySqlExtension } from '~/extension-core/mysql/index.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema, DrizzleMySqlExtension> = {},\n): MySqlRemoteDatabase<TSchema> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst extensions = config.extensions;\n\tconst session = new MySqlRemoteSession(callback, dialect, schema, { logger }, extensions);\n\treturn new MySqlRemoteDatabase(dialect, session, schema as any, 'default', extensions) as MySqlRemoteDatabase<\n\t\tTSchema\n\t>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAEP,SAA2E,0BAA0B;AAE9F,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAA0B,UAAU,IAAY;AACjD;AAQO,SAAS,QACf,UACA,SAAwD,CAAC,GAC1B;AAC/B,QAAM,UAAU,IAAI,aAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,aAAa,OAAO;AAC1B,QAAM,UAAU,IAAI,mBAAmB,UAAU,SAAS,QAAQ,EAAE,OAAO,GAAG,UAAU;AACxF,SAAO,IAAI,oBAAoB,SAAS,SAAS,QAAe,WAAW,UAAU;AAGtF;","names":[]}
|