@fragno-dev/db 0.1.15 → 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 -179
- package/CHANGELOG.md +23 -0
- package/README.md +123 -8
- package/dist/adapters/adapters.d.ts +5 -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 -21
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +7 -54
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/generate.d.ts +3 -0
- package/dist/adapters/drizzle/generate.d.ts.map +1 -1
- package/dist/adapters/drizzle/generate.js +36 -28
- 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 -18
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +6 -165
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +47 -61
- package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
- package/dist/adapters/{drizzle/shared.d.ts → shared/table-name-mapper.d.ts} +2 -4
- 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 +53 -19
- package/dist/db-fragment-definition-builder.d.ts.map +1 -1
- package/dist/db-fragment-definition-builder.js +89 -19
- package/dist/db-fragment-definition-builder.js.map +1 -1
- package/dist/fragments/internal-fragment.d.ts +39 -5
- package/dist/fragments/internal-fragment.d.ts.map +1 -1
- package/dist/fragments/internal-fragment.js +82 -10
- package/dist/fragments/internal-fragment.js.map +1 -1
- 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 +23 -61
- package/dist/migration-engine/generation-engine.js.map +1 -1
- package/dist/mod.d.ts +34 -10
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +47 -16
- package/dist/mod.js.map +1 -1
- package/dist/node_modules/.pnpm/{rou3@0.7.8 → rou3@0.7.10}/node_modules/rou3/dist/index.js +1 -1
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js +69 -31
- package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
- package/dist/query/column-defaults.js +27 -0
- package/dist/query/column-defaults.js.map +1 -0
- package/dist/query/cursor.d.ts +4 -4
- package/dist/query/cursor.d.ts.map +1 -1
- package/dist/query/cursor.js +8 -6
- 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} +5 -5
- package/dist/query/simple-query-interface.d.ts.map +1 -0
- package/dist/query/{execute-unit-of-work.d.ts → unit-of-work/execute-unit-of-work.d.ts} +13 -3
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
- package/dist/query/{execute-unit-of-work.js → unit-of-work/execute-unit-of-work.js} +17 -4
- package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
- package/dist/query/{retry-policy.d.ts → unit-of-work/retry-policy.d.ts} +1 -1
- package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
- package/dist/query/{retry-policy.js → unit-of-work/retry-policy.js} +1 -1
- 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} +51 -18
- 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} +58 -11
- 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 +6 -2
- package/dist/with-database.d.ts.map +1 -1
- package/dist/with-database.js +1 -1
- package/dist/with-database.js.map +1 -1
- package/package.json +37 -10
- package/src/adapters/adapters.ts +8 -5
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +60 -169
- package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +31 -55
- package/src/adapters/drizzle/drizzle-adapter.ts +15 -107
- package/src/adapters/drizzle/generate.test.ts +2 -2
- package/src/adapters/drizzle/generate.ts +78 -34
- 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 +3 -3
- 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 +26 -76
- package/src/adapters/kysely/{kysely-adapter-sqlite.test.ts → kysely-adapter-sqlocal.test.ts} +76 -17
- package/src/adapters/kysely/kysely-adapter.ts +10 -250
- package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +110 -104
- 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 +2 -2
- package/src/db-fragment-definition-builder.ts +281 -50
- package/src/db-fragment-instantiator.test.ts +78 -2
- package/src/db-fragment-integration.test.ts +14 -16
- package/src/fragments/internal-fragment.test.ts +434 -45
- package/src/fragments/internal-fragment.ts +184 -20
- package/src/hooks/hooks.test.ts +575 -0
- package/src/hooks/hooks.ts +179 -0
- package/src/migration-engine/generation-engine.test.ts +44 -54
- package/src/migration-engine/generation-engine.ts +48 -94
- package/src/mod.ts +117 -29
- package/src/query/column-defaults.ts +49 -0
- package/src/query/cursor.test.ts +31 -6
- package/src/query/cursor.ts +11 -7
- 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} +2 -2
- package/src/query/{execute-unit-of-work.test.ts → unit-of-work/execute-unit-of-work.test.ts} +16 -16
- package/src/query/{execute-unit-of-work.ts → unit-of-work/execute-unit-of-work.ts} +49 -8
- package/src/query/{unit-of-work-coordinator.test.ts → unit-of-work/unit-of-work-coordinator.test.ts} +41 -43
- package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +5 -3
- package/src/query/{unit-of-work.test.ts → unit-of-work/unit-of-work.test.ts} +100 -9
- package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +135 -32
- package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -427
- 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 +35 -23
- package/tsdown.config.ts +7 -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 -334
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -123
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -160
- 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.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 -67
- package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-query.d.ts +0 -23
- package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-query.js +0 -230
- package/dist/adapters/kysely/kysely-query.js.map +0 -1
- package/dist/adapters/kysely/kysely-shared.d.ts +0 -14
- package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-shared.js +0 -33
- package/dist/adapters/kysely/kysely-shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-compiler.js +0 -193
- package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-executor.js +0 -93
- 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/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/node_modules/.pnpm/rou3@0.7.8/node_modules/rou3/dist/index.js.map +0 -1
- package/dist/query/execute-unit-of-work.d.ts.map +0 -1
- package/dist/query/execute-unit-of-work.js.map +0 -1
- package/dist/query/query.d.ts.map +0 -1
- package/dist/query/result-transform.js +0 -170
- package/dist/query/result-transform.js.map +0 -1
- package/dist/query/retry-policy.d.ts.map +0 -1
- package/dist/query/retry-policy.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 -111
- package/dist/schema/serialize.js.map +0 -1
- package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -122
- 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-mysql.test.ts +0 -1442
- package/src/adapters/drizzle/drizzle-uow-compiler-sqlite.test.ts +0 -1414
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1400
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -677
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -228
- package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -309
- 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 -127
- package/src/adapters/kysely/kysely-query.test.ts +0 -498
- package/src/adapters/kysely/kysely-query.ts +0 -399
- package/src/adapters/kysely/kysely-shared.ts +0 -57
- package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -986
- package/src/adapters/kysely/kysely-uow-compiler.ts +0 -350
- package/src/adapters/kysely/kysely-uow-executor.ts +0 -164
- package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -794
- 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/query/result-transform.ts +0 -274
- package/src/schema/serialize.ts +0 -407
- /package/dist/query/{query.js → simple-query-interface.js} +0 -0
- /package/src/query/{retry-policy.test.ts → unit-of-work/retry-policy.test.ts} +0 -0
- /package/src/query/{retry-policy.ts → unit-of-work/retry-policy.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-query-interface.d.ts","names":[],"sources":["../../src/query/simple-query-interface.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AnySchema, FragnoId } from "
|
|
2
|
-
import { IUnitOfWork, TypedUnitOfWork } from "./unit-of-work.js";
|
|
1
|
+
import { AnySchema, FragnoId } from "../../schema/create.js";
|
|
3
2
|
import { RetryPolicy } from "./retry-policy.js";
|
|
3
|
+
import { IUnitOfWork, TypedUnitOfWork } from "./unit-of-work.js";
|
|
4
4
|
|
|
5
|
-
//#region src/query/execute-unit-of-work.d.ts
|
|
5
|
+
//#region src/query/unit-of-work/execute-unit-of-work.d.ts
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Type utility that unwraps promises 1 level deep in objects, arrays, or direct promises
|
|
@@ -117,6 +117,16 @@ interface ExecuteRestrictedUnitOfWorkOptions {
|
|
|
117
117
|
* Abort signal to cancel execution
|
|
118
118
|
*/
|
|
119
119
|
signal?: AbortSignal;
|
|
120
|
+
/**
|
|
121
|
+
* Callback invoked before mutations are executed.
|
|
122
|
+
* Use this to add additional mutation operations (e.g., hook event records).
|
|
123
|
+
*/
|
|
124
|
+
onBeforeMutate?: (uow: IUnitOfWork) => void;
|
|
125
|
+
/**
|
|
126
|
+
* Callback invoked after successful mutation phase.
|
|
127
|
+
* Use this for post-mutation processing like hook execution.
|
|
128
|
+
*/
|
|
129
|
+
onSuccess?: (uow: IUnitOfWork) => Promise<void>;
|
|
120
130
|
}
|
|
121
131
|
//#endregion
|
|
122
132
|
export { AwaitedPromisesInObject, ExecuteRestrictedUnitOfWorkOptions, ExecuteUnitOfWorkCallbacks, ExecuteUnitOfWorkOptions, ExecuteUnitOfWorkResult, executeUnitOfWork };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-unit-of-work.d.ts","names":[],"sources":["../../../src/query/unit-of-work/execute-unit-of-work.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { ExponentialBackoffRetryPolicy, NoRetryPolicy } from "./retry-policy.js";
|
|
2
2
|
|
|
3
|
-
//#region src/query/execute-unit-of-work.ts
|
|
3
|
+
//#region src/query/unit-of-work/execute-unit-of-work.ts
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when a Unit of Work execution fails due to optimistic concurrency conflict.
|
|
6
|
+
* This error triggers automatic retry behavior in executeRestrictedUnitOfWork.
|
|
7
|
+
*/
|
|
8
|
+
var ConcurrencyConflictError = class extends Error {
|
|
9
|
+
constructor(message = "Optimistic concurrency conflict detected") {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "ConcurrencyConflictError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
4
14
|
/**
|
|
5
15
|
* Await promises in an object 1 level deep
|
|
6
16
|
*/
|
|
@@ -152,8 +162,8 @@ async function executeRestrictedUnitOfWork(callback, options) {
|
|
|
152
162
|
try {
|
|
153
163
|
const baseUow = options.createUnitOfWork();
|
|
154
164
|
return await awaitPromisesInObject(await callback({
|
|
155
|
-
forSchema: (schema) => {
|
|
156
|
-
return baseUow.forSchema(schema);
|
|
165
|
+
forSchema: (schema, hooks) => {
|
|
166
|
+
return baseUow.forSchema(schema, hooks);
|
|
157
167
|
},
|
|
158
168
|
executeRetrieve: async () => {
|
|
159
169
|
await baseUow.executeRetrieve();
|
|
@@ -161,13 +171,16 @@ async function executeRestrictedUnitOfWork(callback, options) {
|
|
|
161
171
|
executeMutate: async () => {
|
|
162
172
|
if (baseUow.state === "executed") return;
|
|
163
173
|
if (baseUow.state === "building-retrieval") await baseUow.executeRetrieve();
|
|
164
|
-
if (
|
|
174
|
+
if (options.onBeforeMutate) options.onBeforeMutate(baseUow);
|
|
175
|
+
if (!(await baseUow.executeMutations()).success) throw new ConcurrencyConflictError();
|
|
176
|
+
if (options.onSuccess) await options.onSuccess(baseUow);
|
|
165
177
|
},
|
|
166
178
|
nonce: baseUow.nonce,
|
|
167
179
|
currentAttempt: attempt
|
|
168
180
|
}));
|
|
169
181
|
} catch (error) {
|
|
170
182
|
if (signal?.aborted) throw new Error("Unit of Work execution aborted");
|
|
183
|
+
if (!(error instanceof ConcurrencyConflictError)) throw error;
|
|
171
184
|
if (!retryPolicy.shouldRetry(attempt, error, signal)) {
|
|
172
185
|
if (signal?.aborted) throw new Error("Unit of Work execution aborted");
|
|
173
186
|
throw new Error("Unit of Work execution failed: optimistic concurrency conflict", { cause: error });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-unit-of-work.js","names":["retrievalUow: TypedUnitOfWork<TSchema, TRetrievalResults, TRawInput>","mutationResult: TMutationResult"],"sources":["../../../src/query/unit-of-work/execute-unit-of-work.ts"],"sourcesContent":["import type { AnySchema } from \"../../schema/create\";\nimport type { TypedUnitOfWork, IUnitOfWork } from \"./unit-of-work\";\nimport type { HooksMap } from \"../../hooks/hooks\";\nimport { NoRetryPolicy, ExponentialBackoffRetryPolicy, type RetryPolicy } from \"./retry-policy\";\nimport type { FragnoId } from \"../../schema/create\";\n\n/**\n * Error thrown when a Unit of Work execution fails due to optimistic concurrency conflict.\n * This error triggers automatic retry behavior in executeRestrictedUnitOfWork.\n */\nexport class ConcurrencyConflictError extends Error {\n constructor(message = \"Optimistic concurrency conflict detected\") {\n super(message);\n this.name = \"ConcurrencyConflictError\";\n }\n}\n\n/**\n * Type utility that unwraps promises 1 level deep in objects, arrays, or direct promises\n * Handles tuples, arrays, objects, and direct promises\n */\nexport type AwaitedPromisesInObject<T> =\n // First check if it's a Promise\n T extends Promise<infer U>\n ? Awaited<U>\n : // Check for arrays with known length (tuples) - preserves tuple structure\n T extends readonly [unknown, ...unknown[]]\n ? { [K in keyof T]: AwaitedPromisesInObject<T[K]> }\n : T extends [unknown, ...unknown[]]\n ? { [K in keyof T]: AwaitedPromisesInObject<T[K]> }\n : // Check for regular arrays (unknown length)\n T extends (infer U)[]\n ? Awaited<U>[]\n : T extends readonly (infer U)[]\n ? readonly Awaited<U>[]\n : // Check for objects\n T extends Record<string, unknown>\n ? {\n [K in keyof T]: T[K] extends Promise<infer U> ? Awaited<U> : T[K];\n }\n : // Otherwise return as-is\n T;\n\n/**\n * Await promises in an object 1 level deep\n */\nasync function awaitPromisesInObject<T>(obj: T): Promise<AwaitedPromisesInObject<T>> {\n if (obj === null || obj === undefined) {\n return obj as AwaitedPromisesInObject<T>;\n }\n\n if (typeof obj !== \"object\") {\n return obj as AwaitedPromisesInObject<T>;\n }\n\n // Check if it's a Promise\n if (obj instanceof Promise) {\n return (await obj) as AwaitedPromisesInObject<T>;\n }\n\n // Check if it's an array\n if (Array.isArray(obj)) {\n const awaited = await Promise.all(\n obj.map((item) => (item instanceof Promise ? item : Promise.resolve(item))),\n );\n return awaited as AwaitedPromisesInObject<T>;\n }\n\n // It's a plain object - await promises in each property\n const result = {} as T;\n const entries = Object.entries(obj as Record<string, unknown>);\n const awaitedEntries = await Promise.all(\n entries.map(async ([key, value]) => {\n const awaitedValue = value instanceof Promise ? await value : value;\n return [key, awaitedValue] as const;\n }),\n );\n\n for (const [key, value] of awaitedEntries) {\n (result as Record<string, unknown>)[key] = value;\n }\n\n return result as AwaitedPromisesInObject<T>;\n}\n\n/**\n * Result of executing a Unit of Work with retry support\n * Promises in mutationResult are unwrapped 1 level deep\n */\nexport type ExecuteUnitOfWorkResult<TRetrievalResults, TMutationResult> =\n | {\n success: true;\n results: TRetrievalResults;\n mutationResult: AwaitedPromisesInObject<TMutationResult>;\n createdIds: FragnoId[];\n nonce: string;\n }\n | {\n success: false;\n reason: \"conflict\";\n }\n | {\n success: false;\n reason: \"aborted\";\n }\n | {\n success: false;\n reason: \"error\";\n error: unknown;\n };\n\n/**\n * Callbacks for executing a Unit of Work\n */\nexport interface ExecuteUnitOfWorkCallbacks<\n TSchema extends AnySchema,\n TRetrievalResults extends unknown[],\n TMutationResult,\n TRawInput,\n> {\n /**\n * Retrieval phase callback - adds retrieval operations to the UOW\n */\n retrieve?: (\n uow: TypedUnitOfWork<TSchema, [], TRawInput>,\n ) => TypedUnitOfWork<TSchema, TRetrievalResults, TRawInput>;\n\n /**\n * Mutation phase callback - receives UOW and retrieval results, adds mutation operations\n */\n mutate?: (\n uow: TypedUnitOfWork<TSchema, TRetrievalResults, TRawInput>,\n results: TRetrievalResults,\n ) => TMutationResult | Promise<TMutationResult>;\n\n /**\n * Success callback - invoked after successful execution\n * Promises in mutationResult are already unwrapped 1 level deep\n */\n onSuccess?: (result: {\n results: TRetrievalResults;\n mutationResult: AwaitedPromisesInObject<TMutationResult>;\n createdIds: FragnoId[];\n nonce: string;\n }) => void | Promise<void>;\n}\n\n/**\n * Options for executing a Unit of Work\n */\nexport interface ExecuteUnitOfWorkOptions<TSchema extends AnySchema, TRawInput> {\n /**\n * Factory function that creates or resets a UOW instance for each attempt\n */\n createUnitOfWork: () => TypedUnitOfWork<TSchema, [], TRawInput>;\n\n /**\n * Retry policy for handling optimistic concurrency conflicts\n */\n retryPolicy?: RetryPolicy;\n\n /**\n * Abort signal to cancel execution\n */\n signal?: AbortSignal;\n}\n\n/**\n * Create a bound version of executeUnitOfWork with a pre-configured UOW factory.\n * This is useful for handler contexts where the factory is already known.\n *\n * @param createUnitOfWork - Factory function that creates a fresh UOW instance\n * @returns A bound executeUnitOfWork function that doesn't require the factory parameter\n *\n * @example\n * ```ts\n * const boundExecute = createExecuteUnitOfWork(() => db.createUnitOfWork());\n * const result = await boundExecute({\n * retrieve: (uow) => uow.find(\"users\", (b) => b.whereIndex(\"primary\")),\n * mutate: (uow, [users]) => {\n * uow.update(\"users\", users[0].id, (b) => b.set({ balance: newBalance }));\n * }\n * });\n * ```\n */\nexport function createExecuteUnitOfWork<TSchema extends AnySchema, TRawInput>(\n createUnitOfWork: () => TypedUnitOfWork<TSchema, [], TRawInput>,\n) {\n return async function <TRetrievalResults extends unknown[], TMutationResult = void>(\n callbacks: ExecuteUnitOfWorkCallbacks<TSchema, TRetrievalResults, TMutationResult, TRawInput>,\n options?: Omit<ExecuteUnitOfWorkOptions<TSchema, TRawInput>, \"createUnitOfWork\">,\n ): Promise<ExecuteUnitOfWorkResult<TRetrievalResults, TMutationResult>> {\n return executeUnitOfWork(callbacks, { ...options, createUnitOfWork });\n };\n}\n\n/**\n * Execute a Unit of Work with automatic retry support for optimistic concurrency conflicts.\n *\n * This function orchestrates the two-phase execution (retrieval + mutation) with retry logic.\n * It creates fresh UOW instances for each attempt.\n *\n * @param callbacks - Object containing retrieve, mutate, and onSuccess callbacks\n * @param options - Configuration including UOW factory, retry policy, and abort signal\n * @returns Promise resolving to the execution result\n *\n * @example\n * ```ts\n * const result = await executeUnitOfWork(\n * {\n * retrieve: (uow) => uow.find(\"users\", (b) => b.whereIndex(\"primary\")),\n * mutate: (uow, [users]) => {\n * const user = users[0];\n * uow.update(\"users\", user.id, (b) => b.set({ balance: newBalance }));\n * },\n * onSuccess: async ({ results, mutationResult }) => {\n * console.log(\"Update successful!\");\n * }\n * },\n * {\n * createUnitOfWork: () => queryEngine.createUnitOfWork(),\n * retryPolicy: new ExponentialBackoffRetryPolicy({ maxRetries: 3 })\n * }\n * );\n * ```\n */\nexport async function executeUnitOfWork<\n TSchema extends AnySchema,\n TRetrievalResults extends unknown[],\n TMutationResult = void,\n TRawInput = unknown,\n>(\n callbacks: ExecuteUnitOfWorkCallbacks<TSchema, TRetrievalResults, TMutationResult, TRawInput>,\n options: ExecuteUnitOfWorkOptions<TSchema, TRawInput>,\n): Promise<ExecuteUnitOfWorkResult<TRetrievalResults, TMutationResult>> {\n // Validate that at least one of retrieve or mutate is provided\n if (!callbacks.retrieve && !callbacks.mutate) {\n throw new Error(\"At least one of 'retrieve' or 'mutate' callbacks must be provided\");\n }\n\n const retryPolicy = options.retryPolicy ?? new NoRetryPolicy();\n const signal = options.signal;\n let attempt = 0;\n\n while (true) {\n // Check if aborted before starting attempt\n if (signal?.aborted) {\n return { success: false, reason: \"aborted\" };\n }\n\n try {\n // Create a fresh UOW for this attempt\n const uow = options.createUnitOfWork();\n\n // Apply retrieval phase if provided\n let retrievalUow: TypedUnitOfWork<TSchema, TRetrievalResults, TRawInput>;\n if (callbacks.retrieve) {\n retrievalUow = callbacks.retrieve(uow);\n } else {\n // No retrieval phase, use empty UOW with type cast\n // This is safe because when there's no retrieve, TRetrievalResults should be []\n retrievalUow = uow as unknown as TypedUnitOfWork<TSchema, TRetrievalResults, TRawInput>;\n }\n\n // Execute retrieval phase\n const results = (await retrievalUow.executeRetrieve()) as TRetrievalResults;\n\n // Invoke mutation phase callback if provided\n let mutationResult: TMutationResult;\n if (callbacks.mutate) {\n mutationResult = await callbacks.mutate(retrievalUow, results);\n } else {\n mutationResult = undefined as TMutationResult;\n }\n\n // Execute mutation phase\n const { success } = await retrievalUow.executeMutations();\n\n if (success) {\n // Success! Get created IDs and nonce, then invoke onSuccess if provided\n const createdIds = retrievalUow.getCreatedIds();\n const nonce = retrievalUow.nonce;\n\n // Await promises in mutationResult (1 level deep)\n const awaitedMutationResult = await awaitPromisesInObject(mutationResult);\n\n if (callbacks.onSuccess) {\n await callbacks.onSuccess({\n results,\n mutationResult: awaitedMutationResult,\n createdIds,\n nonce,\n });\n }\n\n return {\n success: true,\n results,\n mutationResult: awaitedMutationResult,\n createdIds,\n nonce,\n };\n }\n\n // Failed - check if we should retry\n // attempt represents the number of attempts completed so far\n if (!retryPolicy.shouldRetry(attempt, undefined, signal)) {\n // No more retries\n return { success: false, reason: \"conflict\" };\n }\n\n // Wait before retrying\n const delayMs = retryPolicy.getDelayMs(attempt);\n if (delayMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n\n // Increment attempt counter for next iteration\n attempt++;\n } catch (error) {\n // An error was thrown during execution\n return { success: false, reason: \"error\", error };\n }\n }\n}\n\n/**\n * Options for executing a Unit of Work with restricted access\n */\nexport interface ExecuteRestrictedUnitOfWorkOptions {\n /**\n * Factory function that creates or resets a UOW instance for each attempt\n */\n createUnitOfWork: () => IUnitOfWork;\n\n /**\n * Retry policy for handling optimistic concurrency conflicts\n */\n retryPolicy?: RetryPolicy;\n\n /**\n * Abort signal to cancel execution\n */\n signal?: AbortSignal;\n\n /**\n * Callback invoked before mutations are executed.\n * Use this to add additional mutation operations (e.g., hook event records).\n */\n onBeforeMutate?: (uow: IUnitOfWork) => void;\n\n /**\n * Callback invoked after successful mutation phase.\n * Use this for post-mutation processing like hook execution.\n */\n onSuccess?: (uow: IUnitOfWork) => Promise<void>;\n}\n\n/**\n * Execute a Unit of Work with explicit phase control and automatic retry support.\n *\n * This function provides an alternative API where users write a single callback that receives\n * a context object with forSchema, executeRetrieve, and executeMutate methods. The user can\n * create schema-specific UOWs via forSchema, then call executeRetrieve() and executeMutate()\n * to execute the retrieval and mutation phases. The entire callback is re-executed on optimistic\n * concurrency conflicts, ensuring retries work properly.\n *\n * @param callback - Async function that receives a context with forSchema, executeRetrieve, executeMutate, nonce, and currentAttempt\n * @param options - Configuration including UOW factory, retry policy, and abort signal\n * @returns Promise resolving to the callback's return value\n * @throws Error if retries are exhausted or callback throws an error\n *\n * @example\n * ```ts\n * const { userId, profileId } = await executeRestrictedUnitOfWork(\n * async ({ forSchema, executeRetrieve, executeMutate, nonce, currentAttempt }) => {\n * const uow = forSchema(schema);\n * const userId = uow.create(\"users\", { name: \"John\" });\n *\n * // Execute retrieval phase\n * await executeRetrieve();\n *\n * const profileId = uow.create(\"profiles\", { userId });\n *\n * // Execute mutation phase\n * await executeMutate();\n *\n * return { userId, profileId };\n * },\n * {\n * createUnitOfWork: () => db.createUnitOfWork(),\n * retryPolicy: new ExponentialBackoffRetryPolicy({ maxRetries: 5 })\n * }\n * );\n * ```\n */\nexport async function executeRestrictedUnitOfWork<TResult, THooks extends HooksMap = {}>(\n callback: (context: {\n forSchema: <S extends AnySchema, H extends HooksMap = THooks>(\n schema: S,\n hooks?: H,\n ) => TypedUnitOfWork<S, [], unknown, H>;\n executeRetrieve: () => Promise<void>;\n executeMutate: () => Promise<void>;\n nonce: string;\n currentAttempt: number;\n }) => Promise<TResult>,\n options: ExecuteRestrictedUnitOfWorkOptions,\n): Promise<AwaitedPromisesInObject<TResult>> {\n // Default retry policy with small, fast retries for optimistic concurrency\n const retryPolicy =\n options.retryPolicy ??\n new ExponentialBackoffRetryPolicy({\n maxRetries: 5,\n initialDelayMs: 10,\n maxDelayMs: 100,\n });\n const signal = options.signal;\n let attempt = 0;\n\n while (true) {\n // Check if aborted before starting attempt\n if (signal?.aborted) {\n throw new Error(\"Unit of Work execution aborted\");\n }\n\n try {\n // Create a fresh UOW for this attempt\n const baseUow = options.createUnitOfWork();\n\n const context = {\n forSchema: <S extends AnySchema, H extends HooksMap = THooks>(schema: S, hooks?: H) => {\n return baseUow.forSchema(schema, hooks);\n },\n executeRetrieve: async () => {\n await baseUow.executeRetrieve();\n },\n executeMutate: async () => {\n if (baseUow.state === \"executed\") {\n return;\n }\n\n if (baseUow.state === \"building-retrieval\") {\n await baseUow.executeRetrieve();\n }\n\n // Add hook mutations before executing\n if (options.onBeforeMutate) {\n options.onBeforeMutate(baseUow);\n }\n\n const result = await baseUow.executeMutations();\n if (!result.success) {\n throw new ConcurrencyConflictError();\n }\n\n if (options.onSuccess) {\n await options.onSuccess(baseUow);\n }\n },\n nonce: baseUow.nonce,\n currentAttempt: attempt,\n };\n\n // Execute the callback which will call executeRetrieve and executeMutate\n const result = await callback(context);\n\n // Await promises in the result object (1 level deep)\n const awaitedResult = await awaitPromisesInObject(result);\n\n // Return the awaited result\n return awaitedResult;\n } catch (error) {\n if (signal?.aborted) {\n throw new Error(\"Unit of Work execution aborted\");\n }\n\n // Only retry concurrency conflicts, not other errors\n if (!(error instanceof ConcurrencyConflictError)) {\n // Not a concurrency conflict - throw immediately without retry\n throw error;\n }\n\n if (!retryPolicy.shouldRetry(attempt, error, signal)) {\n // No more retries - check again if aborted or throw conflict error\n if (signal?.aborted) {\n throw new Error(\"Unit of Work execution aborted\");\n }\n throw new Error(\"Unit of Work execution failed: optimistic concurrency conflict\", {\n cause: error,\n });\n }\n\n // Wait before retrying\n const delayMs = retryPolicy.getDelayMs(attempt);\n if (delayMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n\n // Increment attempt counter for next iteration\n attempt++;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-policy.d.ts","names":[],"sources":["../../../src/query/unit-of-work/retry-policy.ts"],"sourcesContent":[],"mappings":";;AAGA;AAqBA;AA0Ba,UA/CI,WAAA,CA+CJ;EAMU;;;;AA0BvB;AAqBA;;EAW0D,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAvGD,WAuGC,CAAA,EAAA,OAAA;EAXT;;AA6BjD;;;;;;;;UA5GiB,oCAAA;;;;;;;;;;;;;;;;;;;;;;cA0BJ,6BAAA,YAAyC;;wBAM/B;0DAOmC;;;;;;UAmBzC,+BAAA;;;;;;;;;;;;;;;;;;cAqBJ,wBAAA,YAAoC;;wBAK1B;0DAMmC;;;;;;cAkB7C,aAAA,YAAyB;4DACsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-policy.js","names":["#maxRetries","#initialDelayMs","#maxDelayMs","#backoffMultiplier","#delayMs","#incrementMs"],"sources":["../../../src/query/unit-of-work/retry-policy.ts"],"sourcesContent":["/**\n * Policy for retrying failed Unit of Work operations\n */\nexport interface RetryPolicy {\n /**\n * Determines if the operation should be retried\n * @param attempt - The current attempt number (0-indexed)\n * @param error - Optional error from the previous attempt\n * @param signal - Optional AbortSignal to check for cancellation\n * @returns true if the operation should be retried, false otherwise\n */\n shouldRetry(attempt: number, error?: unknown, signal?: AbortSignal): boolean;\n\n /**\n * Gets the delay in milliseconds before the next retry attempt\n * @param attempt - The current attempt number (0-indexed)\n * @returns Delay in milliseconds\n */\n getDelayMs(attempt: number): number;\n}\n\n/**\n * Options for exponential backoff retry policy\n */\nexport interface ExponentialBackoffRetryPolicyOptions {\n /**\n * Maximum number of retry attempts (default: 3)\n */\n maxRetries?: number;\n\n /**\n * Initial delay in milliseconds (default: 100)\n */\n initialDelayMs?: number;\n\n /**\n * Maximum delay in milliseconds (default: 10000)\n */\n maxDelayMs?: number;\n\n /**\n * Multiplier for exponential backoff (default: 2)\n */\n backoffMultiplier?: number;\n}\n\n/**\n * Exponential backoff retry policy\n * Delay increases exponentially: initialDelay * (multiplier ^ attempt)\n */\nexport class ExponentialBackoffRetryPolicy implements RetryPolicy {\n readonly #maxRetries: number;\n readonly #initialDelayMs: number;\n readonly #maxDelayMs: number;\n readonly #backoffMultiplier: number;\n\n constructor(options: ExponentialBackoffRetryPolicyOptions = {}) {\n this.#maxRetries = options.maxRetries ?? 3;\n this.#initialDelayMs = options.initialDelayMs ?? 100;\n this.#maxDelayMs = options.maxDelayMs ?? 10000;\n this.#backoffMultiplier = options.backoffMultiplier ?? 2;\n }\n\n shouldRetry(attempt: number, _error?: unknown, signal?: AbortSignal): boolean {\n // Check if operation was aborted\n if (signal?.aborted) {\n return false;\n }\n\n // Check if we've exceeded max retries\n return attempt < this.#maxRetries;\n }\n\n getDelayMs(attempt: number): number {\n const delay = this.#initialDelayMs * Math.pow(this.#backoffMultiplier, attempt);\n return Math.min(delay, this.#maxDelayMs);\n }\n}\n\n/**\n * Options for linear backoff retry policy\n */\nexport interface LinearBackoffRetryPolicyOptions {\n /**\n * Maximum number of retry attempts (default: 3)\n */\n maxRetries?: number;\n\n /**\n * Base delay in milliseconds (default: 100)\n */\n delayMs?: number;\n\n /**\n * Increment added to delay for each attempt in milliseconds (default: 100)\n */\n incrementMs?: number;\n}\n\n/**\n * Linear backoff retry policy\n * Delay increases linearly: delayMs + (attempt * incrementMs)\n */\nexport class LinearBackoffRetryPolicy implements RetryPolicy {\n readonly #maxRetries: number;\n readonly #delayMs: number;\n readonly #incrementMs: number;\n\n constructor(options: LinearBackoffRetryPolicyOptions = {}) {\n this.#maxRetries = options.maxRetries ?? 3;\n this.#delayMs = options.delayMs ?? 100;\n this.#incrementMs = options.incrementMs ?? 100;\n }\n\n shouldRetry(attempt: number, _error?: unknown, signal?: AbortSignal): boolean {\n // Check if operation was aborted\n if (signal?.aborted) {\n return false;\n }\n\n // Check if we've exceeded max retries\n return attempt < this.#maxRetries;\n }\n\n getDelayMs(attempt: number): number {\n return this.#delayMs + attempt * this.#incrementMs;\n }\n}\n\n/**\n * No retry policy - never retries failed operations\n */\nexport class NoRetryPolicy implements RetryPolicy {\n shouldRetry(_attempt: number, _error?: unknown, _signal?: AbortSignal): boolean {\n return false;\n }\n\n getDelayMs(_attempt: number): number {\n return 0;\n }\n}\n"],"mappings":";;;;;AAkDA,IAAa,gCAAb,MAAkE;CAChE,CAASA;CACT,CAASC;CACT,CAASC;CACT,CAASC;CAET,YAAY,UAAgD,EAAE,EAAE;AAC9D,QAAKH,aAAc,QAAQ,cAAc;AACzC,QAAKC,iBAAkB,QAAQ,kBAAkB;AACjD,QAAKC,aAAc,QAAQ,cAAc;AACzC,QAAKC,oBAAqB,QAAQ,qBAAqB;;CAGzD,YAAY,SAAiB,QAAkB,QAA+B;AAE5E,MAAI,QAAQ,QACV,QAAO;AAIT,SAAO,UAAU,MAAKH;;CAGxB,WAAW,SAAyB;EAClC,MAAM,QAAQ,MAAKC,iBAAkB,KAAK,IAAI,MAAKE,mBAAoB,QAAQ;AAC/E,SAAO,KAAK,IAAI,OAAO,MAAKD,WAAY;;;;;;;AA4B5C,IAAa,2BAAb,MAA6D;CAC3D,CAASF;CACT,CAASI;CACT,CAASC;CAET,YAAY,UAA2C,EAAE,EAAE;AACzD,QAAKL,aAAc,QAAQ,cAAc;AACzC,QAAKI,UAAW,QAAQ,WAAW;AACnC,QAAKC,cAAe,QAAQ,eAAe;;CAG7C,YAAY,SAAiB,QAAkB,QAA+B;AAE5E,MAAI,QAAQ,QACV,QAAO;AAIT,SAAO,UAAU,MAAKL;;CAGxB,WAAW,SAAyB;AAClC,SAAO,MAAKI,UAAW,UAAU,MAAKC;;;;;;AAO1C,IAAa,gBAAb,MAAkD;CAChD,YAAY,UAAkB,QAAkB,SAAgC;AAC9E,SAAO;;CAGT,WAAW,UAA0B;AACnC,SAAO"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { AnySchema, AnyTable, FragnoId, IdColumn, Index, Relation } from "
|
|
2
|
-
import { Condition, ConditionBuilder } from "
|
|
3
|
-
import { CompiledJoin } from "
|
|
4
|
-
import { Cursor, CursorResult } from "
|
|
5
|
-
import { Prettify } from "
|
|
6
|
-
import {
|
|
1
|
+
import { AnySchema, AnyTable, FragnoId, IdColumn, Index, Relation } from "../../schema/create.js";
|
|
2
|
+
import { Condition, ConditionBuilder } from "../condition-builder.js";
|
|
3
|
+
import { CompiledJoin } from "../orm/orm.js";
|
|
4
|
+
import { Cursor, CursorResult } from "../cursor.js";
|
|
5
|
+
import { Prettify } from "../../util/types.js";
|
|
6
|
+
import { HookPayload, HooksMap, TriggerHookOptions, TriggeredHook } from "../../hooks/hooks.js";
|
|
7
|
+
import { ExtractJoinOut, ExtractSelect, SelectClause, SelectResult, TableToInsertValues, TableToUpdateValues } from "../simple-query-interface.js";
|
|
7
8
|
|
|
8
|
-
//#region src/query/unit-of-work.d.ts
|
|
9
|
+
//#region src/query/unit-of-work/unit-of-work.d.ts
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Builder for updateMany operations that supports both whereIndex and set chaining
|
|
@@ -149,12 +150,16 @@ type MutationOperation<TSchema extends AnySchema, TTable extends AnyTable = TSch
|
|
|
149
150
|
*/
|
|
150
151
|
interface CompiledMutation<TOutput> {
|
|
151
152
|
query: TOutput;
|
|
153
|
+
/**
|
|
154
|
+
* The type of mutation operation (create, update, delete, or check).
|
|
155
|
+
*/
|
|
156
|
+
op: "create" | "update" | "delete" | "check";
|
|
152
157
|
/**
|
|
153
158
|
* Number of rows this operation must affect for the transaction to succeed.
|
|
154
159
|
* If actual affected rows doesn't match, it indicates a version conflict.
|
|
155
160
|
* null means don't check affected rows (e.g., for create operations).
|
|
156
161
|
*/
|
|
157
|
-
expectedAffectedRows:
|
|
162
|
+
expectedAffectedRows: bigint | null;
|
|
158
163
|
/**
|
|
159
164
|
* Number of rows this SELECT query must return for the transaction to succeed.
|
|
160
165
|
* Used for check operations to verify version without modifying data.
|
|
@@ -210,7 +215,7 @@ interface UOWDecoder<TRawInput = unknown> {
|
|
|
210
215
|
* @param operations - Array of retrieval operations that produced these results
|
|
211
216
|
* @returns Decoded results in application format
|
|
212
217
|
*/
|
|
213
|
-
(rawResults: TRawInput[], operations: RetrievalOperation<AnySchema>[]): unknown[];
|
|
218
|
+
decode(rawResults: TRawInput[], operations: RetrievalOperation<AnySchema>[]): unknown[];
|
|
214
219
|
}
|
|
215
220
|
/**
|
|
216
221
|
* Builder for find operations in Unit of Work
|
|
@@ -250,6 +255,7 @@ declare class FindBuilder<TTable extends AnyTable, TSelect extends SelectClause<
|
|
|
250
255
|
before(cursor: Cursor | string): this;
|
|
251
256
|
/**
|
|
252
257
|
* Set the number of results per page
|
|
258
|
+
* @throws {RangeError} If size is not a positive integer
|
|
253
259
|
*/
|
|
254
260
|
pageSize(size: number): this;
|
|
255
261
|
/**
|
|
@@ -334,6 +340,7 @@ declare class JoinFindBuilder<TTable extends AnyTable, TSelect extends SelectCla
|
|
|
334
340
|
orderByIndex<TIndexName extends ValidIndexName<TTable>>(indexName: TIndexName, direction: "asc" | "desc"): this;
|
|
335
341
|
/**
|
|
336
342
|
* Set the number of results to return
|
|
343
|
+
* @throws {RangeError} If size is not a positive integer
|
|
337
344
|
*/
|
|
338
345
|
pageSize(size: number): this;
|
|
339
346
|
/**
|
|
@@ -389,7 +396,10 @@ interface IUnitOfWork {
|
|
|
389
396
|
getCreatedIds(): FragnoId[];
|
|
390
397
|
restrict(): IUnitOfWork;
|
|
391
398
|
reset(): void;
|
|
392
|
-
forSchema<TOtherSchema extends AnySchema>(schema: TOtherSchema): TypedUnitOfWork<TOtherSchema, [], any>;
|
|
399
|
+
forSchema<TOtherSchema extends AnySchema, TOtherHooks extends HooksMap = {}>(schema: TOtherSchema, hooks?: TOtherHooks): TypedUnitOfWork<TOtherSchema, [], any, TOtherHooks>;
|
|
400
|
+
registerSchema(schema: AnySchema, namespace: string): void;
|
|
401
|
+
triggerHook(hookName: string, payload: unknown, options?: TriggerHookOptions): void;
|
|
402
|
+
getTriggeredHooks(): readonly TriggeredHook[];
|
|
393
403
|
}
|
|
394
404
|
/**
|
|
395
405
|
* Restricted UOW interface without execute methods.
|
|
@@ -439,12 +449,20 @@ interface UnitOfWorkConfig {
|
|
|
439
449
|
declare class UnitOfWork<const TRawInput = unknown> implements IUnitOfWork {
|
|
440
450
|
#private;
|
|
441
451
|
constructor(compiler: UOWCompiler<unknown>, executor: UOWExecutor<unknown, TRawInput>, decoder: UOWDecoder<TRawInput>, name?: string, config?: UnitOfWorkConfig, schemaNamespaceMap?: WeakMap<AnySchema, string>);
|
|
452
|
+
/**
|
|
453
|
+
* Register a schema with its namespace for cross-fragment operations.
|
|
454
|
+
* This is used for internal fragments like hooks that need to create
|
|
455
|
+
* records in a different schema during the same transaction.
|
|
456
|
+
*/
|
|
457
|
+
registerSchema(schema: AnySchema, namespace: string): void;
|
|
442
458
|
/**
|
|
443
459
|
* Get a schema-specific typed view of this UOW for type-safe operations.
|
|
444
460
|
* Returns a wrapper that provides typed operations for the given schema.
|
|
445
461
|
* The namespace is automatically resolved from the schema-namespace map.
|
|
462
|
+
* The optional hooks parameter is for type inference only - pass your hooks map
|
|
463
|
+
* to get proper typing for triggerHook. The value is not used at runtime.
|
|
446
464
|
*/
|
|
447
|
-
forSchema<TOtherSchema extends AnySchema,
|
|
465
|
+
forSchema<TOtherSchema extends AnySchema, TOtherHooks extends HooksMap = {}>(schema: TOtherSchema, _hooks?: TOtherHooks): TypedUnitOfWork<TOtherSchema, [], TRawInput, TOtherHooks>;
|
|
448
466
|
/**
|
|
449
467
|
* Create a restricted child UOW that cannot execute phases.
|
|
450
468
|
* The child shares the same operation storage but must signal readiness
|
|
@@ -466,6 +484,14 @@ declare class UnitOfWork<const TRawInput = unknown> implements IUnitOfWork {
|
|
|
466
484
|
* Clears operations, resets state, and resets phase promises.
|
|
467
485
|
*/
|
|
468
486
|
reset(): void;
|
|
487
|
+
/**
|
|
488
|
+
* Trigger a hook to be executed after the transaction commits.
|
|
489
|
+
*/
|
|
490
|
+
triggerHook(hookName: string, payload: unknown, options?: TriggerHookOptions): void;
|
|
491
|
+
/**
|
|
492
|
+
* Get all triggered hooks for this UOW.
|
|
493
|
+
*/
|
|
494
|
+
getTriggeredHooks(): ReadonlyArray<TriggeredHook>;
|
|
469
495
|
get state(): UOWState;
|
|
470
496
|
get name(): string | undefined;
|
|
471
497
|
get nonce(): string;
|
|
@@ -533,7 +559,7 @@ declare class UnitOfWork<const TRawInput = unknown> implements IUnitOfWork {
|
|
|
533
559
|
* All operations are stored in the underlying UOW, but this facade ensures type safety and
|
|
534
560
|
* filters retrieval results to only include operations added through this facade.
|
|
535
561
|
*/
|
|
536
|
-
declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalResults extends unknown[] = [], const TRawInput = unknown> implements IUnitOfWork {
|
|
562
|
+
declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalResults extends unknown[] = [], const TRawInput = unknown, const THooks extends HooksMap = {}> implements IUnitOfWork {
|
|
537
563
|
#private;
|
|
538
564
|
constructor(schema: TSchema, namespace: string | undefined, uow: UnitOfWork<TRawInput>);
|
|
539
565
|
get $results(): Prettify<TRetrievalResults>;
|
|
@@ -552,17 +578,18 @@ declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalR
|
|
|
552
578
|
}>;
|
|
553
579
|
restrict(): IUnitOfWork;
|
|
554
580
|
reset(): void;
|
|
555
|
-
forSchema<TOtherSchema extends AnySchema>(schema: TOtherSchema): TypedUnitOfWork<TOtherSchema, [], TRawInput>;
|
|
581
|
+
forSchema<TOtherSchema extends AnySchema, TOtherHooks extends HooksMap = {}>(schema: TOtherSchema, hooks?: TOtherHooks): TypedUnitOfWork<TOtherSchema, [], TRawInput, TOtherHooks>;
|
|
582
|
+
registerSchema(schema: AnySchema, namespace: string): void;
|
|
556
583
|
compile<TOutput>(compiler: UOWCompiler<TOutput>): {
|
|
557
584
|
name?: string;
|
|
558
585
|
retrievalBatch: TOutput[];
|
|
559
586
|
mutationBatch: CompiledMutation<TOutput>[];
|
|
560
587
|
};
|
|
561
|
-
find<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>[]], TRawInput>;
|
|
562
|
-
find<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true>[]], TRawInput>;
|
|
563
|
-
findFirst<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>> | null], TRawInput>;
|
|
564
|
-
findFirst<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true> | null], TRawInput>;
|
|
565
|
-
findWithCursor<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, CursorResult<SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>>], TRawInput>;
|
|
588
|
+
find<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>[]], TRawInput, THooks>;
|
|
589
|
+
find<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true>[]], TRawInput, THooks>;
|
|
590
|
+
findFirst<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>> | null], TRawInput, THooks>;
|
|
591
|
+
findFirst<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true> | null], TRawInput, THooks>;
|
|
592
|
+
findWithCursor<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, CursorResult<SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>>], TRawInput, THooks>;
|
|
566
593
|
create<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, values: TableToInsertValues<TSchema["tables"][TableName]>): FragnoId;
|
|
567
594
|
update<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, id: FragnoId | string, builderFn: (builder: Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build">) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build"> | void): void;
|
|
568
595
|
delete<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, id: FragnoId | string, builderFn?: (builder: Omit<DeleteBuilder, "build">) => Omit<DeleteBuilder, "build"> | void): void;
|
|
@@ -583,6 +610,12 @@ declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalR
|
|
|
583
610
|
* ```
|
|
584
611
|
*/
|
|
585
612
|
check<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, id: FragnoId): void;
|
|
613
|
+
get $hooks(): THooks;
|
|
614
|
+
/**
|
|
615
|
+
* Trigger a hook to be executed after the transaction commits.
|
|
616
|
+
*/
|
|
617
|
+
triggerHook<K$1 extends keyof THooks & string>(hookName: K$1, payload: HookPayload<THooks[K$1]>, options?: TriggerHookOptions): void;
|
|
618
|
+
getTriggeredHooks(): ReadonlyArray<TriggeredHook>;
|
|
586
619
|
}
|
|
587
620
|
//#endregion
|
|
588
621
|
export { CompiledMutation, DeleteBuilder, FindBuilder, IUnitOfWork, IUnitOfWorkRestricted, IndexColumns, IndexedConditionBuilder, IndexedJoinBuilder, InferIdColumnName, JoinFindBuilder, MutationOperation, MutationResult, RetrievalOperation, TypedUnitOfWork, UOWCompiler, UOWDecoder, UOWExecutor, UOWState, UnitOfWork, UnitOfWorkConfig, UpdateBuilder, UpdateManyBuilder, ValidIndexName, buildJoinIndexed, createUnitOfWork };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-of-work.d.ts","names":[],"sources":["../../../src/query/unit-of-work/unit-of-work.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { FragnoId } from "
|
|
2
|
-
import { buildCondition } from "
|
|
3
|
-
import { Cursor } from "
|
|
1
|
+
import { FragnoId } from "../../schema/create.js";
|
|
2
|
+
import { buildCondition } from "../condition-builder.js";
|
|
3
|
+
import { Cursor } from "../cursor.js";
|
|
4
4
|
|
|
5
|
-
//#region src/query/unit-of-work.ts
|
|
5
|
+
//#region src/query/unit-of-work/unit-of-work.ts
|
|
6
6
|
/**
|
|
7
7
|
* Builder for find operations in Unit of Work
|
|
8
8
|
*/
|
|
@@ -83,8 +83,10 @@ var FindBuilder = class {
|
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
85
|
* Set the number of results per page
|
|
86
|
+
* @throws {RangeError} If size is not a positive integer
|
|
86
87
|
*/
|
|
87
88
|
pageSize(size) {
|
|
89
|
+
if (!Number.isInteger(size) || size <= 0) throw new RangeError(`pageSize must be a positive integer, received: ${size}`);
|
|
88
90
|
this.#pageSizeValue = size;
|
|
89
91
|
return this;
|
|
90
92
|
}
|
|
@@ -260,8 +262,10 @@ var JoinFindBuilder = class {
|
|
|
260
262
|
}
|
|
261
263
|
/**
|
|
262
264
|
* Set the number of results to return
|
|
265
|
+
* @throws {RangeError} If size is not a positive integer
|
|
263
266
|
*/
|
|
264
267
|
pageSize(size) {
|
|
268
|
+
if (!Number.isInteger(size) || size <= 0) throw new RangeError(`pageSize must be a positive integer, received: ${size}`);
|
|
265
269
|
this.#pageSizeValue = size;
|
|
266
270
|
return this;
|
|
267
271
|
}
|
|
@@ -546,23 +550,33 @@ var UnitOfWork = class UnitOfWork {
|
|
|
546
550
|
#retrievalError = null;
|
|
547
551
|
#mutationError = null;
|
|
548
552
|
#coordinator = new UOWChildCoordinator();
|
|
553
|
+
#triggeredHooks = [];
|
|
549
554
|
constructor(compiler, executor, decoder, name, config, schemaNamespaceMap) {
|
|
550
555
|
this.#compiler = compiler;
|
|
551
556
|
this.#executor = executor;
|
|
552
557
|
this.#decoder = decoder;
|
|
553
|
-
this.#schemaNamespaceMap = schemaNamespaceMap;
|
|
558
|
+
this.#schemaNamespaceMap = schemaNamespaceMap ?? /* @__PURE__ */ new WeakMap();
|
|
554
559
|
this.#name = name;
|
|
555
560
|
this.#config = config;
|
|
556
561
|
this.#nonce = config?.nonce ?? crypto.randomUUID();
|
|
557
562
|
}
|
|
558
563
|
/**
|
|
564
|
+
* Register a schema with its namespace for cross-fragment operations.
|
|
565
|
+
* This is used for internal fragments like hooks that need to create
|
|
566
|
+
* records in a different schema during the same transaction.
|
|
567
|
+
*/
|
|
568
|
+
registerSchema(schema, namespace) {
|
|
569
|
+
this.#schemaNamespaceMap.set(schema, namespace);
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
559
572
|
* Get a schema-specific typed view of this UOW for type-safe operations.
|
|
560
573
|
* Returns a wrapper that provides typed operations for the given schema.
|
|
561
574
|
* The namespace is automatically resolved from the schema-namespace map.
|
|
575
|
+
* The optional hooks parameter is for type inference only - pass your hooks map
|
|
576
|
+
* to get proper typing for triggerHook. The value is not used at runtime.
|
|
562
577
|
*/
|
|
563
|
-
forSchema(schema) {
|
|
564
|
-
|
|
565
|
-
return new TypedUnitOfWork(schema, resolvedNamespace, this);
|
|
578
|
+
forSchema(schema, _hooks) {
|
|
579
|
+
return new TypedUnitOfWork(schema, this.#schemaNamespaceMap.get(schema), this);
|
|
566
580
|
}
|
|
567
581
|
/**
|
|
568
582
|
* Create a restricted child UOW that cannot execute phases.
|
|
@@ -584,6 +598,7 @@ var UnitOfWork = class UnitOfWork {
|
|
|
584
598
|
child.#mutationPhaseDeferred = this.#mutationPhaseDeferred;
|
|
585
599
|
child.#retrievalError = this.#retrievalError;
|
|
586
600
|
child.#mutationError = this.#mutationError;
|
|
601
|
+
child.#triggeredHooks = this.#triggeredHooks;
|
|
587
602
|
this.#coordinator.addChild(child);
|
|
588
603
|
child.signalReadyForRetrieval();
|
|
589
604
|
child.signalReadyForMutation();
|
|
@@ -619,6 +634,23 @@ var UnitOfWork = class UnitOfWork {
|
|
|
619
634
|
this.#retrievalPhaseDeferred.reset();
|
|
620
635
|
this.#mutationPhaseDeferred.reset();
|
|
621
636
|
this.#coordinator.reset();
|
|
637
|
+
this.#triggeredHooks = [];
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* Trigger a hook to be executed after the transaction commits.
|
|
641
|
+
*/
|
|
642
|
+
triggerHook(hookName, payload, options) {
|
|
643
|
+
this.#triggeredHooks.push({
|
|
644
|
+
hookName,
|
|
645
|
+
payload,
|
|
646
|
+
options
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
/**
|
|
650
|
+
* Get all triggered hooks for this UOW.
|
|
651
|
+
*/
|
|
652
|
+
getTriggeredHooks() {
|
|
653
|
+
return this.#triggeredHooks;
|
|
622
654
|
}
|
|
623
655
|
get state() {
|
|
624
656
|
return this.#state;
|
|
@@ -673,7 +705,7 @@ var UnitOfWork = class UnitOfWork {
|
|
|
673
705
|
return emptyResults;
|
|
674
706
|
}
|
|
675
707
|
const rawResults = await this.#executor.executeRetrievalPhase(retrievalBatch);
|
|
676
|
-
this.#retrievalResults = this.#decoder(rawResults, this.#retrievalOps);
|
|
708
|
+
this.#retrievalResults = this.#decoder.decode(rawResults, this.#retrievalOps);
|
|
677
709
|
this.#state = "building-mutation";
|
|
678
710
|
this.#retrievalPhaseDeferred.resolve(this.#retrievalResults);
|
|
679
711
|
return this.#retrievalResults;
|
|
@@ -855,8 +887,11 @@ var TypedUnitOfWork = class {
|
|
|
855
887
|
reset() {
|
|
856
888
|
return this.#uow.reset();
|
|
857
889
|
}
|
|
858
|
-
forSchema(schema) {
|
|
859
|
-
return this.#uow.forSchema(schema);
|
|
890
|
+
forSchema(schema, hooks) {
|
|
891
|
+
return this.#uow.forSchema(schema, hooks);
|
|
892
|
+
}
|
|
893
|
+
registerSchema(schema, namespace) {
|
|
894
|
+
this.#uow.registerSchema(schema, namespace);
|
|
860
895
|
}
|
|
861
896
|
compile(compiler) {
|
|
862
897
|
return this.#uow.compile(compiler);
|
|
@@ -997,6 +1032,18 @@ var TypedUnitOfWork = class {
|
|
|
997
1032
|
id
|
|
998
1033
|
});
|
|
999
1034
|
}
|
|
1035
|
+
get $hooks() {
|
|
1036
|
+
throw new Error("type only");
|
|
1037
|
+
}
|
|
1038
|
+
/**
|
|
1039
|
+
* Trigger a hook to be executed after the transaction commits.
|
|
1040
|
+
*/
|
|
1041
|
+
triggerHook(hookName, payload, options) {
|
|
1042
|
+
this.#uow.triggerHook(hookName, payload, options);
|
|
1043
|
+
}
|
|
1044
|
+
getTriggeredHooks() {
|
|
1045
|
+
return this.#uow.getTriggeredHooks();
|
|
1046
|
+
}
|
|
1000
1047
|
};
|
|
1001
1048
|
|
|
1002
1049
|
//#endregion
|