@fragno-dev/db 0.2.2 → 0.4.1
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 +404 -175
- package/CHANGELOG.md +109 -0
- package/README.md +54 -9
- package/dist/adapters/adapters.d.ts +23 -21
- package/dist/adapters/adapters.d.ts.map +1 -1
- package/dist/adapters/adapters.js.map +1 -1
- package/dist/adapters/generic-sql/driver-config.d.ts +16 -1
- package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -1
- package/dist/adapters/generic-sql/driver-config.js +23 -1
- package/dist/adapters/generic-sql/driver-config.js.map +1 -1
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +24 -9
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -1
- package/dist/adapters/generic-sql/generic-sql-adapter.js +60 -22
- package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js +169 -3
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
- package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -1
- package/dist/adapters/generic-sql/migration/dialect/mysql.js +25 -6
- package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
- package/dist/adapters/generic-sql/migration/dialect/postgres.js +7 -6
- package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js +193 -16
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -1
- package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -1
- package/dist/adapters/generic-sql/migration/executor.js +30 -3
- package/dist/adapters/generic-sql/migration/executor.js.map +1 -1
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -1
- package/dist/adapters/generic-sql/migration/prepared-migrations.js +9 -9
- package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
- package/dist/adapters/generic-sql/migration/sql-generator.js +75 -52
- package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +7 -6
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -1
- package/dist/adapters/generic-sql/query/cursor-utils.js +42 -4
- package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -1
- package/dist/adapters/generic-sql/query/db-now-sql.js +27 -0
- package/dist/adapters/generic-sql/query/db-now-sql.js.map +1 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +32 -21
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -1
- package/dist/adapters/generic-sql/query/select-builder.js +5 -3
- package/dist/adapters/generic-sql/query/select-builder.js.map +1 -1
- package/dist/adapters/generic-sql/query/sql-query-compiler.js +49 -18
- package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
- package/dist/adapters/generic-sql/query/where-builder.js +43 -29
- package/dist/adapters/generic-sql/query/where-builder.js.map +1 -1
- package/dist/adapters/generic-sql/sqlite-storage.d.ts +13 -0
- package/dist/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
- package/dist/adapters/generic-sql/sqlite-storage.js +15 -0
- package/dist/adapters/generic-sql/sqlite-storage.js.map +1 -0
- package/dist/adapters/generic-sql/uow-decoder.js +6 -2
- package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
- package/dist/adapters/generic-sql/uow-encoder.js +27 -8
- package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
- package/dist/adapters/in-memory/condition-evaluator.js +135 -0
- package/dist/adapters/in-memory/condition-evaluator.js.map +1 -0
- package/dist/adapters/in-memory/errors.d.ts +13 -0
- package/dist/adapters/in-memory/errors.d.ts.map +1 -0
- package/dist/adapters/in-memory/errors.js +23 -0
- package/dist/adapters/in-memory/errors.js.map +1 -0
- package/dist/adapters/in-memory/in-memory-adapter.d.ts +27 -0
- package/dist/adapters/in-memory/in-memory-adapter.d.ts.map +1 -0
- package/dist/adapters/in-memory/in-memory-adapter.js +196 -0
- package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -0
- package/dist/adapters/in-memory/in-memory-uow.js +871 -0
- package/dist/adapters/in-memory/in-memory-uow.js.map +1 -0
- package/dist/adapters/in-memory/index.d.ts +4 -0
- package/dist/adapters/in-memory/index.js +4 -0
- package/dist/adapters/in-memory/options.d.ts +30 -0
- package/dist/adapters/in-memory/options.d.ts.map +1 -0
- package/dist/adapters/in-memory/options.js +62 -0
- package/dist/adapters/in-memory/options.js.map +1 -0
- package/dist/adapters/in-memory/reference-resolution.js +26 -0
- package/dist/adapters/in-memory/reference-resolution.js.map +1 -0
- package/dist/adapters/in-memory/sorted-array-index.js +129 -0
- package/dist/adapters/in-memory/sorted-array-index.js.map +1 -0
- package/dist/adapters/in-memory/store.js +71 -0
- package/dist/adapters/in-memory/store.js.map +1 -0
- package/dist/adapters/in-memory/value-comparison.js +28 -0
- package/dist/adapters/in-memory/value-comparison.js.map +1 -0
- package/dist/adapters/shared/from-unit-of-work-compiler.js +51 -24
- package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -1
- package/dist/adapters/shared/uow-operation-compiler.js +11 -11
- package/dist/adapters/shared/uow-operation-compiler.js.map +1 -1
- package/dist/adapters/sql/index.d.ts +5 -0
- package/dist/adapters/sql/index.js +4 -0
- package/dist/browser/adapters/adapters.d.ts +61 -0
- package/dist/browser/adapters/adapters.d.ts.map +1 -0
- package/dist/browser/adapters/generic-sql/migration/executor.d.ts +15 -0
- package/dist/browser/adapters/generic-sql/migration/executor.d.ts.map +1 -0
- package/dist/browser/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
- package/dist/browser/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
- package/dist/browser/adapters/generic-sql/sqlite-storage.d.ts +11 -0
- package/dist/browser/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
- package/dist/browser/adapters/in-memory/in-memory-adapter.d.ts +5 -0
- package/dist/browser/adapters/in-memory/index.d.ts +2 -0
- package/dist/browser/adapters/in-memory/options.d.ts +1 -0
- package/dist/browser/db-fragment-definition-builder.d.ts +237 -0
- package/dist/browser/db-fragment-definition-builder.d.ts.map +1 -0
- package/dist/browser/durable-hooks.d.ts +3 -0
- package/dist/browser/fragments/internal-fragment.d.ts +317 -0
- package/dist/browser/fragments/internal-fragment.d.ts.map +1 -0
- package/dist/browser/fragments/internal-fragment.schema.d.ts +1 -0
- package/dist/browser/hooks/durable-hooks-logger.d.ts +10 -0
- package/dist/browser/hooks/durable-hooks-logger.d.ts.map +1 -0
- package/dist/browser/hooks/hooks.d.ts +146 -0
- package/dist/browser/hooks/hooks.d.ts.map +1 -0
- package/dist/browser/id.js +1 -0
- package/dist/browser/internal/adapter-registry.d.ts +4 -0
- package/dist/browser/internal/outbox-state.d.ts +2 -0
- package/dist/browser/mod.d.ts +15 -0
- package/dist/browser/mod.d.ts.map +1 -0
- package/dist/browser/mod.js +17 -0
- package/dist/browser/mod.js.map +1 -0
- package/dist/browser/mod2.d.ts +48 -0
- package/dist/browser/mod2.d.ts.map +1 -0
- package/dist/browser/naming/sql-naming.d.ts +19 -0
- package/dist/browser/naming/sql-naming.d.ts.map +1 -0
- package/dist/browser/outbox/outbox.d.ts +21 -0
- package/dist/browser/outbox/outbox.d.ts.map +1 -0
- package/dist/browser/query/column-defaults.js +1 -0
- package/dist/browser/query/condition-builder.d.ts +44 -0
- package/dist/browser/query/condition-builder.d.ts.map +1 -0
- package/dist/browser/query/condition-builder.js +97 -0
- package/dist/browser/query/condition-builder.js.map +1 -0
- package/dist/browser/query/cursor.d.ts +105 -0
- package/dist/browser/query/cursor.d.ts.map +1 -0
- package/dist/browser/query/cursor.js +150 -0
- package/dist/browser/query/cursor.js.map +1 -0
- package/dist/browser/query/db-now.d.ts +22 -0
- package/dist/browser/query/db-now.d.ts.map +1 -0
- package/dist/browser/query/db-now.js +33 -0
- package/dist/browser/query/db-now.js.map +1 -0
- package/dist/browser/query/orm/orm.d.ts +18 -0
- package/dist/browser/query/orm/orm.d.ts.map +1 -0
- package/dist/browser/query/simple-query-interface.d.ts +108 -0
- package/dist/browser/query/simple-query-interface.d.ts.map +1 -0
- package/dist/browser/query/unit-of-work/execute-unit-of-work.d.ts +423 -0
- package/dist/browser/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
- package/dist/browser/query/unit-of-work/execute-unit-of-work.js +507 -0
- package/dist/browser/query/unit-of-work/execute-unit-of-work.js.map +1 -0
- package/dist/browser/query/unit-of-work/retry-policy.d.ts +23 -0
- package/dist/browser/query/unit-of-work/retry-policy.d.ts.map +1 -0
- package/dist/browser/query/unit-of-work/retry-policy.js +40 -0
- package/dist/browser/query/unit-of-work/retry-policy.js.map +1 -0
- package/dist/browser/query/unit-of-work/unit-of-work.d.ts +703 -0
- package/dist/browser/query/unit-of-work/unit-of-work.d.ts.map +1 -0
- package/dist/browser/query/unit-of-work/unit-of-work.js +1206 -0
- package/dist/browser/query/unit-of-work/unit-of-work.js.map +1 -0
- package/dist/browser/query/value-encoding.js +38 -0
- package/dist/browser/query/value-encoding.js.map +1 -0
- package/dist/browser/schema/create.d.ts +326 -0
- package/dist/browser/schema/create.d.ts.map +1 -0
- package/dist/browser/schema/create.js +89 -0
- package/dist/browser/schema/create.js.map +1 -0
- package/dist/browser/schema/generate-id.js +28 -0
- package/dist/browser/schema/generate-id.js.map +1 -0
- package/dist/browser/shared/providers.d.ts +6 -0
- package/dist/browser/shared/providers.d.ts.map +1 -0
- package/dist/browser/sql-driver/connection/connection-provider.d.ts +13 -0
- package/dist/browser/sql-driver/connection/connection-provider.d.ts.map +1 -0
- package/dist/browser/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
- package/dist/browser/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
- package/dist/browser/sql-driver/driver/runtime-driver.d.ts +23 -0
- package/dist/browser/sql-driver/driver/runtime-driver.d.ts.map +1 -0
- package/dist/browser/sql-driver/query-executor/plugin.d.ts +17 -0
- package/dist/browser/sql-driver/query-executor/plugin.d.ts.map +1 -0
- package/dist/browser/sql-driver/query-executor/query-executor.d.ts +36 -0
- package/dist/browser/sql-driver/query-executor/query-executor.d.ts.map +1 -0
- package/dist/browser/sql-driver/sql-driver-adapter.d.ts +29 -0
- package/dist/browser/sql-driver/sql-driver-adapter.d.ts.map +1 -0
- package/dist/browser/sql-driver/sql-driver.d.ts +38 -0
- package/dist/browser/sql-driver/sql-driver.d.ts.map +1 -0
- package/dist/browser/sync/commands.d.ts +15 -0
- package/dist/browser/sync/commands.d.ts.map +1 -0
- package/dist/browser/sync/commands.js +27 -0
- package/dist/browser/sync/commands.js.map +1 -0
- package/dist/browser/sync/types.d.ts +63 -0
- package/dist/browser/sync/types.d.ts.map +1 -0
- package/dist/browser/util/types.d.ts +8 -0
- package/dist/browser/util/types.d.ts.map +1 -0
- package/dist/browser/with-database.d.ts +29 -0
- package/dist/browser/with-database.d.ts.map +1 -0
- package/dist/client.d.ts +4 -0
- package/dist/client.js +5 -0
- package/dist/db-fragment-definition-builder.d.ts +101 -33
- package/dist/db-fragment-definition-builder.d.ts.map +1 -1
- package/dist/db-fragment-definition-builder.js +450 -60
- package/dist/db-fragment-definition-builder.js.map +1 -1
- package/dist/dispatchers/cloudflare-do/dispatcher.d.ts +20 -0
- package/dist/dispatchers/cloudflare-do/dispatcher.d.ts.map +1 -0
- package/dist/dispatchers/cloudflare-do/dispatcher.js +147 -0
- package/dist/dispatchers/cloudflare-do/dispatcher.js.map +1 -0
- package/dist/dispatchers/cloudflare-do/index.d.ts +11 -0
- package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -0
- package/dist/dispatchers/cloudflare-do/index.js +31 -0
- package/dist/dispatchers/cloudflare-do/index.js.map +1 -0
- package/dist/dispatchers/node/dispatcher.d.ts +14 -0
- package/dist/dispatchers/node/dispatcher.d.ts.map +1 -0
- package/dist/dispatchers/node/dispatcher.js +80 -0
- package/dist/dispatchers/node/dispatcher.js.map +1 -0
- package/dist/dispatchers/node/index.d.ts +12 -0
- package/dist/dispatchers/node/index.d.ts.map +1 -0
- package/dist/dispatchers/node/index.js +27 -0
- package/dist/dispatchers/node/index.js.map +1 -0
- package/dist/durable-hooks.d.ts +31 -0
- package/dist/durable-hooks.d.ts.map +1 -0
- package/dist/durable-hooks.js +23 -0
- package/dist/durable-hooks.js.map +1 -0
- package/dist/fragments/internal-fragment.d.ts +186 -8
- package/dist/fragments/internal-fragment.d.ts.map +1 -1
- package/dist/fragments/internal-fragment.js +203 -38
- package/dist/fragments/internal-fragment.js.map +1 -1
- package/dist/fragments/internal-fragment.routes.js +164 -0
- package/dist/fragments/internal-fragment.routes.js.map +1 -0
- package/dist/fragments/internal-fragment.schema.d.ts +15 -0
- package/dist/fragments/internal-fragment.schema.d.ts.map +1 -0
- package/dist/fragments/internal-fragment.schema.js +39 -0
- package/dist/fragments/internal-fragment.schema.js.map +1 -0
- package/dist/hooks/durable-hooks-logger.d.ts +10 -0
- package/dist/hooks/durable-hooks-logger.d.ts.map +1 -0
- package/dist/hooks/durable-hooks-logger.js +75 -0
- package/dist/hooks/durable-hooks-logger.js.map +1 -0
- package/dist/hooks/durable-hooks-processor.d.ts +1 -0
- package/dist/hooks/durable-hooks-processor.js +80 -0
- package/dist/hooks/durable-hooks-processor.js.map +1 -0
- package/dist/hooks/durable-hooks-runtime.js +44 -0
- package/dist/hooks/durable-hooks-runtime.js.map +1 -0
- package/dist/hooks/hooks.d.ts +100 -1
- package/dist/hooks/hooks.d.ts.map +1 -1
- package/dist/hooks/hooks.js +254 -27
- package/dist/hooks/hooks.js.map +1 -1
- package/dist/id.d.ts +2 -2
- package/dist/id.js +2 -2
- package/dist/internal/adapter-registry.d.ts +11 -0
- package/dist/internal/adapter-registry.d.ts.map +1 -0
- package/dist/internal/adapter-registry.js +135 -0
- package/dist/internal/adapter-registry.js.map +1 -0
- package/dist/internal/outbox-state.d.ts +2 -0
- package/dist/internal/outbox-state.js +26 -0
- package/dist/internal/outbox-state.js.map +1 -0
- package/dist/migration-engine/auto-from-schema.d.ts +33 -0
- package/dist/migration-engine/auto-from-schema.d.ts.map +1 -0
- package/dist/migration-engine/auto-from-schema.js +223 -37
- package/dist/migration-engine/auto-from-schema.js.map +1 -1
- package/dist/migration-engine/generation-engine.d.ts +16 -10
- package/dist/migration-engine/generation-engine.d.ts.map +1 -1
- package/dist/migration-engine/generation-engine.js +86 -35
- package/dist/migration-engine/generation-engine.js.map +1 -1
- package/dist/migration-engine/shared.d.ts +113 -0
- package/dist/migration-engine/shared.d.ts.map +1 -0
- package/dist/migration-engine/shared.js.map +1 -1
- package/dist/mod.d.ts +20 -12
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +18 -12
- package/dist/mod.js.map +1 -1
- package/dist/naming/sql-naming.d.ts +19 -0
- package/dist/naming/sql-naming.d.ts.map +1 -0
- package/dist/naming/sql-naming.js +116 -0
- package/dist/naming/sql-naming.js.map +1 -0
- package/dist/outbox/outbox-builder.js +156 -0
- package/dist/outbox/outbox-builder.js.map +1 -0
- package/dist/outbox/outbox.d.ts +54 -0
- package/dist/outbox/outbox.d.ts.map +1 -0
- package/dist/outbox/outbox.js +37 -0
- package/dist/outbox/outbox.js.map +1 -0
- package/dist/query/column-defaults.js +20 -4
- package/dist/query/column-defaults.js.map +1 -1
- package/dist/query/condition-builder.d.ts +7 -1
- package/dist/query/condition-builder.d.ts.map +1 -1
- package/dist/query/condition-builder.js +5 -1
- package/dist/query/condition-builder.js.map +1 -1
- package/dist/query/cursor-client.d.ts +105 -0
- package/dist/query/cursor-client.d.ts.map +1 -0
- package/dist/query/cursor-client.js +165 -0
- package/dist/query/cursor-client.js.map +1 -0
- package/dist/query/cursor.d.ts +3 -1
- package/dist/query/cursor.d.ts.map +1 -1
- package/dist/query/cursor.js +51 -14
- package/dist/query/cursor.js.map +1 -1
- package/dist/query/db-now.d.ts +22 -0
- package/dist/query/db-now.d.ts.map +1 -0
- package/dist/query/db-now.js +35 -0
- package/dist/query/db-now.js.map +1 -0
- package/dist/query/orm/orm.js.map +1 -1
- package/dist/query/serialize/create-sql-serializer.js +5 -4
- package/dist/query/serialize/create-sql-serializer.js.map +1 -1
- package/dist/query/serialize/dialect/mysql-serializer.js +12 -6
- package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -1
- package/dist/query/serialize/dialect/postgres-serializer.js +25 -7
- package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -1
- package/dist/query/serialize/dialect/sqlite-serializer.js +60 -12
- package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -1
- package/dist/query/serialize/sql-serializer.js +2 -2
- package/dist/query/serialize/sql-serializer.js.map +1 -1
- package/dist/query/simple-query-interface.d.ts +13 -4
- package/dist/query/simple-query-interface.d.ts.map +1 -1
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts +37 -2
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/execute-unit-of-work.js +50 -24
- package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.d.ts +92 -30
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.js +136 -11
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
- package/dist/query/value-decoding.js +16 -6
- package/dist/query/value-decoding.js.map +1 -1
- package/dist/query/value-encoding.js +29 -9
- package/dist/query/value-encoding.js.map +1 -1
- package/dist/schema/create.d.ts +103 -35
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +172 -58
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/generate-id.js +2 -2
- package/dist/schema/generate-id.js.map +1 -1
- package/dist/schema/type-conversion/create-sql-type-mapper.js +4 -3
- package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
- package/dist/schema/type-conversion/dialect/sqlite.js +9 -0
- package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
- package/dist/schema/validator.d.ts +10 -0
- package/dist/schema/validator.d.ts.map +1 -0
- package/dist/schema/validator.js +123 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/schema-output/drizzle.d.ts +30 -0
- package/dist/schema-output/drizzle.d.ts.map +1 -0
- package/dist/{adapters/drizzle/generate.js → schema-output/drizzle.js} +88 -60
- package/dist/schema-output/drizzle.js.map +1 -0
- package/dist/schema-output/prisma.d.ts +17 -0
- package/dist/schema-output/prisma.d.ts.map +1 -0
- package/dist/schema-output/prisma.js +307 -0
- package/dist/schema-output/prisma.js.map +1 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js +3 -9
- package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -1
- package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -1
- package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -1
- package/dist/sql-driver/sql-driver-adapter.js.map +1 -1
- package/dist/sql-driver/sql.js.map +1 -1
- package/dist/sync/commands.d.ts +15 -0
- package/dist/sync/commands.d.ts.map +1 -0
- package/dist/sync/commands.js +27 -0
- package/dist/sync/commands.js.map +1 -0
- package/dist/sync/index.d.ts +4 -0
- package/dist/sync/index.js +4 -0
- package/dist/sync/read-tracking.d.ts +25 -0
- package/dist/sync/read-tracking.d.ts.map +1 -0
- package/dist/sync/read-tracking.js +148 -0
- package/dist/sync/read-tracking.js.map +1 -0
- package/dist/sync/submit.js +213 -0
- package/dist/sync/submit.js.map +1 -0
- package/dist/sync/types.d.ts +63 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/util/default-database-adapter.js +66 -0
- package/dist/util/default-database-adapter.js.map +1 -0
- package/dist/with-database.d.ts +3 -6
- package/dist/with-database.d.ts.map +1 -1
- package/dist/with-database.js +8 -7
- package/dist/with-database.js.map +1 -1
- package/package.json +62 -55
- package/src/adapters/adapters.ts +33 -26
- package/src/adapters/drizzle/migrate-drizzle.test.ts +99 -41
- package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +601 -0
- package/src/adapters/drizzle/test-utils.ts +13 -8
- package/src/adapters/generic-sql/driver-config.ts +38 -0
- package/src/adapters/generic-sql/generic-sql-adapter.test.ts +10 -8
- package/src/adapters/generic-sql/generic-sql-adapter.ts +117 -34
- package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +55 -0
- package/src/adapters/generic-sql/generic-sql-uow-executor.ts +297 -3
- package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +120 -0
- package/src/adapters/generic-sql/migration/cold-kysely.ts +1 -0
- package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +27 -8
- package/src/adapters/generic-sql/migration/dialect/mysql.ts +47 -8
- package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +28 -9
- package/src/adapters/generic-sql/migration/dialect/postgres.ts +9 -4
- package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +839 -8
- package/src/adapters/generic-sql/migration/dialect/sqlite.ts +396 -53
- package/src/adapters/generic-sql/migration/executor.test.ts +52 -0
- package/src/adapters/generic-sql/migration/executor.ts +47 -4
- package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +238 -46
- package/src/adapters/generic-sql/migration/prepared-migrations.ts +21 -13
- package/src/adapters/generic-sql/migration/sql-generator.ts +145 -66
- package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +11 -8
- package/src/adapters/generic-sql/query/cursor-utils.test.ts +272 -0
- package/src/adapters/generic-sql/query/cursor-utils.ts +42 -7
- package/src/adapters/generic-sql/query/db-now-sql.ts +49 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +171 -35
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +53 -40
- package/src/adapters/generic-sql/query/select-builder.test.ts +16 -11
- package/src/adapters/generic-sql/query/select-builder.ts +7 -3
- package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +75 -6
- package/src/adapters/generic-sql/query/sql-query-compiler.ts +129 -24
- package/src/adapters/generic-sql/query/where-builder.test.ts +96 -20
- package/src/adapters/generic-sql/query/where-builder.ts +112 -41
- package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +11 -20
- package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +851 -0
- package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +18 -15
- package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +282 -14
- package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +129 -12
- package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +9 -7
- package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
- package/src/adapters/generic-sql/uow-decoder.test.ts +5 -4
- package/src/adapters/generic-sql/uow-decoder.ts +23 -5
- package/src/adapters/generic-sql/uow-encoder.test.ts +36 -3
- package/src/adapters/generic-sql/uow-encoder.ts +48 -13
- package/src/adapters/in-memory/condition-evaluator.test.ts +194 -0
- package/src/adapters/in-memory/condition-evaluator.ts +280 -0
- package/src/adapters/in-memory/errors.ts +20 -0
- package/src/adapters/in-memory/in-memory-adapter.ts +388 -0
- package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +344 -0
- package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +255 -0
- package/src/adapters/in-memory/in-memory-uow.ts +1724 -0
- package/src/adapters/in-memory/index.ts +3 -0
- package/src/adapters/in-memory/options.test.ts +42 -0
- package/src/adapters/in-memory/options.ts +91 -0
- package/src/adapters/in-memory/outbox.test.ts +361 -0
- package/src/adapters/in-memory/reference-resolution.test.ts +51 -0
- package/src/adapters/in-memory/reference-resolution.ts +67 -0
- package/src/adapters/in-memory/sorted-array-index.test.ts +124 -0
- package/src/adapters/in-memory/sorted-array-index.ts +228 -0
- package/src/adapters/in-memory/store.test.ts +69 -0
- package/src/adapters/in-memory/store.ts +145 -0
- package/src/adapters/in-memory/value-comparison.ts +53 -0
- package/src/adapters/in-memory/value-normalization.test.ts +58 -0
- package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1207 -0
- package/src/adapters/shared/from-unit-of-work-compiler.ts +159 -47
- package/src/adapters/shared/uow-operation-compiler.ts +28 -18
- package/src/adapters/sql/index.ts +12 -0
- package/src/browser/mod.ts +64 -0
- package/src/client.ts +19 -0
- package/src/db-fragment-definition-builder.test.ts +845 -53
- package/src/db-fragment-definition-builder.ts +911 -95
- package/src/db-fragment-instantiator.test.ts +210 -94
- package/src/db-fragment-integration.test.ts +17 -12
- package/src/dispatchers/cloudflare-do/dispatcher.ts +204 -0
- package/src/dispatchers/cloudflare-do/index.test.ts +206 -0
- package/src/dispatchers/cloudflare-do/index.ts +63 -0
- package/src/dispatchers/node/dispatcher.ts +112 -0
- package/src/dispatchers/node/index.test.ts +120 -0
- package/src/dispatchers/node/index.ts +50 -0
- package/src/durable-hooks.test.ts +80 -0
- package/src/durable-hooks.ts +67 -0
- package/src/fragments/internal-fragment.routes.test.ts +570 -0
- package/src/fragments/internal-fragment.routes.ts +334 -0
- package/src/fragments/internal-fragment.schema.ts +95 -0
- package/src/fragments/internal-fragment.test.ts +505 -83
- package/src/fragments/internal-fragment.ts +453 -70
- package/src/hooks/durable-hooks-logger.ts +126 -0
- package/src/hooks/durable-hooks-processor.pglite.test.ts +87 -0
- package/src/hooks/durable-hooks-processor.test.ts +282 -0
- package/src/hooks/durable-hooks-processor.ts +173 -0
- package/src/hooks/durable-hooks-runtime.test.ts +65 -0
- package/src/hooks/durable-hooks-runtime.ts +81 -0
- package/src/hooks/hooks.test.ts +455 -34
- package/src/hooks/hooks.ts +501 -34
- package/src/id.test.ts +34 -0
- package/src/id.ts +1 -3
- package/src/internal/adapter-registry.test.ts +93 -0
- package/src/internal/adapter-registry.ts +239 -0
- package/src/internal/outbox-state.ts +43 -0
- package/src/migration-engine/auto-from-schema.test.ts +107 -14
- package/src/migration-engine/auto-from-schema.ts +365 -44
- package/src/migration-engine/create.test.ts +4 -3
- package/src/migration-engine/create.ts +1 -1
- package/src/migration-engine/generation-engine.test.ts +292 -110
- package/src/migration-engine/generation-engine.ts +117 -66
- package/src/migration-engine/shared.ts +14 -0
- package/src/mod.ts +95 -39
- package/src/naming/sql-naming.ts +181 -0
- package/src/outbox/outbox-builder.ts +241 -0
- package/src/outbox/outbox.test.ts +424 -0
- package/src/outbox/outbox.ts +139 -0
- package/src/query/column-defaults.ts +42 -4
- package/src/query/condition-builder.test.ts +18 -3
- package/src/query/condition-builder.ts +7 -0
- package/src/query/cursor-client.test.ts +70 -0
- package/src/query/cursor-client.ts +263 -0
- package/src/query/cursor.test.ts +119 -20
- package/src/query/cursor.ts +88 -27
- package/src/query/db-now.ts +73 -0
- package/src/query/orm/orm.ts +2 -2
- package/src/query/query-type.test.ts +4 -3
- package/src/query/serialize/create-sql-serializer.ts +10 -5
- package/src/query/serialize/dialect/mysql-serializer.ts +13 -5
- package/src/query/serialize/dialect/postgres-serializer.ts +35 -5
- package/src/query/serialize/dialect/sqlite-serializer.test.ts +90 -3
- package/src/query/serialize/dialect/sqlite-serializer.ts +108 -12
- package/src/query/serialize/sql-serializer.ts +4 -4
- package/src/query/simple-query-interface.ts +15 -4
- package/src/query/unit-of-work/execute-unit-of-work.test.ts +372 -10
- package/src/query/unit-of-work/execute-unit-of-work.ts +87 -27
- package/src/query/unit-of-work/retry-policy.test.ts +1 -0
- package/src/query/unit-of-work/tx-builder.test.ts +73 -1
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +17 -16
- package/src/query/unit-of-work/unit-of-work-types.test.ts +42 -12
- package/src/query/unit-of-work/unit-of-work.test.ts +196 -39
- package/src/query/unit-of-work/unit-of-work.ts +309 -38
- package/src/query/value-decoding.test.ts +63 -4
- package/src/query/value-decoding.ts +32 -6
- package/src/query/value-encoding.test.ts +86 -2
- package/src/query/value-encoding.ts +56 -6
- package/src/schema/create.test.ts +293 -47
- package/src/schema/create.ts +406 -70
- package/src/schema/generate-id.test.ts +3 -2
- package/src/schema/generate-id.ts +2 -2
- package/src/schema/serialize.test.ts +18 -5
- package/src/schema/type-conversion/create-sql-type-mapper.ts +8 -3
- package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
- package/src/schema/type-conversion/type-mapping.test.ts +26 -1
- package/src/schema/validator.test.ts +199 -0
- package/src/schema/validator.ts +232 -0
- package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +232 -129
- package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +155 -99
- package/src/schema-output/prisma.test.ts +694 -0
- package/src/schema-output/prisma.ts +593 -0
- package/src/sql-driver/better-sqlite3.test.ts +5 -3
- package/src/sql-driver/dialects/durable-object-dialect.ts +3 -8
- package/src/sql-driver/query-executor/default-query-executor.ts +1 -1
- package/src/sql-driver/query-executor/query-executor-base.ts +1 -1
- package/src/sql-driver/query-executor/query-executor.ts +1 -1
- package/src/sql-driver/sql-driver-adapter.ts +2 -2
- package/src/sql-driver/sql.ts +2 -1
- package/src/sql-driver/sqlocal.test.ts +4 -2
- package/src/sync/commands.test.ts +39 -0
- package/src/sync/commands.ts +51 -0
- package/src/sync/conflict-checker.test.ts +450 -0
- package/src/sync/conflict-checker.ts +248 -0
- package/src/sync/index.ts +14 -0
- package/src/sync/plan.ts +9 -0
- package/src/sync/read-tracking.test.ts +177 -0
- package/src/sync/read-tracking.ts +287 -0
- package/src/sync/submit.test.ts +205 -0
- package/src/sync/submit.ts +328 -0
- package/src/sync/types.ts +80 -0
- package/src/util/default-database-adapter.ts +119 -0
- package/src/with-database.ts +20 -31
- package/tsconfig.json +1 -1
- package/tsdown.config.ts +38 -24
- package/vitest.config.ts +1 -0
- package/dist/adapters/drizzle/drizzle-adapter.d.ts +0 -20
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +0 -27
- package/dist/adapters/drizzle/drizzle-adapter.js.map +0 -1
- package/dist/adapters/drizzle/generate.d.ts +0 -30
- package/dist/adapters/drizzle/generate.d.ts.map +0 -1
- package/dist/adapters/drizzle/generate.js.map +0 -1
- package/dist/adapters/kysely/kysely-adapter.d.ts +0 -19
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-adapter.js +0 -17
- package/dist/adapters/kysely/kysely-adapter.js.map +0 -1
- package/dist/adapters/shared/table-name-mapper.d.ts +0 -12
- package/dist/adapters/shared/table-name-mapper.d.ts.map +0 -1
- package/dist/adapters/shared/table-name-mapper.js +0 -43
- package/dist/adapters/shared/table-name-mapper.js.map +0 -1
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +0 -165
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +0 -1
- package/dist/packages/fragno/dist/api/bind-services.js +0 -20
- package/dist/packages/fragno/dist/api/bind-services.js.map +0 -1
- package/dist/packages/fragno/dist/api/error.js +0 -48
- package/dist/packages/fragno/dist/api/error.js.map +0 -1
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js +0 -320
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +0 -1
- package/dist/packages/fragno/dist/api/fragment-instantiator.js +0 -525
- package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +0 -1
- package/dist/packages/fragno/dist/api/fragno-response.js +0 -73
- package/dist/packages/fragno/dist/api/fragno-response.js.map +0 -1
- package/dist/packages/fragno/dist/api/internal/response-stream.js +0 -81
- package/dist/packages/fragno/dist/api/internal/response-stream.js.map +0 -1
- package/dist/packages/fragno/dist/api/internal/route.js +0 -10
- package/dist/packages/fragno/dist/api/internal/route.js.map +0 -1
- package/dist/packages/fragno/dist/api/mutable-request-state.js +0 -97
- package/dist/packages/fragno/dist/api/mutable-request-state.js.map +0 -1
- package/dist/packages/fragno/dist/api/request-context-storage.js +0 -43
- package/dist/packages/fragno/dist/api/request-context-storage.js.map +0 -1
- package/dist/packages/fragno/dist/api/request-input-context.js +0 -118
- package/dist/packages/fragno/dist/api/request-input-context.js.map +0 -1
- package/dist/packages/fragno/dist/api/request-middleware.js +0 -83
- package/dist/packages/fragno/dist/api/request-middleware.js.map +0 -1
- package/dist/packages/fragno/dist/api/request-output-context.js +0 -119
- package/dist/packages/fragno/dist/api/request-output-context.js.map +0 -1
- package/dist/packages/fragno/dist/api/route.js +0 -17
- package/dist/packages/fragno/dist/api/route.js.map +0 -1
- package/dist/packages/fragno/dist/internal/symbols.js +0 -10
- package/dist/packages/fragno/dist/internal/symbols.js.map +0 -1
- package/dist/schema-generator/schema-generator.d.ts +0 -15
- package/dist/schema-generator/schema-generator.d.ts.map +0 -1
- package/src/adapters/drizzle/drizzle-adapter.ts +0 -39
- package/src/adapters/kysely/kysely-adapter.ts +0 -27
- package/src/adapters/shared/table-name-mapper.ts +0 -50
- package/src/schema-generator/schema-generator.ts +0 -12
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { describe, it, expect, assert, expectTypeOf } from "vitest";
|
|
2
|
+
|
|
2
3
|
import { column, schema, idColumn, FragnoId } from "../../schema/create";
|
|
4
|
+
import { createIndexedBuilder } from "../condition-builder";
|
|
5
|
+
import type { SimpleQueryInterface } from "../simple-query-interface";
|
|
3
6
|
import {
|
|
4
7
|
type UOWCompiler,
|
|
5
8
|
type UOWDecoder,
|
|
6
9
|
createUnitOfWork,
|
|
10
|
+
UnitOfWork,
|
|
7
11
|
type InferIdColumnName,
|
|
8
12
|
type IndexColumns,
|
|
9
13
|
} from "./unit-of-work";
|
|
10
|
-
import { createIndexedBuilder } from "../condition-builder";
|
|
11
|
-
import type { SimpleQueryInterface } from "../simple-query-interface";
|
|
12
14
|
|
|
13
15
|
// Mock compiler and executor for testing
|
|
14
16
|
function createMockCompiler(): UOWCompiler<unknown> {
|
|
@@ -38,7 +40,7 @@ function createMockDecoder(): UOWDecoder {
|
|
|
38
40
|
|
|
39
41
|
describe("FindBuilder", () => {
|
|
40
42
|
it("should support primary index", () => {
|
|
41
|
-
const testSchema = schema((s) =>
|
|
43
|
+
const testSchema = schema("test", (s) =>
|
|
42
44
|
s.addTable("users", (t) =>
|
|
43
45
|
t
|
|
44
46
|
.addColumn("id", idColumn())
|
|
@@ -59,7 +61,7 @@ describe("FindBuilder", () => {
|
|
|
59
61
|
});
|
|
60
62
|
|
|
61
63
|
it("should support custom indexes", () => {
|
|
62
|
-
const testSchema = schema((s) =>
|
|
64
|
+
const testSchema = schema("test", (s) =>
|
|
63
65
|
s.addTable("users", (t) =>
|
|
64
66
|
t
|
|
65
67
|
.addColumn("id", idColumn())
|
|
@@ -82,7 +84,7 @@ describe("FindBuilder", () => {
|
|
|
82
84
|
});
|
|
83
85
|
|
|
84
86
|
it("should support cursor-based pagination", () => {
|
|
85
|
-
const testSchema = schema((s) =>
|
|
87
|
+
const testSchema = schema("test", (s) =>
|
|
86
88
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
87
89
|
);
|
|
88
90
|
|
|
@@ -102,7 +104,7 @@ describe("FindBuilder", () => {
|
|
|
102
104
|
});
|
|
103
105
|
|
|
104
106
|
it("should support backward cursor pagination", () => {
|
|
105
|
-
const testSchema = schema((s) =>
|
|
107
|
+
const testSchema = schema("test", (s) =>
|
|
106
108
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
107
109
|
);
|
|
108
110
|
|
|
@@ -122,7 +124,7 @@ describe("FindBuilder", () => {
|
|
|
122
124
|
});
|
|
123
125
|
|
|
124
126
|
it("should throw RangeError for pageSize <= 0", () => {
|
|
125
|
-
const testSchema = schema((s) =>
|
|
127
|
+
const testSchema = schema("test", (s) =>
|
|
126
128
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
127
129
|
);
|
|
128
130
|
|
|
@@ -142,7 +144,7 @@ describe("FindBuilder", () => {
|
|
|
142
144
|
});
|
|
143
145
|
|
|
144
146
|
it("should throw RangeError for non-integer pageSize", () => {
|
|
145
|
-
const testSchema = schema((s) =>
|
|
147
|
+
const testSchema = schema("test", (s) =>
|
|
146
148
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
147
149
|
);
|
|
148
150
|
|
|
@@ -166,7 +168,7 @@ describe("FindBuilder", () => {
|
|
|
166
168
|
});
|
|
167
169
|
|
|
168
170
|
it("should throw if index doesn't exist", () => {
|
|
169
|
-
const testSchema = schema((s) =>
|
|
171
|
+
const testSchema = schema("test", (s) =>
|
|
170
172
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
171
173
|
);
|
|
172
174
|
|
|
@@ -177,7 +179,7 @@ describe("FindBuilder", () => {
|
|
|
177
179
|
});
|
|
178
180
|
|
|
179
181
|
it("should throw if finalized without index", () => {
|
|
180
|
-
const testSchema = schema((s) =>
|
|
182
|
+
const testSchema = schema("test", (s) =>
|
|
181
183
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
182
184
|
);
|
|
183
185
|
|
|
@@ -190,7 +192,7 @@ describe("FindBuilder", () => {
|
|
|
190
192
|
});
|
|
191
193
|
|
|
192
194
|
it("should support count operations", () => {
|
|
193
|
-
const testSchema = schema((s) =>
|
|
195
|
+
const testSchema = schema("test", (s) =>
|
|
194
196
|
s.addTable("users", (t) =>
|
|
195
197
|
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("age", "integer"),
|
|
196
198
|
),
|
|
@@ -205,7 +207,7 @@ describe("FindBuilder", () => {
|
|
|
205
207
|
});
|
|
206
208
|
|
|
207
209
|
it("should throw when using both select and selectCount", () => {
|
|
208
|
-
const testSchema = schema((s) =>
|
|
210
|
+
const testSchema = schema("test", (s) =>
|
|
209
211
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
210
212
|
);
|
|
211
213
|
|
|
@@ -228,7 +230,7 @@ describe("FindBuilder", () => {
|
|
|
228
230
|
});
|
|
229
231
|
|
|
230
232
|
it("should support orderByIndex", () => {
|
|
231
|
-
const testSchema = schema((s) =>
|
|
233
|
+
const testSchema = schema("test", (s) =>
|
|
232
234
|
s.addTable("users", (t) =>
|
|
233
235
|
t
|
|
234
236
|
.addColumn("id", idColumn())
|
|
@@ -257,7 +259,7 @@ describe("FindBuilder", () => {
|
|
|
257
259
|
});
|
|
258
260
|
|
|
259
261
|
it("should support join operations", () => {
|
|
260
|
-
const testSchema = schema((s) =>
|
|
262
|
+
const testSchema = schema("test", (s) =>
|
|
261
263
|
s
|
|
262
264
|
.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string"))
|
|
263
265
|
.addTable("posts", (t) =>
|
|
@@ -291,7 +293,7 @@ describe("FindBuilder", () => {
|
|
|
291
293
|
});
|
|
292
294
|
|
|
293
295
|
it("should support join operations without builder function", () => {
|
|
294
|
-
const testSchema = schema((s) =>
|
|
296
|
+
const testSchema = schema("test", (s) =>
|
|
295
297
|
s
|
|
296
298
|
.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string"))
|
|
297
299
|
.addTable("posts", (t) =>
|
|
@@ -325,7 +327,7 @@ describe("FindBuilder", () => {
|
|
|
325
327
|
});
|
|
326
328
|
|
|
327
329
|
it("should support join with whereIndex", () => {
|
|
328
|
-
const testSchema = schema((s) =>
|
|
330
|
+
const testSchema = schema("test", (s) =>
|
|
329
331
|
s
|
|
330
332
|
.addTable("users", (t) =>
|
|
331
333
|
t
|
|
@@ -373,7 +375,7 @@ describe("FindBuilder", () => {
|
|
|
373
375
|
});
|
|
374
376
|
|
|
375
377
|
it("should support join with orderByIndex", () => {
|
|
376
|
-
const testSchema = schema((s) =>
|
|
378
|
+
const testSchema = schema("test", (s) =>
|
|
377
379
|
s
|
|
378
380
|
.addTable("users", (t) =>
|
|
379
381
|
t
|
|
@@ -418,7 +420,7 @@ describe("FindBuilder", () => {
|
|
|
418
420
|
});
|
|
419
421
|
|
|
420
422
|
it("should support join with pageSize", () => {
|
|
421
|
-
const testSchema = schema((s) =>
|
|
423
|
+
const testSchema = schema("test", (s) =>
|
|
422
424
|
s
|
|
423
425
|
.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string"))
|
|
424
426
|
.addTable("posts", (t) =>
|
|
@@ -453,7 +455,7 @@ describe("FindBuilder", () => {
|
|
|
453
455
|
});
|
|
454
456
|
|
|
455
457
|
it("should throw RangeError for invalid pageSize in join", () => {
|
|
456
|
-
const testSchema = schema((s) =>
|
|
458
|
+
const testSchema = schema("test", (s) =>
|
|
457
459
|
s
|
|
458
460
|
.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string"))
|
|
459
461
|
.addTable("posts", (t) =>
|
|
@@ -498,7 +500,7 @@ describe("FindBuilder", () => {
|
|
|
498
500
|
});
|
|
499
501
|
|
|
500
502
|
it("should support nested joins", () => {
|
|
501
|
-
const testSchema = schema((s) =>
|
|
503
|
+
const testSchema = schema("test", (s) =>
|
|
502
504
|
s
|
|
503
505
|
.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string"))
|
|
504
506
|
.addTable("posts", (t) =>
|
|
@@ -564,7 +566,7 @@ describe("FindBuilder", () => {
|
|
|
564
566
|
});
|
|
565
567
|
|
|
566
568
|
describe("IndexedConditionBuilder", () => {
|
|
567
|
-
const testSchema = schema((s) =>
|
|
569
|
+
const testSchema = schema("test", (s) =>
|
|
568
570
|
s.addTable("users", (t) =>
|
|
569
571
|
t
|
|
570
572
|
.addColumn("id", idColumn())
|
|
@@ -585,7 +587,7 @@ describe("IndexedConditionBuilder", () => {
|
|
|
585
587
|
const indexedColumns = new Set<string>();
|
|
586
588
|
for (const index of Object.values(usersTable.indexes)) {
|
|
587
589
|
for (const col of index.columns) {
|
|
588
|
-
indexedColumns.add(col.
|
|
590
|
+
indexedColumns.add(col.name);
|
|
589
591
|
}
|
|
590
592
|
}
|
|
591
593
|
|
|
@@ -712,7 +714,7 @@ describe("IndexedConditionBuilder", () => {
|
|
|
712
714
|
describe("type safety", () => {
|
|
713
715
|
it("should restrict to only indexed columns at type level", () => {
|
|
714
716
|
// This schema has "bio" column that is NOT indexed
|
|
715
|
-
const typeTestSchema = schema((s) =>
|
|
717
|
+
const typeTestSchema = schema("typetest", (s) =>
|
|
716
718
|
s.addTable("users", (t) =>
|
|
717
719
|
t
|
|
718
720
|
.addColumn("id", idColumn())
|
|
@@ -770,7 +772,7 @@ describe("IndexedConditionBuilder", () => {
|
|
|
770
772
|
});
|
|
771
773
|
|
|
772
774
|
describe("UpdateBuilder with string ID", () => {
|
|
773
|
-
const testSchema = schema((s) =>
|
|
775
|
+
const testSchema = schema("test", (s) =>
|
|
774
776
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
775
777
|
);
|
|
776
778
|
|
|
@@ -806,7 +808,7 @@ describe("UpdateBuilder with string ID", () => {
|
|
|
806
808
|
});
|
|
807
809
|
|
|
808
810
|
describe("DeleteBuilder with string ID", () => {
|
|
809
|
-
const testSchema = schema((s) =>
|
|
811
|
+
const testSchema = schema("test", (s) =>
|
|
810
812
|
s.addTable("users", (t) => t.addColumn("id", idColumn()).addColumn("name", "string")),
|
|
811
813
|
);
|
|
812
814
|
|
|
@@ -839,7 +841,7 @@ describe("DeleteBuilder with string ID", () => {
|
|
|
839
841
|
});
|
|
840
842
|
|
|
841
843
|
describe("generateId", () => {
|
|
842
|
-
const testSchema = schema((s) =>
|
|
844
|
+
const testSchema = schema("test", (s) =>
|
|
843
845
|
s.addTable("users", (t) =>
|
|
844
846
|
t.addColumn("id", idColumn()).addColumn("email", "string").addColumn("name", "string"),
|
|
845
847
|
),
|
|
@@ -903,7 +905,7 @@ describe("generateId", () => {
|
|
|
903
905
|
});
|
|
904
906
|
|
|
905
907
|
describe("getCreatedIds", () => {
|
|
906
|
-
const testSchema = schema((s) =>
|
|
908
|
+
const testSchema = schema("test", (s) =>
|
|
907
909
|
s.addTable("users", (t) =>
|
|
908
910
|
t.addColumn("id", idColumn()).addColumn("email", "string").addColumn("name", "string"),
|
|
909
911
|
),
|
|
@@ -1019,20 +1021,20 @@ describe("getCreatedIds", () => {
|
|
|
1019
1021
|
describe("Phase promises with multiple views", () => {
|
|
1020
1022
|
it("should return only operations added to the current view when using retrievalPhase promise", async () => {
|
|
1021
1023
|
// Create two separate schemas
|
|
1022
|
-
const schema1 = schema((s) =>
|
|
1024
|
+
const schema1 = schema("schema1", (s) =>
|
|
1023
1025
|
s.addTable("users", (t) =>
|
|
1024
1026
|
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("email", "string"),
|
|
1025
1027
|
),
|
|
1026
1028
|
);
|
|
1027
1029
|
|
|
1028
|
-
const schema2 = schema((s) =>
|
|
1030
|
+
const schema2 = schema("schema2", (s) =>
|
|
1029
1031
|
s.addTable("posts", (t) =>
|
|
1030
1032
|
t.addColumn("id", idColumn()).addColumn("title", "string").addColumn("content", "string"),
|
|
1031
1033
|
),
|
|
1032
1034
|
);
|
|
1033
1035
|
|
|
1034
1036
|
// Create a schema namespace map
|
|
1035
|
-
const schemaNamespaceMap = new WeakMap<typeof schema1 | typeof schema2, string>();
|
|
1037
|
+
const schemaNamespaceMap = new WeakMap<typeof schema1 | typeof schema2, string | null>();
|
|
1036
1038
|
schemaNamespaceMap.set(schema1, "namespace1");
|
|
1037
1039
|
schemaNamespaceMap.set(schema2, "namespace2");
|
|
1038
1040
|
|
|
@@ -1089,7 +1091,7 @@ describe("Phase promises with multiple views", () => {
|
|
|
1089
1091
|
});
|
|
1090
1092
|
|
|
1091
1093
|
it("should isolate operations when getUnitOfWork is called multiple times with same schema", async () => {
|
|
1092
|
-
const testSchema = schema((s) =>
|
|
1094
|
+
const testSchema = schema("test", (s) =>
|
|
1093
1095
|
s.addTable("users", (t) =>
|
|
1094
1096
|
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("email", "string"),
|
|
1095
1097
|
),
|
|
@@ -1135,19 +1137,19 @@ describe("Phase promises with multiple views", () => {
|
|
|
1135
1137
|
});
|
|
1136
1138
|
|
|
1137
1139
|
it("should show that getCreatedIds returns ALL created IDs regardless of which view created them", async () => {
|
|
1138
|
-
const schema1 = schema((s) =>
|
|
1140
|
+
const schema1 = schema("schema1", (s) =>
|
|
1139
1141
|
s.addTable("users", (t) =>
|
|
1140
1142
|
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("email", "string"),
|
|
1141
1143
|
),
|
|
1142
1144
|
);
|
|
1143
1145
|
|
|
1144
|
-
const schema2 = schema((s) =>
|
|
1146
|
+
const schema2 = schema("schema2", (s) =>
|
|
1145
1147
|
s.addTable("posts", (t) =>
|
|
1146
1148
|
t.addColumn("id", idColumn()).addColumn("title", "string").addColumn("content", "string"),
|
|
1147
1149
|
),
|
|
1148
1150
|
);
|
|
1149
1151
|
|
|
1150
|
-
const schemaNamespaceMap = new WeakMap<typeof schema1 | typeof schema2, string>();
|
|
1152
|
+
const schemaNamespaceMap = new WeakMap<typeof schema1 | typeof schema2, string | null>();
|
|
1151
1153
|
schemaNamespaceMap.set(schema1, "namespace1");
|
|
1152
1154
|
schemaNamespaceMap.set(schema2, "namespace2");
|
|
1153
1155
|
|
|
@@ -1190,19 +1192,19 @@ describe("Phase promises with multiple views", () => {
|
|
|
1190
1192
|
});
|
|
1191
1193
|
|
|
1192
1194
|
it("should generate unique IDs when multiple views create items", async () => {
|
|
1193
|
-
const schema1 = schema((s) =>
|
|
1195
|
+
const schema1 = schema("schema1", (s) =>
|
|
1194
1196
|
s.addTable("users", (t) =>
|
|
1195
1197
|
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("email", "string"),
|
|
1196
1198
|
),
|
|
1197
1199
|
);
|
|
1198
1200
|
|
|
1199
|
-
const schema2 = schema((s) =>
|
|
1201
|
+
const schema2 = schema("schema2", (s) =>
|
|
1200
1202
|
s.addTable("posts", (t) =>
|
|
1201
1203
|
t.addColumn("id", idColumn()).addColumn("title", "string").addColumn("content", "string"),
|
|
1202
1204
|
),
|
|
1203
1205
|
);
|
|
1204
1206
|
|
|
1205
|
-
const schemaNamespaceMap = new WeakMap<typeof schema1 | typeof schema2, string>();
|
|
1207
|
+
const schemaNamespaceMap = new WeakMap<typeof schema1 | typeof schema2, string | null>();
|
|
1206
1208
|
schemaNamespaceMap.set(schema1, "namespace1");
|
|
1207
1209
|
schemaNamespaceMap.set(schema2, "namespace2");
|
|
1208
1210
|
|
|
@@ -1257,8 +1259,138 @@ describe("Phase promises with multiple views", () => {
|
|
|
1257
1259
|
});
|
|
1258
1260
|
});
|
|
1259
1261
|
|
|
1262
|
+
describe("Instrumentation", () => {
|
|
1263
|
+
const testSchema = schema("test", (s) =>
|
|
1264
|
+
s.addTable("users", (t) =>
|
|
1265
|
+
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("email", "string"),
|
|
1266
|
+
),
|
|
1267
|
+
);
|
|
1268
|
+
|
|
1269
|
+
it("should run instrumentation hooks around retrieve and mutate phases", async () => {
|
|
1270
|
+
const calls: string[] = [];
|
|
1271
|
+
const contexts: Array<{
|
|
1272
|
+
phase: string;
|
|
1273
|
+
idempotencyKey: string;
|
|
1274
|
+
retrievalOpsCount: number;
|
|
1275
|
+
mutationOpsCount: number;
|
|
1276
|
+
}> = [];
|
|
1277
|
+
|
|
1278
|
+
const executor = {
|
|
1279
|
+
executeRetrievalPhase: async () => [[]],
|
|
1280
|
+
executeMutationPhase: async () => ({ success: true, createdInternalIds: [] }),
|
|
1281
|
+
};
|
|
1282
|
+
|
|
1283
|
+
const uow = new UnitOfWork(createMockCompiler(), executor, createMockDecoder(), undefined, {
|
|
1284
|
+
instrumentation: {
|
|
1285
|
+
beforeRetrieve: (ctx) => {
|
|
1286
|
+
calls.push("beforeRetrieve");
|
|
1287
|
+
contexts.push({
|
|
1288
|
+
phase: ctx.phase,
|
|
1289
|
+
idempotencyKey: ctx.idempotencyKey,
|
|
1290
|
+
retrievalOpsCount: ctx.retrievalOpsCount,
|
|
1291
|
+
mutationOpsCount: ctx.mutationOpsCount,
|
|
1292
|
+
});
|
|
1293
|
+
},
|
|
1294
|
+
afterRetrieve: (ctx) => {
|
|
1295
|
+
calls.push("afterRetrieve");
|
|
1296
|
+
contexts.push({
|
|
1297
|
+
phase: ctx.phase,
|
|
1298
|
+
idempotencyKey: ctx.idempotencyKey,
|
|
1299
|
+
retrievalOpsCount: ctx.retrievalOpsCount,
|
|
1300
|
+
mutationOpsCount: ctx.mutationOpsCount,
|
|
1301
|
+
});
|
|
1302
|
+
},
|
|
1303
|
+
beforeMutate: (ctx) => {
|
|
1304
|
+
calls.push("beforeMutate");
|
|
1305
|
+
contexts.push({
|
|
1306
|
+
phase: ctx.phase,
|
|
1307
|
+
idempotencyKey: ctx.idempotencyKey,
|
|
1308
|
+
retrievalOpsCount: ctx.retrievalOpsCount,
|
|
1309
|
+
mutationOpsCount: ctx.mutationOpsCount,
|
|
1310
|
+
});
|
|
1311
|
+
},
|
|
1312
|
+
afterMutate: (ctx) => {
|
|
1313
|
+
calls.push("afterMutate");
|
|
1314
|
+
contexts.push({
|
|
1315
|
+
phase: ctx.phase,
|
|
1316
|
+
idempotencyKey: ctx.idempotencyKey,
|
|
1317
|
+
retrievalOpsCount: ctx.retrievalOpsCount,
|
|
1318
|
+
mutationOpsCount: ctx.mutationOpsCount,
|
|
1319
|
+
});
|
|
1320
|
+
},
|
|
1321
|
+
},
|
|
1322
|
+
});
|
|
1323
|
+
|
|
1324
|
+
const typed = uow.forSchema(testSchema);
|
|
1325
|
+
typed.find("users", (b) => b.whereIndex("primary"));
|
|
1326
|
+
typed.create("users", { name: "Alice", email: "alice@example.com" });
|
|
1327
|
+
|
|
1328
|
+
await uow.executeRetrieve();
|
|
1329
|
+
await uow.executeMutations();
|
|
1330
|
+
|
|
1331
|
+
expect(calls).toEqual(["beforeRetrieve", "afterRetrieve", "beforeMutate", "afterMutate"]);
|
|
1332
|
+
|
|
1333
|
+
for (const ctx of contexts) {
|
|
1334
|
+
expect(ctx.idempotencyKey).toBeTypeOf("string");
|
|
1335
|
+
expect(ctx.idempotencyKey.length).toBeGreaterThan(0);
|
|
1336
|
+
expect(ctx.retrievalOpsCount).toBe(1);
|
|
1337
|
+
expect(ctx.mutationOpsCount).toBe(1);
|
|
1338
|
+
}
|
|
1339
|
+
});
|
|
1340
|
+
|
|
1341
|
+
it("should short-circuit mutations on conflict injection", async () => {
|
|
1342
|
+
let mutationExecuted = false;
|
|
1343
|
+
|
|
1344
|
+
const executor = {
|
|
1345
|
+
executeRetrievalPhase: async () => [],
|
|
1346
|
+
executeMutationPhase: async () => {
|
|
1347
|
+
mutationExecuted = true;
|
|
1348
|
+
return { success: true, createdInternalIds: [] };
|
|
1349
|
+
},
|
|
1350
|
+
};
|
|
1351
|
+
|
|
1352
|
+
const uow = new UnitOfWork(createMockCompiler(), executor, createMockDecoder(), undefined, {
|
|
1353
|
+
instrumentation: {
|
|
1354
|
+
beforeMutate: () => ({ type: "conflict", reason: "Injected conflict" }),
|
|
1355
|
+
afterMutate: () => {
|
|
1356
|
+
throw new Error("afterMutate should not run");
|
|
1357
|
+
},
|
|
1358
|
+
},
|
|
1359
|
+
});
|
|
1360
|
+
|
|
1361
|
+
uow.forSchema(testSchema).create("users", { name: "Alice", email: "alice@example.com" });
|
|
1362
|
+
|
|
1363
|
+
const result = await uow.executeMutations();
|
|
1364
|
+
expect(result.success).toBe(false);
|
|
1365
|
+
expect(mutationExecuted).toBe(false);
|
|
1366
|
+
});
|
|
1367
|
+
|
|
1368
|
+
it("should throw on error injection before retrieval", async () => {
|
|
1369
|
+
let retrievalExecuted = false;
|
|
1370
|
+
|
|
1371
|
+
const executor = {
|
|
1372
|
+
executeRetrievalPhase: async () => {
|
|
1373
|
+
retrievalExecuted = true;
|
|
1374
|
+
return [];
|
|
1375
|
+
},
|
|
1376
|
+
executeMutationPhase: async () => ({ success: true, createdInternalIds: [] }),
|
|
1377
|
+
};
|
|
1378
|
+
|
|
1379
|
+
const uow = new UnitOfWork(createMockCompiler(), executor, createMockDecoder(), undefined, {
|
|
1380
|
+
instrumentation: {
|
|
1381
|
+
beforeRetrieve: () => ({ type: "error", error: new Error("Injected failure") }),
|
|
1382
|
+
},
|
|
1383
|
+
});
|
|
1384
|
+
|
|
1385
|
+
uow.forSchema(testSchema).find("users", (b) => b.whereIndex("primary"));
|
|
1386
|
+
|
|
1387
|
+
await expect(uow.executeRetrieve()).rejects.toThrow("Injected failure");
|
|
1388
|
+
expect(retrievalExecuted).toBe(false);
|
|
1389
|
+
});
|
|
1390
|
+
});
|
|
1391
|
+
|
|
1260
1392
|
describe("Error Handling", () => {
|
|
1261
|
-
const testSchema = schema((s) =>
|
|
1393
|
+
const testSchema = schema("test", (s) =>
|
|
1262
1394
|
s.addTable("users", (t) =>
|
|
1263
1395
|
t.addColumn("id", idColumn()).addColumn("name", "string").addColumn("email", "string"),
|
|
1264
1396
|
),
|
|
@@ -1543,7 +1675,7 @@ describe("Error Handling", () => {
|
|
|
1543
1675
|
});
|
|
1544
1676
|
|
|
1545
1677
|
describe("findFirst convenience method", () => {
|
|
1546
|
-
const testSchema = schema((s) =>
|
|
1678
|
+
const testSchema = schema("test", (s) =>
|
|
1547
1679
|
s
|
|
1548
1680
|
.addTable("users", (t) =>
|
|
1549
1681
|
t
|
|
@@ -1778,3 +1910,28 @@ describe("findFirst convenience method", () => {
|
|
|
1778
1910
|
expect(ops[0]?.indexName).toBe("_primary");
|
|
1779
1911
|
});
|
|
1780
1912
|
});
|
|
1913
|
+
|
|
1914
|
+
describe("triggerHook namespace resolution", () => {
|
|
1915
|
+
it("should fall back to schema name when namespace is null", () => {
|
|
1916
|
+
const hooksSchema = schema("hooks_test", (s) =>
|
|
1917
|
+
s.addTable("events", (t) => t.addColumn("id", idColumn())),
|
|
1918
|
+
);
|
|
1919
|
+
const uow = createUnitOfWork(createMockCompiler(), createMockExecutor(), createMockDecoder());
|
|
1920
|
+
uow.registerSchema(hooksSchema, null);
|
|
1921
|
+
|
|
1922
|
+
const hooks = {
|
|
1923
|
+
onTest: (_payload: { value: string }) => {},
|
|
1924
|
+
};
|
|
1925
|
+
|
|
1926
|
+
const typedUow = uow.forSchema(hooksSchema, hooks);
|
|
1927
|
+
typedUow.triggerHook("onTest", { value: "ok" });
|
|
1928
|
+
|
|
1929
|
+
const triggeredHooks = uow.getTriggeredHooks();
|
|
1930
|
+
expect(triggeredHooks).toHaveLength(1);
|
|
1931
|
+
expect(triggeredHooks[0]).toMatchObject({
|
|
1932
|
+
namespace: hooksSchema.name,
|
|
1933
|
+
hookName: "onTest",
|
|
1934
|
+
payload: { value: "ok" },
|
|
1935
|
+
});
|
|
1936
|
+
});
|
|
1937
|
+
});
|