@fragno-dev/db 0.1.14 → 0.2.0
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 +242 -139
- package/CHANGELOG.md +47 -0
- package/README.md +123 -8
- package/dist/adapters/adapters.d.ts +19 -5
- package/dist/adapters/adapters.d.ts.map +1 -1
- package/dist/adapters/adapters.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -19
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +7 -47
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/generate.d.ts +7 -1
- package/dist/adapters/drizzle/generate.d.ts.map +1 -1
- package/dist/adapters/drizzle/generate.js +46 -45
- package/dist/adapters/drizzle/generate.js.map +1 -1
- package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
- package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
- package/dist/adapters/generic-sql/driver-config.js +94 -0
- package/dist/adapters/generic-sql/driver-config.js.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
- package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
- package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
- package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
- package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
- package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
- package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
- package/dist/adapters/generic-sql/migration/executor.js +18 -0
- package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
- package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
- package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
- package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
- package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
- package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
- package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/select-builder.js +69 -0
- package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
- package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
- package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/where-builder.js +129 -0
- package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
- package/dist/adapters/generic-sql/result-interpreter.js +74 -0
- package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
- package/dist/adapters/generic-sql/uow-decoder.js +105 -0
- package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
- package/dist/adapters/generic-sql/uow-encoder.js +93 -0
- package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
- package/dist/adapters/kysely/kysely-adapter.d.ts +5 -16
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +6 -159
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +48 -62
- package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
- package/dist/adapters/{kysely/kysely-shared.d.ts → shared/table-name-mapper.d.ts} +3 -2
- package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
- package/dist/adapters/shared/table-name-mapper.js +43 -0
- package/dist/adapters/shared/table-name-mapper.js.map +1 -0
- package/dist/adapters/shared/uow-operation-compiler.js +105 -0
- package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
- package/dist/db-fragment-definition-builder.d.ts +186 -0
- package/dist/db-fragment-definition-builder.d.ts.map +1 -0
- package/dist/db-fragment-definition-builder.js +207 -0
- package/dist/db-fragment-definition-builder.js.map +1 -0
- package/dist/fragments/internal-fragment.d.ts +53 -0
- package/dist/fragments/internal-fragment.d.ts.map +1 -0
- package/dist/fragments/internal-fragment.js +111 -0
- package/dist/fragments/internal-fragment.js.map +1 -0
- package/dist/hooks/hooks.d.ts +51 -0
- package/dist/hooks/hooks.d.ts.map +1 -0
- package/dist/hooks/hooks.js +88 -0
- package/dist/hooks/hooks.js.map +1 -0
- package/dist/migration-engine/generation-engine.d.ts +0 -2
- package/dist/migration-engine/generation-engine.d.ts.map +1 -1
- package/dist/migration-engine/generation-engine.js +38 -56
- package/dist/migration-engine/generation-engine.js.map +1 -1
- package/dist/mod.d.ts +35 -23
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +48 -45
- package/dist/mod.js.map +1 -1
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +165 -0
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
- package/dist/packages/fragno/dist/api/bind-services.js +20 -0
- package/dist/packages/fragno/dist/api/bind-services.js.map +1 -0
- package/dist/packages/fragno/dist/api/error.js +48 -0
- package/dist/packages/fragno/dist/api/error.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js +320 -0
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js +525 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragno-response.js +73 -0
- package/dist/packages/fragno/dist/api/fragno-response.js.map +1 -0
- package/dist/packages/fragno/dist/api/internal/response-stream.js +81 -0
- package/dist/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
- package/dist/packages/fragno/dist/api/internal/route.js +10 -0
- package/dist/packages/fragno/dist/api/internal/route.js.map +1 -0
- package/dist/packages/fragno/dist/api/mutable-request-state.js +97 -0
- package/dist/packages/fragno/dist/api/mutable-request-state.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-context-storage.js +43 -0
- package/dist/packages/fragno/dist/api/request-context-storage.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-input-context.js +118 -0
- package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-middleware.js +83 -0
- package/dist/packages/fragno/dist/api/request-middleware.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-output-context.js +119 -0
- package/dist/packages/fragno/dist/api/request-output-context.js.map +1 -0
- package/dist/packages/fragno/dist/api/route.js +17 -0
- package/dist/packages/fragno/dist/api/route.js.map +1 -0
- package/dist/packages/fragno/dist/internal/symbols.js +10 -0
- package/dist/packages/fragno/dist/internal/symbols.js.map +1 -0
- package/dist/query/column-defaults.js +27 -0
- package/dist/query/column-defaults.js.map +1 -0
- package/dist/query/cursor.d.ts +14 -6
- package/dist/query/cursor.d.ts.map +1 -1
- package/dist/query/cursor.js +16 -7
- package/dist/query/cursor.js.map +1 -1
- package/dist/query/orm/orm.d.ts +1 -1
- package/dist/query/orm/orm.js.map +1 -1
- package/dist/query/serialize/create-sql-serializer.js +30 -0
- package/dist/query/serialize/create-sql-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
- package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
- package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
- package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
- package/dist/query/serialize/sql-serializer.js +67 -0
- package/dist/query/serialize/sql-serializer.js.map +1 -0
- package/dist/query/{query.d.ts → simple-query-interface.d.ts} +6 -6
- package/dist/query/simple-query-interface.d.ts.map +1 -0
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts +133 -0
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
- package/dist/query/unit-of-work/execute-unit-of-work.js +197 -0
- package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
- package/dist/query/unit-of-work/retry-policy.d.ts +88 -0
- package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
- package/dist/query/unit-of-work/retry-policy.js +61 -0
- package/dist/query/unit-of-work/retry-policy.js.map +1 -0
- package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +145 -58
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
- package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +435 -198
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
- package/dist/query/value-decoding.js +71 -0
- package/dist/query/value-decoding.js.map +1 -0
- package/dist/query/value-encoding.js +124 -0
- package/dist/query/value-encoding.js.map +1 -0
- package/dist/schema/create.d.ts +3 -0
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +4 -0
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
- package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
- package/dist/schema/type-conversion/dialect/mysql.js +57 -0
- package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
- package/dist/schema/type-conversion/dialect/postgres.js +56 -0
- package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
- package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
- package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
- package/dist/schema/type-conversion/type-mapping.js +63 -0
- package/dist/schema/type-conversion/type-mapping.js.map +1 -0
- package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
- package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
- package/dist/sql-driver/connection/connection-provider.js +19 -0
- package/dist/sql-driver/connection/connection-provider.js.map +1 -0
- package/dist/sql-driver/connection/single-connection-provider.js +23 -0
- package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
- package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
- package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
- package/dist/sql-driver/dialects/dialects.d.ts +2 -0
- package/dist/sql-driver/dialects/dialects.js +3 -0
- package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
- package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
- package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
- package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
- package/dist/sql-driver/driver/runtime-driver.js +56 -0
- package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
- package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
- package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
- package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
- package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
- package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
- package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
- package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
- package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
- package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver-adapter.js +68 -0
- package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
- package/dist/sql-driver/sql-driver.d.ts +38 -0
- package/dist/sql-driver/sql-driver.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver.js +1 -0
- package/dist/sql-driver/sql.js +50 -0
- package/dist/sql-driver/sql.js.map +1 -0
- package/dist/with-database.d.ts +32 -0
- package/dist/with-database.d.ts.map +1 -0
- package/dist/with-database.js +34 -0
- package/dist/with-database.js.map +1 -0
- package/package.json +43 -9
- package/src/adapters/adapters.ts +23 -4
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +140 -185
- package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +187 -55
- package/src/adapters/drizzle/drizzle-adapter.ts +14 -93
- package/src/adapters/drizzle/generate.test.ts +102 -269
- package/src/adapters/drizzle/generate.ts +89 -63
- package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
- package/src/adapters/drizzle/shared.ts +0 -34
- package/src/adapters/drizzle/test-utils.ts +36 -5
- package/src/adapters/generic-sql/README.md +14 -0
- package/src/adapters/generic-sql/driver-config.ts +144 -0
- package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
- package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
- package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
- package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
- package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
- package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
- package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
- package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
- package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
- package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
- package/src/adapters/generic-sql/migration/executor.ts +33 -0
- package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
- package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
- package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
- package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
- package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
- package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
- package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
- package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
- package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
- package/src/adapters/generic-sql/query/select-builder.ts +137 -0
- package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
- package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
- package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
- package/src/adapters/generic-sql/query/where-builder.ts +211 -0
- package/src/adapters/generic-sql/result-interpreter.ts +102 -0
- package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
- package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
- package/src/adapters/generic-sql/uow-decoder.ts +152 -0
- package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
- package/src/adapters/generic-sql/uow-encoder.ts +131 -0
- package/src/adapters/kysely/kysely-adapter-pglite.test.ts +90 -96
- package/src/adapters/kysely/kysely-adapter-sqlocal.test.ts +215 -0
- package/src/adapters/kysely/kysely-adapter.ts +10 -242
- package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +111 -106
- package/src/adapters/shared/table-name-mapper.ts +50 -0
- package/src/adapters/shared/uow-operation-compiler.ts +211 -0
- package/src/db-fragment-definition-builder.test.ts +887 -0
- package/src/db-fragment-definition-builder.ts +737 -0
- package/src/db-fragment-instantiator.test.ts +543 -0
- package/src/db-fragment-integration.test.ts +406 -0
- package/src/fragments/internal-fragment.test.ts +549 -0
- package/src/fragments/internal-fragment.ts +249 -0
- package/src/hooks/hooks.test.ts +575 -0
- package/src/hooks/hooks.ts +179 -0
- package/src/migration-engine/generation-engine.test.ts +60 -27
- package/src/migration-engine/generation-engine.ts +99 -92
- package/src/mod.ts +139 -78
- package/src/query/column-defaults.ts +49 -0
- package/src/query/cursor.test.ts +147 -3
- package/src/query/cursor.ts +25 -8
- package/src/query/orm/orm.ts +1 -1
- package/src/query/query-type.test.ts +9 -9
- package/src/query/serialize/create-sql-serializer.ts +34 -0
- package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
- package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
- package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
- package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
- package/src/query/serialize/sql-serializer.ts +143 -0
- package/src/query/{query.ts → simple-query-interface.ts} +4 -4
- package/src/query/unit-of-work/execute-unit-of-work.test.ts +1310 -0
- package/src/query/unit-of-work/execute-unit-of-work.ts +504 -0
- package/src/query/unit-of-work/retry-policy.test.ts +217 -0
- package/src/query/unit-of-work/retry-policy.ts +141 -0
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +831 -0
- package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +7 -5
- package/src/query/unit-of-work/unit-of-work.test.ts +1716 -0
- package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +716 -420
- package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -298
- package/src/query/value-decoding.ts +113 -0
- package/src/query/value-encoding.test.ts +390 -0
- package/src/query/value-encoding.ts +168 -0
- package/src/schema/create.test.ts +5 -1
- package/src/schema/create.ts +5 -0
- package/src/schema/serialize.test.ts +165 -407
- package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
- package/src/schema/type-conversion/dialect/mysql.ts +64 -0
- package/src/schema/type-conversion/dialect/postgres.ts +62 -0
- package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
- package/src/schema/type-conversion/type-mapping.test.ts +137 -0
- package/src/schema/type-conversion/type-mapping.ts +153 -0
- package/src/shared/connection-pool.ts +5 -5
- package/src/sql-driver/better-sqlite3.test.ts +126 -0
- package/src/sql-driver/connection/connection-provider.ts +27 -0
- package/src/sql-driver/connection/single-connection-provider.ts +42 -0
- package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
- package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
- package/src/sql-driver/dialects/dialects.ts +1 -0
- package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
- package/src/sql-driver/driver/runtime-driver.ts +91 -0
- package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
- package/src/sql-driver/query-executor/plugin.ts +22 -0
- package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
- package/src/sql-driver/query-executor/query-executor.ts +44 -0
- package/src/sql-driver/sql-driver-adapter.ts +96 -0
- package/src/sql-driver/sql-driver.ts +53 -0
- package/src/sql-driver/sql.ts +57 -0
- package/src/sql-driver/sqlocal.test.ts +117 -0
- package/src/with-database.ts +152 -0
- package/tsdown.config.ts +8 -2
- package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
- package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
- package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -315
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -116
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -149
- package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
- package/dist/adapters/drizzle/join-column-utils.js +0 -28
- package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
- package/dist/adapters/drizzle/shared.d.ts +0 -14
- package/dist/adapters/drizzle/shared.d.ts.map +0 -1
- package/dist/adapters/drizzle/shared.js +0 -35
- package/dist/adapters/drizzle/shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
- package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
- package/dist/adapters/kysely/kysely-query-builder.js +0 -321
- package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
- package/dist/adapters/kysely/kysely-query-compiler.js +0 -66
- package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-query.d.ts +0 -22
- package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-query.js +0 -223
- package/dist/adapters/kysely/kysely-query.js.map +0 -1
- package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-shared.js +0 -18
- package/dist/adapters/kysely/kysely-shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-compiler.js +0 -170
- package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-executor.js +0 -89
- package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-base.js +0 -128
- package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-factory.js +0 -34
- package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
- package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
- package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
- package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
- package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
- package/dist/adapters/kysely/migration/execute.js +0 -34
- package/dist/adapters/kysely/migration/execute.js.map +0 -1
- package/dist/bind-services.d.ts +0 -7
- package/dist/bind-services.d.ts.map +0 -1
- package/dist/bind-services.js +0 -14
- package/dist/bind-services.js.map +0 -1
- package/dist/fragment.d.ts +0 -173
- package/dist/fragment.d.ts.map +0 -1
- package/dist/fragment.js +0 -191
- package/dist/fragment.js.map +0 -1
- package/dist/migration-engine/create.d.ts +0 -37
- package/dist/migration-engine/create.d.ts.map +0 -1
- package/dist/migration-engine/create.js +0 -58
- package/dist/migration-engine/create.js.map +0 -1
- package/dist/migration-engine/shared.d.ts +0 -112
- package/dist/migration-engine/shared.d.ts.map +0 -1
- package/dist/query/query.d.ts.map +0 -1
- package/dist/query/result-transform.js +0 -168
- package/dist/query/result-transform.js.map +0 -1
- package/dist/query/unit-of-work.d.ts.map +0 -1
- package/dist/query/unit-of-work.js.map +0 -1
- package/dist/schema/serialize.js +0 -106
- package/dist/schema/serialize.js.map +0 -1
- package/dist/shared/settings-schema.js +0 -36
- package/dist/shared/settings-schema.js.map +0 -1
- package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -170
- package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
- package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1383
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -636
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -218
- package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -276
- package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
- package/src/adapters/drizzle/join-column-utils.ts +0 -39
- package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
- package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
- package/src/adapters/kysely/kysely-query-builder.ts +0 -666
- package/src/adapters/kysely/kysely-query-compiler.ts +0 -132
- package/src/adapters/kysely/kysely-query.test.ts +0 -498
- package/src/adapters/kysely/kysely-query.ts +0 -390
- package/src/adapters/kysely/kysely-shared.ts +0 -23
- package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -998
- package/src/adapters/kysely/kysely-uow-compiler.ts +0 -318
- package/src/adapters/kysely/kysely-uow-executor.ts +0 -145
- package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -811
- package/src/adapters/kysely/migration/execute-base.ts +0 -256
- package/src/adapters/kysely/migration/execute-factory.ts +0 -53
- package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
- package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
- package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
- package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
- package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
- package/src/adapters/kysely/migration/execute.ts +0 -50
- package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
- package/src/bind-services.test.ts +0 -214
- package/src/bind-services.ts +0 -37
- package/src/db-fragment.test.ts +0 -800
- package/src/fragment.ts +0 -727
- package/src/query/result-transform.ts +0 -271
- package/src/query/unit-of-work-multi-schema.test.ts +0 -64
- package/src/query/unit-of-work.test.ts +0 -943
- package/src/schema/serialize.ts +0 -396
- package/src/shared/settings-schema.ts +0 -61
- package/src/uow-context-integration.test.ts +0 -102
- package/src/uow-context.test.ts +0 -182
- /package/dist/query/{query.js → simple-query-interface.js} +0 -0
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
import type { AbstractQuery, TableToUpdateValues } from "../../query/query";
|
|
2
|
-
import type { AnySchema, AnyTable } from "../../schema/create";
|
|
3
|
-
import type {
|
|
4
|
-
CompiledMutation,
|
|
5
|
-
UOWDecoder,
|
|
6
|
-
UOWExecutor,
|
|
7
|
-
ValidIndexName,
|
|
8
|
-
} from "../../query/unit-of-work";
|
|
9
|
-
import { decodeResult } from "../../query/result-transform";
|
|
10
|
-
import { createKyselyUOWCompiler } from "./kysely-uow-compiler";
|
|
11
|
-
import { executeKyselyRetrievalPhase, executeKyselyMutationPhase } from "./kysely-uow-executor";
|
|
12
|
-
import { UnitOfWork } from "../../query/unit-of-work";
|
|
13
|
-
import type { CompiledQuery, Kysely } from "kysely";
|
|
14
|
-
import type { TableNameMapper } from "./kysely-shared";
|
|
15
|
-
import type { ConnectionPool } from "../../shared/connection-pool";
|
|
16
|
-
import type { SQLProvider } from "../../shared/providers";
|
|
17
|
-
import { createCursorFromRecord, Cursor, type CursorResult } from "../../query/cursor";
|
|
18
|
-
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
type KyselyAny = Kysely<any>;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Configuration options for creating a Kysely Unit of Work
|
|
24
|
-
*/
|
|
25
|
-
export interface KyselyUOWConfig {
|
|
26
|
-
/**
|
|
27
|
-
* Optional callback to receive compiled SQL queries for logging/debugging
|
|
28
|
-
* This callback is invoked for each query as it's compiled
|
|
29
|
-
*/
|
|
30
|
-
onQuery?: (query: CompiledQuery) => void;
|
|
31
|
-
/**
|
|
32
|
-
* If true, the query will not be executed and the query will be returned. Not respected for UOWs
|
|
33
|
-
* since those have to be manually executed.
|
|
34
|
-
*/
|
|
35
|
-
dryRun?: boolean;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Special builder for updateMany operations that captures configuration
|
|
40
|
-
*/
|
|
41
|
-
class UpdateManySpecialBuilder<TTable extends AnyTable> {
|
|
42
|
-
#indexName?: string;
|
|
43
|
-
#condition?: unknown;
|
|
44
|
-
#setValues?: TableToUpdateValues<TTable>;
|
|
45
|
-
|
|
46
|
-
whereIndex<TIndexName extends ValidIndexName<TTable>>(
|
|
47
|
-
indexName: TIndexName,
|
|
48
|
-
condition?: unknown,
|
|
49
|
-
): this {
|
|
50
|
-
this.#indexName = indexName as string;
|
|
51
|
-
this.#condition = condition;
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
set(values: TableToUpdateValues<TTable>): this {
|
|
56
|
-
this.#setValues = values;
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
getConfig() {
|
|
61
|
-
return {
|
|
62
|
-
indexName: this.#indexName,
|
|
63
|
-
condition: this.#condition,
|
|
64
|
-
setValues: this.#setValues,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Creates a Kysely-based query engine for the given schema.
|
|
71
|
-
*
|
|
72
|
-
* This is the main entry point for creating a database query interface using Kysely.
|
|
73
|
-
* It uses a compiler-based architecture where queries are compiled to SQL and then executed,
|
|
74
|
-
* enabling features like SQL snapshot testing.
|
|
75
|
-
*
|
|
76
|
-
* @param schema - The database schema definition
|
|
77
|
-
* @param pool - Connection pool for acquiring database connections
|
|
78
|
-
* @param provider - SQL provider (postgresql, mysql, sqlite, etc.)
|
|
79
|
-
* @param mapper - Optional table name mapper for namespace prefixing
|
|
80
|
-
* @param uowConfig - Optional UOW configuration
|
|
81
|
-
* @param schemaNamespaceMap - Optional WeakMap for schema-to-namespace lookups
|
|
82
|
-
* @returns An AbstractQuery instance for performing database operations
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* ```ts
|
|
86
|
-
* const pool = createSimpleConnectionPool(kysely);
|
|
87
|
-
* const queryEngine = fromKysely(mySchema, pool, 'postgresql');
|
|
88
|
-
*
|
|
89
|
-
* const users = await queryEngine.findMany('users', {
|
|
90
|
-
* where: (b) => b('age', '>', 18),
|
|
91
|
-
* orderBy: [['name', 'asc']]
|
|
92
|
-
* });
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
export function fromKysely<T extends AnySchema>(
|
|
96
|
-
schema: T,
|
|
97
|
-
pool: ConnectionPool<KyselyAny>,
|
|
98
|
-
provider: SQLProvider,
|
|
99
|
-
mapper?: TableNameMapper,
|
|
100
|
-
uowConfig?: KyselyUOWConfig,
|
|
101
|
-
schemaNamespaceMap?: WeakMap<AnySchema, string>,
|
|
102
|
-
): AbstractQuery<T, KyselyUOWConfig> {
|
|
103
|
-
function createUOW(opts: { name?: string; config?: KyselyUOWConfig }) {
|
|
104
|
-
const uowCompiler = createKyselyUOWCompiler(pool, provider, mapper);
|
|
105
|
-
|
|
106
|
-
const executor: UOWExecutor<CompiledQuery, unknown> = {
|
|
107
|
-
async executeRetrievalPhase(retrievalBatch: CompiledQuery[]) {
|
|
108
|
-
// In dryRun mode, skip execution and return empty results
|
|
109
|
-
if (opts.config?.dryRun) {
|
|
110
|
-
return retrievalBatch.map(() => []);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const conn = await pool.connect();
|
|
114
|
-
try {
|
|
115
|
-
return await executeKyselyRetrievalPhase(conn.db, retrievalBatch);
|
|
116
|
-
} finally {
|
|
117
|
-
await conn.release();
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
async executeMutationPhase(mutationBatch: CompiledMutation<CompiledQuery>[]) {
|
|
121
|
-
// In dryRun mode, skip execution and return success with mock internal IDs
|
|
122
|
-
if (opts.config?.dryRun) {
|
|
123
|
-
return {
|
|
124
|
-
success: true,
|
|
125
|
-
createdInternalIds: mutationBatch.map(() => null),
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const conn = await pool.connect();
|
|
130
|
-
try {
|
|
131
|
-
return await executeKyselyMutationPhase(conn.db, mutationBatch);
|
|
132
|
-
} finally {
|
|
133
|
-
await conn.release();
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
// Create a decoder function to transform raw results into application format
|
|
139
|
-
const decoder: UOWDecoder<unknown> = (rawResults, ops) => {
|
|
140
|
-
if (rawResults.length !== ops.length) {
|
|
141
|
-
throw new Error("rawResults and ops must have the same length");
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return rawResults.map((rows, index) => {
|
|
145
|
-
const op = ops[index];
|
|
146
|
-
if (!op) {
|
|
147
|
-
throw new Error("op must be defined");
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Handle count operations differently - return the count number directly
|
|
151
|
-
if (op.type === "count") {
|
|
152
|
-
const rowArray = rows as Record<string, unknown>[];
|
|
153
|
-
const firstRow = rowArray[0];
|
|
154
|
-
if (!firstRow) {
|
|
155
|
-
return 0;
|
|
156
|
-
}
|
|
157
|
-
const count = Number(firstRow["count"]);
|
|
158
|
-
if (Number.isNaN(count)) {
|
|
159
|
-
throw new Error(`Unexpected result for count, received: ${count}`);
|
|
160
|
-
}
|
|
161
|
-
return count;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Each result is an array of rows - decode each row
|
|
165
|
-
const rowArray = rows as Record<string, unknown>[];
|
|
166
|
-
const decodedRows = rowArray.map((row) => decodeResult(row, op.table, provider));
|
|
167
|
-
|
|
168
|
-
// If cursor generation is requested, wrap in CursorResult
|
|
169
|
-
if (op.withCursor) {
|
|
170
|
-
let cursor: Cursor | undefined;
|
|
171
|
-
|
|
172
|
-
// Generate cursor from last item if results exist
|
|
173
|
-
if (decodedRows.length > 0 && op.options.orderByIndex && op.options.pageSize) {
|
|
174
|
-
const lastItem = decodedRows[decodedRows.length - 1];
|
|
175
|
-
const indexName = op.options.orderByIndex.indexName;
|
|
176
|
-
|
|
177
|
-
// Get index columns
|
|
178
|
-
let indexColumns;
|
|
179
|
-
if (indexName === "_primary") {
|
|
180
|
-
indexColumns = [op.table.getIdColumn()];
|
|
181
|
-
} else {
|
|
182
|
-
const index = op.table.indexes[indexName];
|
|
183
|
-
if (index) {
|
|
184
|
-
indexColumns = index.columns;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
if (indexColumns && lastItem) {
|
|
189
|
-
cursor = createCursorFromRecord(lastItem as Record<string, unknown>, indexColumns, {
|
|
190
|
-
indexName: op.options.orderByIndex.indexName,
|
|
191
|
-
orderDirection: op.options.orderByIndex.direction,
|
|
192
|
-
pageSize: op.options.pageSize,
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const result: CursorResult<unknown> = {
|
|
198
|
-
items: decodedRows,
|
|
199
|
-
cursor,
|
|
200
|
-
};
|
|
201
|
-
return result;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
return decodedRows;
|
|
205
|
-
});
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
const { onQuery, ...restUowConfig } = opts.config ?? {};
|
|
209
|
-
|
|
210
|
-
return new UnitOfWork(
|
|
211
|
-
schema,
|
|
212
|
-
uowCompiler,
|
|
213
|
-
executor,
|
|
214
|
-
decoder,
|
|
215
|
-
opts.name,
|
|
216
|
-
{
|
|
217
|
-
...restUowConfig,
|
|
218
|
-
onQuery: (query) => {
|
|
219
|
-
// CompiledMutation has { query: CompiledQuery, expectedAffectedRows: number | null }
|
|
220
|
-
// CompiledQuery has { query: QueryAST, sql: string, parameters: unknown[] }
|
|
221
|
-
// Check for expectedAffectedRows to distinguish CompiledMutation from CompiledQuery
|
|
222
|
-
const actualQuery =
|
|
223
|
-
query && typeof query === "object" && "expectedAffectedRows" in query
|
|
224
|
-
? (query as CompiledMutation<CompiledQuery>).query
|
|
225
|
-
: (query as CompiledQuery);
|
|
226
|
-
|
|
227
|
-
opts.config?.onQuery?.(actualQuery);
|
|
228
|
-
},
|
|
229
|
-
},
|
|
230
|
-
schemaNamespaceMap,
|
|
231
|
-
);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return {
|
|
235
|
-
async find(tableName, builderFn) {
|
|
236
|
-
const uow = createUOW({ config: uowConfig });
|
|
237
|
-
// Safe: builderFn returns a FindBuilder (or void), which matches UnitOfWork signature
|
|
238
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
239
|
-
uow.find(tableName, builderFn as any);
|
|
240
|
-
// executeRetrieve returns an array of results (one per find operation)
|
|
241
|
-
// Since we only have one find, unwrap the first result
|
|
242
|
-
const [result]: unknown[][] = await uow.executeRetrieve();
|
|
243
|
-
return result ?? [];
|
|
244
|
-
},
|
|
245
|
-
|
|
246
|
-
async findWithCursor(tableName, builderFn) {
|
|
247
|
-
// Safe: builderFn returns a FindBuilder, which matches UnitOfWork signature
|
|
248
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
249
|
-
const uow = createUOW({ config: uowConfig }).findWithCursor(tableName, builderFn as any);
|
|
250
|
-
// executeRetrieve returns an array of results (one per find operation)
|
|
251
|
-
// Since we only have one findWithCursor, unwrap the first result
|
|
252
|
-
const [result] = await uow.executeRetrieve();
|
|
253
|
-
return result as CursorResult<unknown>;
|
|
254
|
-
},
|
|
255
|
-
|
|
256
|
-
async findFirst(tableName, builderFn) {
|
|
257
|
-
const uow = createUOW({ config: uowConfig });
|
|
258
|
-
if (builderFn) {
|
|
259
|
-
uow.find(tableName, (b) => {
|
|
260
|
-
builderFn(b);
|
|
261
|
-
return b.pageSize(1);
|
|
262
|
-
});
|
|
263
|
-
} else {
|
|
264
|
-
uow.find(tableName, (b) => b.whereIndex("primary").pageSize(1));
|
|
265
|
-
}
|
|
266
|
-
// executeRetrieve runs an array of `find` operation results, which each return an array of rows
|
|
267
|
-
const [result]: unknown[][] = await uow.executeRetrieve();
|
|
268
|
-
return result?.[0] ?? null;
|
|
269
|
-
},
|
|
270
|
-
|
|
271
|
-
async create(tableName, values) {
|
|
272
|
-
const uow = createUOW({ config: uowConfig });
|
|
273
|
-
uow.create(tableName, values);
|
|
274
|
-
const { success } = await uow.executeMutations();
|
|
275
|
-
if (!success) {
|
|
276
|
-
throw new Error("Failed to create record");
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
const createdIds = uow.getCreatedIds();
|
|
280
|
-
const createdId = createdIds[0];
|
|
281
|
-
if (!createdId) {
|
|
282
|
-
throw new Error("Failed to get created ID");
|
|
283
|
-
}
|
|
284
|
-
return createdId;
|
|
285
|
-
},
|
|
286
|
-
|
|
287
|
-
async createMany(tableName, valuesArray) {
|
|
288
|
-
const uow = createUOW({ config: uowConfig });
|
|
289
|
-
for (const values of valuesArray) {
|
|
290
|
-
uow.create(tableName, values);
|
|
291
|
-
}
|
|
292
|
-
const { success } = await uow.executeMutations();
|
|
293
|
-
if (!success) {
|
|
294
|
-
throw new Error("Failed to create records");
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
return uow.getCreatedIds();
|
|
298
|
-
},
|
|
299
|
-
|
|
300
|
-
async update(tableName, id, builderFn) {
|
|
301
|
-
const uow = createUOW({ config: uowConfig });
|
|
302
|
-
uow.update(tableName, id, builderFn);
|
|
303
|
-
const { success } = await uow.executeMutations();
|
|
304
|
-
if (!success) {
|
|
305
|
-
throw new Error("Failed to update record (version conflict or record not found)");
|
|
306
|
-
}
|
|
307
|
-
},
|
|
308
|
-
|
|
309
|
-
async updateMany(tableName, builderFn) {
|
|
310
|
-
const table = schema.tables[tableName];
|
|
311
|
-
if (!table) {
|
|
312
|
-
throw new Error(`Table ${tableName} not found in schema`);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
const specialBuilder = new UpdateManySpecialBuilder<typeof table>();
|
|
316
|
-
builderFn(specialBuilder);
|
|
317
|
-
|
|
318
|
-
const { indexName, condition, setValues } = specialBuilder.getConfig();
|
|
319
|
-
|
|
320
|
-
if (!indexName) {
|
|
321
|
-
throw new Error("whereIndex() must be called in updateMany");
|
|
322
|
-
}
|
|
323
|
-
if (!setValues) {
|
|
324
|
-
throw new Error("set() must be called in updateMany");
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
const findUow = createUOW({ config: uowConfig });
|
|
328
|
-
findUow.find(tableName, (b) => {
|
|
329
|
-
if (condition) {
|
|
330
|
-
// Safe: condition is captured from whereIndex call with proper typing
|
|
331
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
332
|
-
return b.whereIndex(indexName as ValidIndexName<typeof table>, condition as any);
|
|
333
|
-
}
|
|
334
|
-
return b.whereIndex(indexName as ValidIndexName<typeof table>);
|
|
335
|
-
});
|
|
336
|
-
const [records]: unknown[][] = await findUow.executeRetrieve();
|
|
337
|
-
|
|
338
|
-
if (!records || records.length === 0) {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
const updateUow = createUOW({ config: uowConfig });
|
|
343
|
-
for (const record of records as Array<{ id: unknown }>) {
|
|
344
|
-
updateUow.update(tableName, record.id as string, (b) => b.set(setValues));
|
|
345
|
-
}
|
|
346
|
-
const { success } = await updateUow.executeMutations();
|
|
347
|
-
if (!success) {
|
|
348
|
-
throw new Error("Failed to update records (version conflict)");
|
|
349
|
-
}
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
async delete(tableName, id, builderFn) {
|
|
353
|
-
const uow = createUOW({ config: uowConfig });
|
|
354
|
-
uow.delete(tableName, id, builderFn);
|
|
355
|
-
const { success } = await uow.executeMutations();
|
|
356
|
-
if (!success) {
|
|
357
|
-
throw new Error("Failed to delete record (version conflict or record not found)");
|
|
358
|
-
}
|
|
359
|
-
},
|
|
360
|
-
|
|
361
|
-
async deleteMany(tableName, builderFn) {
|
|
362
|
-
const findUow = createUOW({ config: uowConfig });
|
|
363
|
-
findUow.find(tableName, builderFn);
|
|
364
|
-
const [records]: unknown[][] = await findUow.executeRetrieve();
|
|
365
|
-
|
|
366
|
-
if (!records || records.length === 0) {
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
const deleteUow = createUOW({ config: uowConfig });
|
|
371
|
-
for (const record of records as Array<{ id: unknown }>) {
|
|
372
|
-
deleteUow.delete(tableName, record.id as string);
|
|
373
|
-
}
|
|
374
|
-
const { success } = await deleteUow.executeMutations();
|
|
375
|
-
if (!success) {
|
|
376
|
-
throw new Error("Failed to delete records (version conflict)");
|
|
377
|
-
}
|
|
378
|
-
},
|
|
379
|
-
|
|
380
|
-
createUnitOfWork(name, nestedUowConfig) {
|
|
381
|
-
return createUOW({
|
|
382
|
-
name,
|
|
383
|
-
config: {
|
|
384
|
-
...uowConfig,
|
|
385
|
-
...nestedUowConfig,
|
|
386
|
-
},
|
|
387
|
-
});
|
|
388
|
-
},
|
|
389
|
-
} as AbstractQuery<T, KyselyUOWConfig>;
|
|
390
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Maps logical table names (used by fragment authors) to physical table names (with namespace suffix)
|
|
3
|
-
*/
|
|
4
|
-
export interface TableNameMapper {
|
|
5
|
-
toPhysical(logicalName: string): string;
|
|
6
|
-
toLogical(physicalName: string): string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Creates a table name mapper for a given namespace.
|
|
11
|
-
* Physical names have format: {logicalName}_{namespace}
|
|
12
|
-
*/
|
|
13
|
-
export function createTableNameMapper(namespace: string): TableNameMapper {
|
|
14
|
-
return {
|
|
15
|
-
toPhysical: (logicalName: string) => `${logicalName}_${namespace}`,
|
|
16
|
-
toLogical: (physicalName: string) => {
|
|
17
|
-
if (physicalName.endsWith(`_${namespace}`)) {
|
|
18
|
-
return physicalName.slice(0, -(namespace.length + 1));
|
|
19
|
-
}
|
|
20
|
-
return physicalName;
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|