@fragno-dev/db 0.1.8 → 0.1.9
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/.turbo/turbo-build.log +103 -101
- package/CHANGELOG.md +6 -0
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +1 -1
- package/dist/adapters/drizzle/drizzle-query.d.ts +5 -0
- package/dist/adapters/drizzle/drizzle-query.js +40 -16
- package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +12 -21
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +3 -3
- package/dist/adapters/drizzle/generate.d.ts +24 -0
- package/dist/adapters/drizzle/generate.d.ts.map +1 -0
- package/dist/adapters/drizzle/generate.js +34 -18
- package/dist/adapters/drizzle/generate.js.map +1 -1
- package/dist/adapters/drizzle/shared.js +13 -4
- package/dist/adapters/drizzle/shared.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/alias.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/alias.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/casing.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/casing.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column-builder.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column-builder.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/entity.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/entity.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/errors.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/errors.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/common.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/common.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/enum.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/enum.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/foreign-keys.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/unique-constraint.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/utils/array.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/utils/array.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-builders/query-builder.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-builders/query-builder.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-promise.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-promise.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/relations.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/relations.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/selection-proxy.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/selection-proxy.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/conditions.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/conditions.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/select.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/select.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/functions/aggregate.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/functions/aggregate.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/sql.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/sql.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/columns/common.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/columns/common.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/db.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/db.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/dialect.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/dialect.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/foreign-keys.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/foreign-keys.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/count.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/count.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/select.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/select.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/update.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/update.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/table.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/table.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/unique-constraint.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/unique-constraint.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/utils.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/utils.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/view-base.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/view-base.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/subquery.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/subquery.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.js.map +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/table.utils.js +6 -0
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.utils.js.map +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/tracing-utils.js +8 -0
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/tracing-utils.js.map +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/tracing.js +8 -0
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/tracing.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/utils.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/utils.js.map +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/view-common.js +1 -1
- package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/view-common.js.map +1 -1
- package/dist/query/unit-of-work.d.ts +6 -2
- package/dist/query/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work.js +19 -3
- package/dist/query/unit-of-work.js.map +1 -1
- package/package.json +8 -3
- package/src/adapters/drizzle/drizzle-adapter.test.ts +3 -3
- package/src/adapters/drizzle/drizzle-query.test.ts +449 -0
- package/src/adapters/drizzle/drizzle-query.ts +58 -21
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +97 -0
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +16 -7
- package/src/adapters/drizzle/generate.test.ts +168 -56
- package/src/adapters/drizzle/generate.ts +80 -21
- package/src/adapters/drizzle/shared.ts +14 -4
- package/src/adapters/drizzle/test-utils.ts +1 -0
- package/src/query/unit-of-work.ts +28 -0
- package/tsdown.config.ts +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/table.utils.js +0 -6
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing-utils.js +0 -8
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing.js +0 -8
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import { drizzle } from "drizzle-orm/pglite";
|
|
2
|
+
import { beforeAll, beforeEach, describe, expect, it } from "vitest";
|
|
3
|
+
import { column, idColumn, referenceColumn, schema } from "../../schema/create";
|
|
4
|
+
import type { DBType } from "./shared";
|
|
5
|
+
import { writeAndLoadSchema } from "./test-utils";
|
|
6
|
+
import { fromDrizzle } from "./drizzle-query";
|
|
7
|
+
import { createDrizzleConnectionPool } from "./drizzle-connection-pool";
|
|
8
|
+
import type { ConnectionPool } from "../../shared/connection-pool";
|
|
9
|
+
import type { DrizzleCompiledQuery } from "./drizzle-uow-compiler";
|
|
10
|
+
|
|
11
|
+
describe("drizzle-query", () => {
|
|
12
|
+
const authSchema = schema((s) => {
|
|
13
|
+
return s
|
|
14
|
+
.addTable("user", (t) => {
|
|
15
|
+
return t
|
|
16
|
+
.addColumn("id", idColumn())
|
|
17
|
+
.addColumn("email", column("string"))
|
|
18
|
+
.addColumn("passwordHash", column("string"))
|
|
19
|
+
.addColumn(
|
|
20
|
+
"createdAt",
|
|
21
|
+
column("timestamp").defaultTo$((b) => b.now()),
|
|
22
|
+
)
|
|
23
|
+
.createIndex("idx_user_email", ["email"]);
|
|
24
|
+
})
|
|
25
|
+
.addTable("session", (t) => {
|
|
26
|
+
return t
|
|
27
|
+
.addColumn("id", idColumn())
|
|
28
|
+
.addColumn("userId", referenceColumn())
|
|
29
|
+
.addColumn("expiresAt", column("timestamp"))
|
|
30
|
+
.addColumn(
|
|
31
|
+
"createdAt",
|
|
32
|
+
column("timestamp").defaultTo$((b) => b.now()),
|
|
33
|
+
)
|
|
34
|
+
.createIndex("idx_session_user", ["userId"]);
|
|
35
|
+
})
|
|
36
|
+
.addReference("sessionOwner", {
|
|
37
|
+
from: {
|
|
38
|
+
table: "session",
|
|
39
|
+
column: "userId",
|
|
40
|
+
},
|
|
41
|
+
to: {
|
|
42
|
+
table: "user",
|
|
43
|
+
column: "id",
|
|
44
|
+
},
|
|
45
|
+
type: "one",
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
let db: DBType;
|
|
50
|
+
let pool: ConnectionPool<DBType>;
|
|
51
|
+
let orm: ReturnType<typeof fromDrizzle<typeof authSchema>>;
|
|
52
|
+
|
|
53
|
+
const queries: DrizzleCompiledQuery[] = [];
|
|
54
|
+
|
|
55
|
+
beforeAll(async () => {
|
|
56
|
+
// Write schema to file and dynamically import it
|
|
57
|
+
const { schemaModule, cleanup, drizzleSchemaTs } = await writeAndLoadSchema(
|
|
58
|
+
"drizzle-query",
|
|
59
|
+
authSchema,
|
|
60
|
+
"postgresql",
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
console.log(drizzleSchemaTs);
|
|
64
|
+
|
|
65
|
+
// Create Drizzle instance with PGLite (in-memory Postgres)
|
|
66
|
+
db = drizzle({
|
|
67
|
+
schema: schemaModule,
|
|
68
|
+
}) as unknown as DBType;
|
|
69
|
+
|
|
70
|
+
// Create connection pool and ORM instance
|
|
71
|
+
pool = createDrizzleConnectionPool(db);
|
|
72
|
+
orm = fromDrizzle(authSchema, pool, "postgresql", undefined, {
|
|
73
|
+
onQuery: (query) => {
|
|
74
|
+
queries.push(query);
|
|
75
|
+
},
|
|
76
|
+
dryRun: true,
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return async () => {
|
|
80
|
+
await cleanup();
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
beforeEach(() => {
|
|
85
|
+
queries.splice(0, queries.length);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe("findFirst", () => {
|
|
89
|
+
it("should find session with user join", async () => {
|
|
90
|
+
const someExternalId = "some-external-id";
|
|
91
|
+
|
|
92
|
+
// Find the session with user join
|
|
93
|
+
await orm.findFirst("session", (b) =>
|
|
94
|
+
b
|
|
95
|
+
.whereIndex("primary", (eb) => eb("id", "=", someExternalId))
|
|
96
|
+
.join((j) => j.sessionOwner((b) => b.select(["id", "email"]))),
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
const [query] = queries;
|
|
100
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
101
|
+
`"select "session"."id", "session"."userId", "session"."expiresAt", "session"."createdAt", "session"."_internalId", "session"."_version", "session_sessionOwner"."data" as "sessionOwner" from "session" "session" left join lateral (select json_build_array("session_sessionOwner"."id", "session_sessionOwner"."email", "session_sessionOwner"."_internalId", "session_sessionOwner"."_version") as "data" from (select * from "user" "session_sessionOwner" where "session_sessionOwner"."_internalId" = "session"."userId" limit $1) "session_sessionOwner") "session_sessionOwner" on true where "session"."id" = $2 limit $3"`,
|
|
102
|
+
);
|
|
103
|
+
expect(query.params).toEqual([1, someExternalId, 1]);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("should find session without join", async () => {
|
|
107
|
+
const someExternalId = "some-external-id";
|
|
108
|
+
|
|
109
|
+
await orm.findFirst("session", (b) =>
|
|
110
|
+
b.whereIndex("primary", (eb) => eb("id", "=", someExternalId)),
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
const [query] = queries;
|
|
114
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
115
|
+
`"select "id", "userId", "expiresAt", "createdAt", "_internalId", "_version" from "session" "session" where "session"."id" = $1 limit $2"`,
|
|
116
|
+
);
|
|
117
|
+
expect(query.params).toEqual([someExternalId, 1]);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it("should find user by email using custom index", async () => {
|
|
121
|
+
const email = "test@example.com";
|
|
122
|
+
|
|
123
|
+
await orm.findFirst("user", (b) =>
|
|
124
|
+
b.whereIndex("idx_user_email", (eb) => eb("email", "=", email)),
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
const [query] = queries;
|
|
128
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
129
|
+
`"select "id", "email", "passwordHash", "createdAt", "_internalId", "_version" from "user" "user" where "user"."email" = $1 limit $2"`,
|
|
130
|
+
);
|
|
131
|
+
expect(query.params).toEqual([email, 1]);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it("should find with select subset of columns", async () => {
|
|
135
|
+
const someExternalId = "some-external-id";
|
|
136
|
+
|
|
137
|
+
await orm.findFirst("user", (b) =>
|
|
138
|
+
b.whereIndex("primary", (eb) => eb("id", "=", someExternalId)).select(["id", "email"]),
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
const [query] = queries;
|
|
142
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
143
|
+
`"select "id", "email", "_internalId", "_version" from "user" "user" where "user"."id" = $1 limit $2"`,
|
|
144
|
+
);
|
|
145
|
+
expect(query.params).toEqual([someExternalId, 1]);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
describe("find", () => {
|
|
150
|
+
it("should find all sessions using primary index", async () => {
|
|
151
|
+
await orm.find("session", (b) => b.whereIndex("primary"));
|
|
152
|
+
|
|
153
|
+
const [query] = queries;
|
|
154
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
155
|
+
`"select "id", "userId", "expiresAt", "createdAt", "_internalId", "_version" from "session" "session""`,
|
|
156
|
+
);
|
|
157
|
+
expect(query.params).toEqual([]);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("should find sessions with user join", async () => {
|
|
161
|
+
await orm.find("session", (b) =>
|
|
162
|
+
b.whereIndex("primary").join((j) => j.sessionOwner((b) => b.select(["id", "email"]))),
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const [query] = queries;
|
|
166
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
167
|
+
`"select "session"."id", "session"."userId", "session"."expiresAt", "session"."createdAt", "session"."_internalId", "session"."_version", "session_sessionOwner"."data" as "sessionOwner" from "session" "session" left join lateral (select json_build_array("session_sessionOwner"."id", "session_sessionOwner"."email", "session_sessionOwner"."_internalId", "session_sessionOwner"."_version") as "data" from (select * from "user" "session_sessionOwner" where "session_sessionOwner"."_internalId" = "session"."userId" limit $1) "session_sessionOwner") "session_sessionOwner" on true"`,
|
|
168
|
+
);
|
|
169
|
+
expect(query.params).toEqual([1]);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
it("should find sessions with where clause using custom index", async () => {
|
|
173
|
+
const userId = "user-123";
|
|
174
|
+
|
|
175
|
+
await orm.find("session", (b) =>
|
|
176
|
+
b.whereIndex("idx_session_user", (eb) => eb("userId", "=", userId)),
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
const [query] = queries;
|
|
180
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
181
|
+
`"select "id", "userId", "expiresAt", "createdAt", "_internalId", "_version" from "session" "session" where "session"."userId" = $1"`,
|
|
182
|
+
);
|
|
183
|
+
expect(query.params).toEqual([userId]);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it("should find with pageSize", async () => {
|
|
187
|
+
await orm.find("user", (b) => b.whereIndex("primary").pageSize(10));
|
|
188
|
+
|
|
189
|
+
const [query] = queries;
|
|
190
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
191
|
+
`"select "id", "email", "passwordHash", "createdAt", "_internalId", "_version" from "user" "user" limit $1"`,
|
|
192
|
+
);
|
|
193
|
+
expect(query.params).toEqual([10]);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
it("should find with select subset", async () => {
|
|
197
|
+
await orm.find("user", (b) => b.whereIndex("primary").select(["id", "email"]));
|
|
198
|
+
|
|
199
|
+
const [query] = queries;
|
|
200
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
201
|
+
`"select "id", "email", "_internalId", "_version" from "user" "user""`,
|
|
202
|
+
);
|
|
203
|
+
expect(query.params).toEqual([]);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
describe("create", () => {
|
|
208
|
+
it("should create a new user", async () => {
|
|
209
|
+
const createdId = await orm.create("user", {
|
|
210
|
+
id: "user-123",
|
|
211
|
+
email: "test@example.com",
|
|
212
|
+
passwordHash: "hashed-password",
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Verify the operation succeeded by getting the created ID (FragnoId object)
|
|
216
|
+
expect(createdId).toBeDefined();
|
|
217
|
+
expect(typeof createdId).toBe("object");
|
|
218
|
+
|
|
219
|
+
// Verify the SQL query was captured
|
|
220
|
+
const [query] = queries;
|
|
221
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
222
|
+
`"insert into "user" ("id", "email", "passwordHash", "createdAt", "_internalId", "_version") values ($1, $2, $3, $4, default, default)"`,
|
|
223
|
+
);
|
|
224
|
+
expect(query.params[0]).toEqual("user-123");
|
|
225
|
+
expect(query.params[1]).toEqual("test@example.com");
|
|
226
|
+
expect(query.params[2]).toEqual("hashed-password");
|
|
227
|
+
expect(typeof query.params[3]).toBe("string"); // createdAt timestamp (serialized)
|
|
228
|
+
expect(query.params[3]).toMatch(/^\d{4}-\d{2}-\d{2}T/); // ISO format
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
it("should create a new session", async () => {
|
|
232
|
+
const expiresAt = new Date("2025-12-31T23:59:59Z");
|
|
233
|
+
|
|
234
|
+
const createdId = await orm.create("session", {
|
|
235
|
+
id: "session-456",
|
|
236
|
+
userId: "user-123",
|
|
237
|
+
expiresAt,
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// Verify the operation succeeded by getting the created ID (FragnoId object)
|
|
241
|
+
expect(createdId).toBeDefined();
|
|
242
|
+
expect(typeof createdId).toBe("object");
|
|
243
|
+
|
|
244
|
+
// Verify the SQL query was captured
|
|
245
|
+
const [query] = queries;
|
|
246
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
247
|
+
`"insert into "session" ("id", "userId", "expiresAt", "createdAt", "_internalId", "_version") values ($1, (select "_internalId" from "user" where "id" = $2 limit 1), $3, $4, default, default)"`,
|
|
248
|
+
);
|
|
249
|
+
expect(query.params[0]).toEqual("session-456");
|
|
250
|
+
expect(query.params[1]).toEqual("user-123"); // userId is resolved via subquery
|
|
251
|
+
expect(query.params[2]).toEqual(expiresAt.toISOString());
|
|
252
|
+
expect(typeof query.params[3]).toBe("string"); // createdAt timestamp (serialized)
|
|
253
|
+
expect(query.params[3]).toMatch(/^\d{4}-\d{2}-\d{2}T/); // ISO format
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
describe("createMany", () => {
|
|
258
|
+
it("should create multiple users", async () => {
|
|
259
|
+
const createdIds = await orm.createMany("user", [
|
|
260
|
+
{
|
|
261
|
+
id: "user-1",
|
|
262
|
+
email: "user1@example.com",
|
|
263
|
+
passwordHash: "hash1",
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
id: "user-2",
|
|
267
|
+
email: "user2@example.com",
|
|
268
|
+
passwordHash: "hash2",
|
|
269
|
+
},
|
|
270
|
+
]);
|
|
271
|
+
|
|
272
|
+
// Verify the operation succeeded by checking we got IDs back (FragnoId objects)
|
|
273
|
+
expect(createdIds).toHaveLength(2);
|
|
274
|
+
expect(typeof createdIds[0]).toBe("object");
|
|
275
|
+
expect(typeof createdIds[1]).toBe("object");
|
|
276
|
+
|
|
277
|
+
// Verify the SQL queries were captured
|
|
278
|
+
// createMany should generate one insert per record
|
|
279
|
+
expect(queries).toHaveLength(2);
|
|
280
|
+
|
|
281
|
+
// Check the first user insert
|
|
282
|
+
expect(queries[0].sql).toMatchInlineSnapshot(
|
|
283
|
+
`"insert into "user" ("id", "email", "passwordHash", "createdAt", "_internalId", "_version") values ($1, $2, $3, $4, default, default)"`,
|
|
284
|
+
);
|
|
285
|
+
expect(queries[0].params[0]).toEqual("user-1");
|
|
286
|
+
expect(queries[0].params[1]).toEqual("user1@example.com");
|
|
287
|
+
expect(queries[0].params[2]).toEqual("hash1");
|
|
288
|
+
|
|
289
|
+
// Check the second user insert
|
|
290
|
+
expect(queries[1].sql).toMatchInlineSnapshot(
|
|
291
|
+
`"insert into "user" ("id", "email", "passwordHash", "createdAt", "_internalId", "_version") values ($1, $2, $3, $4, default, default)"`,
|
|
292
|
+
);
|
|
293
|
+
expect(queries[1].params[0]).toEqual("user-2");
|
|
294
|
+
expect(queries[1].params[1]).toEqual("user2@example.com");
|
|
295
|
+
expect(queries[1].params[2]).toEqual("hash2");
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
describe("update", () => {
|
|
300
|
+
it("should update user by id", async () => {
|
|
301
|
+
const userId = "user-123";
|
|
302
|
+
|
|
303
|
+
await orm.update("user", userId, (b) =>
|
|
304
|
+
b.set({
|
|
305
|
+
email: "newemail@example.com",
|
|
306
|
+
}),
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
// Verify the SQL query was captured
|
|
310
|
+
const [query] = queries;
|
|
311
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
312
|
+
`"update "user" set "email" = $1, "_version" = COALESCE(_version, 0) + 1 where "user"."id" = $2"`,
|
|
313
|
+
);
|
|
314
|
+
expect(query.params).toEqual(["newemail@example.com", userId]);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
it("should update session expiration", async () => {
|
|
318
|
+
const sessionId = "session-456";
|
|
319
|
+
const newExpiresAt = new Date("2026-01-01T00:00:00Z");
|
|
320
|
+
|
|
321
|
+
await orm.update("session", sessionId, (b) =>
|
|
322
|
+
b.set({
|
|
323
|
+
expiresAt: newExpiresAt,
|
|
324
|
+
}),
|
|
325
|
+
);
|
|
326
|
+
|
|
327
|
+
// Verify the SQL query was captured
|
|
328
|
+
const [query] = queries;
|
|
329
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
330
|
+
`"update "session" set "expiresAt" = $1, "_version" = COALESCE(_version, 0) + 1 where "session"."id" = $2"`,
|
|
331
|
+
);
|
|
332
|
+
expect(query.params).toEqual([newExpiresAt.toISOString(), sessionId]);
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
describe("updateMany", () => {
|
|
337
|
+
it("should update multiple users by index", async () => {
|
|
338
|
+
await orm.updateMany("user", (b) =>
|
|
339
|
+
b
|
|
340
|
+
.whereIndex("idx_user_email", (eb) => eb("email", "=", "old@example.com"))
|
|
341
|
+
.set({ email: "new@example.com" }),
|
|
342
|
+
);
|
|
343
|
+
|
|
344
|
+
// updateMany first finds matching records, then updates them
|
|
345
|
+
expect(queries.length).toBeGreaterThan(0);
|
|
346
|
+
|
|
347
|
+
// Verify the find query that's executed first
|
|
348
|
+
const findQuery = queries[0];
|
|
349
|
+
expect(findQuery.sql).toMatchInlineSnapshot(
|
|
350
|
+
`"select "id", "email", "passwordHash", "createdAt", "_internalId", "_version" from "user" "user" where "user"."email" = $1"`,
|
|
351
|
+
);
|
|
352
|
+
expect(findQuery.params).toEqual(["old@example.com"]);
|
|
353
|
+
|
|
354
|
+
// Note: In dryRun mode, no actual records are found, so no update queries are generated
|
|
355
|
+
// This is expected behavior - updateMany only generates update queries for found records
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
describe("delete", () => {
|
|
360
|
+
it("should delete user by id", async () => {
|
|
361
|
+
const userId = "user-123";
|
|
362
|
+
|
|
363
|
+
await orm.delete("user", userId);
|
|
364
|
+
|
|
365
|
+
// Verify the SQL query was captured
|
|
366
|
+
const [query] = queries;
|
|
367
|
+
expect(query.sql).toMatchInlineSnapshot(`"delete from "user" where "user"."id" = $1"`);
|
|
368
|
+
expect(query.params).toEqual([userId]);
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
it("should delete session by id", async () => {
|
|
372
|
+
const sessionId = "session-456";
|
|
373
|
+
|
|
374
|
+
await orm.delete("session", sessionId);
|
|
375
|
+
|
|
376
|
+
// Verify the SQL query was captured
|
|
377
|
+
const [query] = queries;
|
|
378
|
+
expect(query.sql).toMatchInlineSnapshot(`"delete from "session" where "session"."id" = $1"`);
|
|
379
|
+
expect(query.params).toEqual([sessionId]);
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
describe("deleteMany", () => {
|
|
384
|
+
it("should delete sessions by userId using index", async () => {
|
|
385
|
+
const userId = "user-123";
|
|
386
|
+
|
|
387
|
+
await orm.deleteMany("session", (b) =>
|
|
388
|
+
b.whereIndex("idx_session_user", (eb) => eb("userId", "=", userId)),
|
|
389
|
+
);
|
|
390
|
+
|
|
391
|
+
// deleteMany first finds matching records, then deletes them
|
|
392
|
+
expect(queries.length).toBeGreaterThan(0);
|
|
393
|
+
|
|
394
|
+
// Verify the find query that's executed first
|
|
395
|
+
const findQuery = queries[0];
|
|
396
|
+
expect(findQuery.sql).toMatchInlineSnapshot(
|
|
397
|
+
`"select "id", "userId", "expiresAt", "createdAt", "_internalId", "_version" from "session" "session" where "session"."userId" = $1"`,
|
|
398
|
+
);
|
|
399
|
+
expect(findQuery.params).toEqual([userId]);
|
|
400
|
+
|
|
401
|
+
// Note: In dryRun mode, no actual records are found, so no delete queries are generated
|
|
402
|
+
// This is expected behavior - deleteMany only generates delete queries for found records
|
|
403
|
+
});
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
describe("FragnoId support", () => {
|
|
407
|
+
it("should accept FragnoId in delete", async () => {
|
|
408
|
+
// Create a user first to get a FragnoId
|
|
409
|
+
const createdId = await orm.create("user", {
|
|
410
|
+
id: "fragno-user-123",
|
|
411
|
+
email: "fragno@example.com",
|
|
412
|
+
passwordHash: "hash",
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
// Clear queries from create
|
|
416
|
+
queries.splice(0, queries.length);
|
|
417
|
+
|
|
418
|
+
// Now delete using the FragnoId
|
|
419
|
+
await orm.delete("user", createdId);
|
|
420
|
+
|
|
421
|
+
// Verify the SQL query was captured with the external ID
|
|
422
|
+
const [query] = queries;
|
|
423
|
+
expect(query.sql).toMatchInlineSnapshot(`"delete from "user" where "user"."id" = $1"`);
|
|
424
|
+
expect(query.params).toEqual(["fragno-user-123"]);
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
it("should accept FragnoId in update", async () => {
|
|
428
|
+
// Create a user first to get a FragnoId
|
|
429
|
+
const createdId = await orm.create("user", {
|
|
430
|
+
id: "fragno-user-456",
|
|
431
|
+
email: "update@example.com",
|
|
432
|
+
passwordHash: "hash",
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
// Clear queries from create
|
|
436
|
+
queries.splice(0, queries.length);
|
|
437
|
+
|
|
438
|
+
// Now update using the FragnoId
|
|
439
|
+
await orm.update("user", createdId, (b) => b.set({ email: "updated@example.com" }));
|
|
440
|
+
|
|
441
|
+
// Verify the SQL query was captured with the external ID
|
|
442
|
+
const [query] = queries;
|
|
443
|
+
expect(query.sql).toMatchInlineSnapshot(
|
|
444
|
+
`"update "user" set "email" = $1, "_version" = COALESCE(_version, 0) + 1 where "user"."id" = $2"`,
|
|
445
|
+
);
|
|
446
|
+
expect(query.params).toEqual(["updated@example.com", "fragno-user-456"]);
|
|
447
|
+
});
|
|
448
|
+
});
|
|
449
|
+
});
|
|
@@ -17,6 +17,11 @@ export interface DrizzleUOWConfig {
|
|
|
17
17
|
* This callback is invoked for each query as it's compiled
|
|
18
18
|
*/
|
|
19
19
|
onQuery?: (query: DrizzleCompiledQuery) => void;
|
|
20
|
+
/**
|
|
21
|
+
* If true, the query will not be executed and the query will be returned. Not respected for UOWs
|
|
22
|
+
* since those have to be manually executed.
|
|
23
|
+
*/
|
|
24
|
+
dryRun?: boolean;
|
|
20
25
|
}
|
|
21
26
|
|
|
22
27
|
/**
|
|
@@ -45,18 +50,21 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
45
50
|
pool: ConnectionPool<DBType>,
|
|
46
51
|
provider: "sqlite" | "mysql" | "postgresql",
|
|
47
52
|
mapper?: TableNameMapper,
|
|
53
|
+
uowConfig?: DrizzleUOWConfig,
|
|
48
54
|
): AbstractQuery<T, DrizzleUOWConfig> {
|
|
49
|
-
function createUOW(name?: string
|
|
50
|
-
const uowCompiler = createDrizzleUOWCompiler(
|
|
51
|
-
schema,
|
|
52
|
-
pool,
|
|
53
|
-
provider,
|
|
54
|
-
mapper,
|
|
55
|
-
uowConfig?.onQuery,
|
|
56
|
-
);
|
|
55
|
+
function createUOW(opts: { name?: string; config?: DrizzleUOWConfig }) {
|
|
56
|
+
const uowCompiler = createDrizzleUOWCompiler(schema, pool, provider, mapper);
|
|
57
57
|
|
|
58
58
|
const executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult> = {
|
|
59
59
|
async executeRetrievalPhase(retrievalBatch: DrizzleCompiledQuery[]) {
|
|
60
|
+
// In dryRun mode, skip execution and return empty results
|
|
61
|
+
if (opts.config?.dryRun) {
|
|
62
|
+
return retrievalBatch.map(() => ({
|
|
63
|
+
rows: [],
|
|
64
|
+
affectedRows: 0,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
|
|
60
68
|
const conn = await pool.connect();
|
|
61
69
|
try {
|
|
62
70
|
const db = parseDrizzle(conn.db)[0];
|
|
@@ -66,6 +74,14 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
66
74
|
}
|
|
67
75
|
},
|
|
68
76
|
async executeMutationPhase(mutationBatch: CompiledMutation<DrizzleCompiledQuery>[]) {
|
|
77
|
+
// In dryRun mode, skip execution and return success with mock internal IDs
|
|
78
|
+
if (opts.config?.dryRun) {
|
|
79
|
+
return {
|
|
80
|
+
success: true,
|
|
81
|
+
createdInternalIds: mutationBatch.map(() => null),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
69
85
|
const conn = await pool.connect();
|
|
70
86
|
try {
|
|
71
87
|
const db = parseDrizzle(conn.db)[0];
|
|
@@ -78,18 +94,33 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
78
94
|
|
|
79
95
|
const decoder = createDrizzleUOWDecoder(schema, provider);
|
|
80
96
|
|
|
81
|
-
|
|
97
|
+
const { onQuery, ...restUowConfig } = opts.config ?? {};
|
|
98
|
+
|
|
99
|
+
return new UnitOfWork(schema, uowCompiler, executor, decoder, opts.name, {
|
|
100
|
+
...restUowConfig,
|
|
101
|
+
onQuery: (query) => {
|
|
102
|
+
// Handle both CompiledQuery and CompiledMutation structures
|
|
103
|
+
// Retrieval operations return DrizzleCompiledQuery directly: { sql, params }
|
|
104
|
+
// Mutation operations return CompiledMutation: { query: DrizzleCompiledQuery, expectedAffectedRows }
|
|
105
|
+
const actualQuery =
|
|
106
|
+
query && typeof query === "object" && "query" in query
|
|
107
|
+
? (query as CompiledMutation<DrizzleCompiledQuery>).query
|
|
108
|
+
: (query as DrizzleCompiledQuery);
|
|
109
|
+
|
|
110
|
+
opts.config?.onQuery?.(actualQuery);
|
|
111
|
+
},
|
|
112
|
+
});
|
|
82
113
|
}
|
|
83
114
|
|
|
84
115
|
return {
|
|
85
116
|
find(tableName, builderFn) {
|
|
86
|
-
const uow = createUOW();
|
|
117
|
+
const uow = createUOW({ config: uowConfig });
|
|
87
118
|
uow.find(tableName, builderFn);
|
|
88
119
|
return uow.executeRetrieve();
|
|
89
120
|
},
|
|
90
121
|
|
|
91
122
|
async findFirst(tableName, builderFn) {
|
|
92
|
-
const uow = createUOW();
|
|
123
|
+
const uow = createUOW({ config: uowConfig });
|
|
93
124
|
if (builderFn) {
|
|
94
125
|
uow.find(tableName, (b) => builderFn(b as never).pageSize(1));
|
|
95
126
|
} else {
|
|
@@ -101,7 +132,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
101
132
|
},
|
|
102
133
|
|
|
103
134
|
async create(tableName, values) {
|
|
104
|
-
const uow = createUOW();
|
|
135
|
+
const uow = createUOW({ config: uowConfig });
|
|
105
136
|
uow.create(tableName as string, values as never);
|
|
106
137
|
const { success } = await uow.executeMutations();
|
|
107
138
|
if (!success) {
|
|
@@ -117,7 +148,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
117
148
|
},
|
|
118
149
|
|
|
119
150
|
async createMany(tableName, valuesArray) {
|
|
120
|
-
const uow = createUOW();
|
|
151
|
+
const uow = createUOW({ config: uowConfig });
|
|
121
152
|
for (const values of valuesArray) {
|
|
122
153
|
uow.create(tableName as string, values as never);
|
|
123
154
|
}
|
|
@@ -130,7 +161,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
130
161
|
},
|
|
131
162
|
|
|
132
163
|
async update(tableName, id, builderFn) {
|
|
133
|
-
const uow = createUOW();
|
|
164
|
+
const uow = createUOW({ config: uowConfig });
|
|
134
165
|
uow.update(tableName as string, id, builderFn as never);
|
|
135
166
|
const { success } = await uow.executeMutations();
|
|
136
167
|
if (!success) {
|
|
@@ -164,7 +195,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
164
195
|
throw new Error("set() must be called in updateMany");
|
|
165
196
|
}
|
|
166
197
|
|
|
167
|
-
const findUow = createUOW();
|
|
198
|
+
const findUow = createUOW({ config: uowConfig });
|
|
168
199
|
findUow.find(tableName, (b) => {
|
|
169
200
|
if (whereConfig.condition) {
|
|
170
201
|
return b.whereIndex(whereConfig.indexName as never, whereConfig.condition as never);
|
|
@@ -179,7 +210,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
179
210
|
return;
|
|
180
211
|
}
|
|
181
212
|
|
|
182
|
-
const updateUow = createUOW();
|
|
213
|
+
const updateUow = createUOW({ config: uowConfig });
|
|
183
214
|
for (const record of records as never as Array<{ id: unknown }>) {
|
|
184
215
|
updateUow.update(tableName as string, record.id as string, (b) =>
|
|
185
216
|
b.set(setValues as never),
|
|
@@ -192,7 +223,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
192
223
|
},
|
|
193
224
|
|
|
194
225
|
async delete(tableName, id, builderFn) {
|
|
195
|
-
const uow = createUOW();
|
|
226
|
+
const uow = createUOW({ config: uowConfig });
|
|
196
227
|
uow.delete(tableName as string, id, builderFn as never);
|
|
197
228
|
const { success } = await uow.executeMutations();
|
|
198
229
|
if (!success) {
|
|
@@ -216,7 +247,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
216
247
|
throw new Error("whereIndex() must be called in deleteMany");
|
|
217
248
|
}
|
|
218
249
|
|
|
219
|
-
const findUow = createUOW();
|
|
250
|
+
const findUow = createUOW({ config: uowConfig });
|
|
220
251
|
findUow.find(tableName as string, (b) => {
|
|
221
252
|
if (whereConfig.condition) {
|
|
222
253
|
return b.whereIndex(whereConfig.indexName as never, whereConfig.condition as never);
|
|
@@ -231,7 +262,7 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
231
262
|
return;
|
|
232
263
|
}
|
|
233
264
|
|
|
234
|
-
const deleteUow = createUOW();
|
|
265
|
+
const deleteUow = createUOW({ config: uowConfig });
|
|
235
266
|
for (const record of records as never as Array<{ id: unknown }>) {
|
|
236
267
|
deleteUow.delete(tableName as string, record.id as string);
|
|
237
268
|
}
|
|
@@ -241,8 +272,14 @@ export function fromDrizzle<T extends AnySchema>(
|
|
|
241
272
|
}
|
|
242
273
|
},
|
|
243
274
|
|
|
244
|
-
createUnitOfWork(name,
|
|
245
|
-
return createUOW(
|
|
275
|
+
createUnitOfWork(name, nestedUowConfig) {
|
|
276
|
+
return createUOW({
|
|
277
|
+
name,
|
|
278
|
+
config: {
|
|
279
|
+
...uowConfig,
|
|
280
|
+
...nestedUowConfig,
|
|
281
|
+
},
|
|
282
|
+
});
|
|
246
283
|
},
|
|
247
284
|
} as AbstractQuery<T, DrizzleUOWConfig>;
|
|
248
285
|
}
|