@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,4 +1,11 @@
|
|
|
1
1
|
import { describe, expect, expectTypeOf, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
RawColumnValues,
|
|
5
|
+
TableToColumnValues,
|
|
6
|
+
TableToInsertValues,
|
|
7
|
+
TableToUpdateValues,
|
|
8
|
+
} from "../query/simple-query-interface";
|
|
2
9
|
import {
|
|
3
10
|
column,
|
|
4
11
|
FragnoId,
|
|
@@ -8,15 +15,10 @@ import {
|
|
|
8
15
|
schema,
|
|
9
16
|
SchemaBuilder,
|
|
10
17
|
} from "./create";
|
|
11
|
-
import type {
|
|
12
|
-
RawColumnValues,
|
|
13
|
-
TableToColumnValues,
|
|
14
|
-
TableToInsertValues,
|
|
15
|
-
} from "../query/simple-query-interface";
|
|
16
18
|
|
|
17
19
|
describe("create", () => {
|
|
18
20
|
it("should create a table with columns using callback pattern", () => {
|
|
19
|
-
const userSchema = schema((s) => {
|
|
21
|
+
const userSchema = schema("user", (s) => {
|
|
20
22
|
return s.addTable("users", (t) => {
|
|
21
23
|
return t
|
|
22
24
|
.addColumn("id", idColumn())
|
|
@@ -45,7 +47,7 @@ describe("create", () => {
|
|
|
45
47
|
});
|
|
46
48
|
|
|
47
49
|
it("should create a schema with multiple tables using callback pattern", () => {
|
|
48
|
-
const userSchema = schema((s) => {
|
|
50
|
+
const userSchema = schema("user", (s) => {
|
|
49
51
|
return s
|
|
50
52
|
.addTable("users", (t) => {
|
|
51
53
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -61,12 +63,12 @@ describe("create", () => {
|
|
|
61
63
|
expect(userSchema.version).toBe(2); // Two addTable calls
|
|
62
64
|
expect(userSchema.tables.users).toBeDefined();
|
|
63
65
|
expect(userSchema.tables.posts).toBeDefined();
|
|
64
|
-
expect(userSchema.tables.users.
|
|
65
|
-
expect(userSchema.tables.posts.
|
|
66
|
+
expect(userSchema.tables.users.name).toBe("users");
|
|
67
|
+
expect(userSchema.tables.posts.name).toBe("posts");
|
|
66
68
|
});
|
|
67
69
|
|
|
68
70
|
it("should generate default values for columns", () => {
|
|
69
|
-
const testSchema = schema((s) => {
|
|
71
|
+
const testSchema = schema("test", (s) => {
|
|
70
72
|
return s.addTable("test", (t) => {
|
|
71
73
|
return t
|
|
72
74
|
.addColumn("id", idColumn())
|
|
@@ -91,7 +93,7 @@ describe("create", () => {
|
|
|
91
93
|
});
|
|
92
94
|
|
|
93
95
|
it("should increment schema version on each schema-level operation", () => {
|
|
94
|
-
const userSchema = schema((s) => {
|
|
96
|
+
const userSchema = schema("user", (s) => {
|
|
95
97
|
return s
|
|
96
98
|
.addTable("users", (t) => {
|
|
97
99
|
return t
|
|
@@ -108,7 +110,7 @@ describe("create", () => {
|
|
|
108
110
|
});
|
|
109
111
|
|
|
110
112
|
it("should support unique constraints on tables via unique method", () => {
|
|
111
|
-
const userSchema = schema((s) => {
|
|
113
|
+
const userSchema = schema("user", (s) => {
|
|
112
114
|
return s.addTable("users", (t) => {
|
|
113
115
|
return t
|
|
114
116
|
.addColumn("id", idColumn())
|
|
@@ -129,7 +131,7 @@ describe("create", () => {
|
|
|
129
131
|
});
|
|
130
132
|
|
|
131
133
|
it("should support creating indexes on tables", () => {
|
|
132
|
-
const userSchema = schema((s) => {
|
|
134
|
+
const userSchema = schema("user", (s) => {
|
|
133
135
|
return s.addTable("users", (t) => {
|
|
134
136
|
return t
|
|
135
137
|
.addColumn("id", idColumn())
|
|
@@ -157,9 +159,54 @@ describe("create", () => {
|
|
|
157
159
|
expect(usernameIndex!.unique).toBe(true);
|
|
158
160
|
});
|
|
159
161
|
|
|
162
|
+
it("should throw on duplicate table names", () => {
|
|
163
|
+
expect(() =>
|
|
164
|
+
schema("dup", (s) => {
|
|
165
|
+
return s
|
|
166
|
+
.addTable("users", (t) => {
|
|
167
|
+
return t.addColumn("id", idColumn());
|
|
168
|
+
})
|
|
169
|
+
.addTable("users", (t) => {
|
|
170
|
+
return t.addColumn("id", idColumn());
|
|
171
|
+
});
|
|
172
|
+
}),
|
|
173
|
+
).toThrow(/Duplicate table name "users"/);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it("should throw on duplicate index names across tables", () => {
|
|
177
|
+
expect(() =>
|
|
178
|
+
schema("dup", (s) => {
|
|
179
|
+
return s
|
|
180
|
+
.addTable("users", (t) => {
|
|
181
|
+
return t.addColumn("id", idColumn()).createIndex("idx_shared", ["id"]);
|
|
182
|
+
})
|
|
183
|
+
.addTable("posts", (t) => {
|
|
184
|
+
return t.addColumn("id", idColumn()).createIndex("idx_shared", ["id"]);
|
|
185
|
+
});
|
|
186
|
+
}),
|
|
187
|
+
).toThrow(/Duplicate index name "idx_shared"/);
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
it("should throw on duplicate index names added via alterTable", () => {
|
|
191
|
+
expect(() =>
|
|
192
|
+
schema("dup", (s) => {
|
|
193
|
+
return s
|
|
194
|
+
.addTable("users", (t) => {
|
|
195
|
+
return t.addColumn("id", idColumn()).createIndex("idx_email", ["id"]);
|
|
196
|
+
})
|
|
197
|
+
.addTable("posts", (t) => {
|
|
198
|
+
return t.addColumn("id", idColumn());
|
|
199
|
+
})
|
|
200
|
+
.alterTable("posts", (t) => {
|
|
201
|
+
return t.createIndex("idx_email", ["id"]);
|
|
202
|
+
});
|
|
203
|
+
}),
|
|
204
|
+
).toThrow(/Duplicate index name "idx_email"/);
|
|
205
|
+
});
|
|
206
|
+
|
|
160
207
|
it("should demonstrate manual many-to-many relation setup", () => {
|
|
161
208
|
// For many-to-many, create a junction table manually
|
|
162
|
-
const userSchema = schema((s) => {
|
|
209
|
+
const userSchema = schema("user", (s) => {
|
|
163
210
|
return s
|
|
164
211
|
.addTable("users", (t) => {
|
|
165
212
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -211,7 +258,7 @@ describe("create", () => {
|
|
|
211
258
|
});
|
|
212
259
|
|
|
213
260
|
it("should create a foreign key reference using addReference", () => {
|
|
214
|
-
const userSchema = schema((s) => {
|
|
261
|
+
const userSchema = schema("user", (s) => {
|
|
215
262
|
return s
|
|
216
263
|
.addTable("users", (t) => {
|
|
217
264
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -251,8 +298,137 @@ describe("create", () => {
|
|
|
251
298
|
expect(addReferenceOps[0].config.to).toEqual({ table: "users", column: "_internalId" });
|
|
252
299
|
});
|
|
253
300
|
|
|
301
|
+
it("should coerce external-id target columns to _internalId in addReference operations", () => {
|
|
302
|
+
const catalogSchema = schema("catalog", (s) => {
|
|
303
|
+
return s
|
|
304
|
+
.addTable("products", (t) => {
|
|
305
|
+
return t.addColumn("productId", idColumn()).addColumn("name", column("string"));
|
|
306
|
+
})
|
|
307
|
+
.addTable("orders", (t) => {
|
|
308
|
+
return t.addColumn("id", idColumn()).addColumn("productRef", referenceColumn());
|
|
309
|
+
})
|
|
310
|
+
.addReference("product", {
|
|
311
|
+
type: "one",
|
|
312
|
+
from: { table: "orders", column: "productRef" },
|
|
313
|
+
to: { table: "products", column: "productId" },
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
const addReferenceOps = catalogSchema.operations.filter((op) => op.type === "add-reference");
|
|
318
|
+
expect(addReferenceOps).toHaveLength(1);
|
|
319
|
+
expect(addReferenceOps[0].config.to).toEqual({ table: "products", column: "_internalId" });
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
it("should support join-only references with foreignKey:false", () => {
|
|
323
|
+
const userSchema = schema("user", (s) => {
|
|
324
|
+
return s
|
|
325
|
+
.addTable("users", (t) => {
|
|
326
|
+
return t
|
|
327
|
+
.addColumn("id", idColumn())
|
|
328
|
+
.addColumn("email", column("string"))
|
|
329
|
+
.createIndex("idx_users_email", ["email"]);
|
|
330
|
+
})
|
|
331
|
+
.addTable("invitations", (t) => {
|
|
332
|
+
return t
|
|
333
|
+
.addColumn("id", idColumn())
|
|
334
|
+
.addColumn("email", column("string"))
|
|
335
|
+
.createIndex("idx_inv_email", ["email"]);
|
|
336
|
+
})
|
|
337
|
+
.addReference("invitedUser", {
|
|
338
|
+
type: "one",
|
|
339
|
+
from: { table: "invitations", column: "email" },
|
|
340
|
+
to: { table: "users", column: "email" },
|
|
341
|
+
foreignKey: false,
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
const invitationsTable = userSchema.tables.invitations;
|
|
346
|
+
const invitedRelation = invitationsTable.relations["invitedUser"];
|
|
347
|
+
expect(invitedRelation).toBeDefined();
|
|
348
|
+
expect(invitedRelation.foreignKey).toBe(false);
|
|
349
|
+
expect(invitedRelation.on).toEqual([["email", "email"]]);
|
|
350
|
+
|
|
351
|
+
const addReferenceOps = userSchema.operations.filter((op) => op.type === "add-reference");
|
|
352
|
+
expect(addReferenceOps).toHaveLength(1);
|
|
353
|
+
expect(addReferenceOps[0].config.to).toEqual({ table: "users", column: "email" });
|
|
354
|
+
expect(addReferenceOps[0].config.foreignKey).toBe(false);
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
it("should coerce id to _internalId for join-only references", () => {
|
|
358
|
+
const userSchema = schema("user", (s) => {
|
|
359
|
+
return s
|
|
360
|
+
.addTable("users", (t) => {
|
|
361
|
+
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
362
|
+
})
|
|
363
|
+
.addTable("sessions", (t) => {
|
|
364
|
+
return t
|
|
365
|
+
.addColumn("id", idColumn())
|
|
366
|
+
.addColumn("userId", referenceColumn())
|
|
367
|
+
.createIndex("idx_sessions_user", ["userId"]);
|
|
368
|
+
})
|
|
369
|
+
.addReference("sessionUser", {
|
|
370
|
+
type: "one",
|
|
371
|
+
from: { table: "sessions", column: "userId" },
|
|
372
|
+
to: { table: "users", column: "id" },
|
|
373
|
+
foreignKey: false,
|
|
374
|
+
});
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
const addReferenceOps = userSchema.operations.filter((op) => op.type === "add-reference");
|
|
378
|
+
expect(addReferenceOps).toHaveLength(1);
|
|
379
|
+
expect(addReferenceOps[0].config.to).toEqual({ table: "users", column: "_internalId" });
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
it("should coerce left-side id to _internalId for join-only references", () => {
|
|
383
|
+
const userSchema = schema("user", (s) => {
|
|
384
|
+
return s
|
|
385
|
+
.addTable("users", (t) => {
|
|
386
|
+
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
387
|
+
})
|
|
388
|
+
.addTable("memberships", (t) => {
|
|
389
|
+
return t
|
|
390
|
+
.addColumn("id", idColumn())
|
|
391
|
+
.addColumn("userId", referenceColumn())
|
|
392
|
+
.createIndex("idx_memberships_user", ["userId"]);
|
|
393
|
+
})
|
|
394
|
+
.addReference("memberships", {
|
|
395
|
+
type: "many",
|
|
396
|
+
from: { table: "users", column: "id" },
|
|
397
|
+
to: { table: "memberships", column: "userId" },
|
|
398
|
+
foreignKey: false,
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
const addReferenceOps = userSchema.operations.filter((op) => op.type === "add-reference");
|
|
403
|
+
expect(addReferenceOps).toHaveLength(1);
|
|
404
|
+
expect(addReferenceOps[0].config.from).toEqual({ table: "users", column: "_internalId" });
|
|
405
|
+
|
|
406
|
+
const userRelation = userSchema.tables.users.relations["memberships"];
|
|
407
|
+
expect(userRelation.on).toEqual([["_internalId", "userId"]]);
|
|
408
|
+
});
|
|
409
|
+
|
|
410
|
+
it("should require indexes for join-only references", () => {
|
|
411
|
+
expect(() =>
|
|
412
|
+
schema("user", (s) => {
|
|
413
|
+
return s
|
|
414
|
+
.addTable("users", (t) => {
|
|
415
|
+
return t.addColumn("id", idColumn()).addColumn("email", column("string"));
|
|
416
|
+
})
|
|
417
|
+
.addTable("invitations", (t) => {
|
|
418
|
+
return t.addColumn("id", idColumn()).addColumn("email", column("string"));
|
|
419
|
+
})
|
|
420
|
+
.addReference("invitedUser", {
|
|
421
|
+
type: "one",
|
|
422
|
+
from: { table: "invitations", column: "email" },
|
|
423
|
+
to: { table: "users", column: "email" },
|
|
424
|
+
foreignKey: false,
|
|
425
|
+
});
|
|
426
|
+
}),
|
|
427
|
+
).toThrow(/indexed join columns/);
|
|
428
|
+
});
|
|
429
|
+
|
|
254
430
|
it("should support multiple references by calling addReference multiple times", () => {
|
|
255
|
-
const userSchema = schema((s) => {
|
|
431
|
+
const userSchema = schema("user", (s) => {
|
|
256
432
|
return s
|
|
257
433
|
.addTable("users", (t) => {
|
|
258
434
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -305,7 +481,7 @@ describe("create", () => {
|
|
|
305
481
|
});
|
|
306
482
|
|
|
307
483
|
it("should support self-referencing foreign keys", () => {
|
|
308
|
-
const userSchema = schema((s) => {
|
|
484
|
+
const userSchema = schema("user", (s) => {
|
|
309
485
|
return s
|
|
310
486
|
.addTable("users", (t) => {
|
|
311
487
|
return t
|
|
@@ -340,7 +516,7 @@ describe("create", () => {
|
|
|
340
516
|
});
|
|
341
517
|
|
|
342
518
|
it("should allow altering an existing table to add columns", () => {
|
|
343
|
-
const userSchema = schema((s) => {
|
|
519
|
+
const userSchema = schema("user", (s) => {
|
|
344
520
|
return s
|
|
345
521
|
.addTable("users", (t) => {
|
|
346
522
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -381,7 +557,7 @@ describe("create", () => {
|
|
|
381
557
|
});
|
|
382
558
|
|
|
383
559
|
it("should allow altering an existing table to add indexes", () => {
|
|
384
|
-
const userSchema = schema((s) => {
|
|
560
|
+
const userSchema = schema("user", (s) => {
|
|
385
561
|
return s
|
|
386
562
|
.addTable("users", (t) => {
|
|
387
563
|
return t
|
|
@@ -406,7 +582,7 @@ describe("create", () => {
|
|
|
406
582
|
});
|
|
407
583
|
|
|
408
584
|
it("should allow multiple alterTable calls on the same table", () => {
|
|
409
|
-
const userSchema = schema((s) => {
|
|
585
|
+
const userSchema = schema("user", (s) => {
|
|
410
586
|
return s
|
|
411
587
|
.addTable("users", (t) => {
|
|
412
588
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -444,8 +620,36 @@ describe("create", () => {
|
|
|
444
620
|
expect(userSchema.version).toBe(3);
|
|
445
621
|
});
|
|
446
622
|
|
|
623
|
+
it("should preserve user-defined columns after alterTable type updates", () => {
|
|
624
|
+
const userSchema = schema("user", (s) => {
|
|
625
|
+
return s
|
|
626
|
+
.addTable("users", (t) => {
|
|
627
|
+
return t
|
|
628
|
+
.addColumn("id", idColumn())
|
|
629
|
+
.addColumn("email", column("string"))
|
|
630
|
+
.addColumn("passwordHash", column("string"));
|
|
631
|
+
})
|
|
632
|
+
.alterTable("users", (t) => {
|
|
633
|
+
expectTypeOf(t.alterColumn).parameter(0).toEqualTypeOf<"email" | "passwordHash">();
|
|
634
|
+
return t.alterColumn("passwordHash").nullable();
|
|
635
|
+
});
|
|
636
|
+
});
|
|
637
|
+
|
|
638
|
+
type UserColumns = typeof userSchema.tables.users.columns;
|
|
639
|
+
type UserColumnKeys = keyof UserColumns;
|
|
640
|
+
|
|
641
|
+
expectTypeOf<UserColumnKeys>().not.toEqualTypeOf<string>();
|
|
642
|
+
expectTypeOf<UserColumnKeys>().toEqualTypeOf<"id" | "email" | "passwordHash">();
|
|
643
|
+
|
|
644
|
+
type UpdateValues = TableToUpdateValues<typeof userSchema.tables.users>;
|
|
645
|
+
expectTypeOf<UpdateValues>().toMatchObjectType<{
|
|
646
|
+
email?: string;
|
|
647
|
+
passwordHash?: string | null;
|
|
648
|
+
}>();
|
|
649
|
+
});
|
|
650
|
+
|
|
447
651
|
it("should preserve indexes when altering a table", () => {
|
|
448
|
-
const userSchema = schema((s) => {
|
|
652
|
+
const userSchema = schema("user", (s) => {
|
|
449
653
|
return s
|
|
450
654
|
.addTable("users", (t) => {
|
|
451
655
|
return t
|
|
@@ -476,7 +680,7 @@ describe("create", () => {
|
|
|
476
680
|
});
|
|
477
681
|
|
|
478
682
|
it("should not duplicate existing indexes when altering a table", () => {
|
|
479
|
-
const userSchema = schema((s) => {
|
|
683
|
+
const userSchema = schema("user", (s) => {
|
|
480
684
|
return s
|
|
481
685
|
.addTable("users", (t) => {
|
|
482
686
|
return t
|
|
@@ -514,7 +718,7 @@ describe("create", () => {
|
|
|
514
718
|
});
|
|
515
719
|
|
|
516
720
|
it("should only add new indexes when altering a table with additional indexes", () => {
|
|
517
|
-
const userSchema = schema((s) => {
|
|
721
|
+
const userSchema = schema("user", (s) => {
|
|
518
722
|
return s
|
|
519
723
|
.addTable("users", (t) => {
|
|
520
724
|
return t
|
|
@@ -558,7 +762,7 @@ describe("create", () => {
|
|
|
558
762
|
});
|
|
559
763
|
|
|
560
764
|
it("Simple user table types", () => {
|
|
561
|
-
const _userSchema = schema((s) => {
|
|
765
|
+
const _userSchema = schema("_user", (s) => {
|
|
562
766
|
return s.addTable("users", (t) => {
|
|
563
767
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
564
768
|
});
|
|
@@ -585,7 +789,7 @@ describe("create", () => {
|
|
|
585
789
|
});
|
|
586
790
|
|
|
587
791
|
it("Simple user table types after alter table statements", () => {
|
|
588
|
-
const _userSchema = schema((s) => {
|
|
792
|
+
const _userSchema = schema("_user", (s) => {
|
|
589
793
|
return s
|
|
590
794
|
.addTable("users", (t) => {
|
|
591
795
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -636,13 +840,13 @@ describe("referenceColumn", () => {
|
|
|
636
840
|
|
|
637
841
|
describe("SchemaBuilder with existing schema", () => {
|
|
638
842
|
it("should initialize with an existing schema", () => {
|
|
639
|
-
const existingSchema = schema((s) => {
|
|
843
|
+
const existingSchema = schema("existing", (s) => {
|
|
640
844
|
return s.addTable("users", (t) => {
|
|
641
845
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
642
846
|
});
|
|
643
847
|
});
|
|
644
848
|
|
|
645
|
-
const extendedSchema = new SchemaBuilder(existingSchema)
|
|
849
|
+
const extendedSchema = new SchemaBuilder(existingSchema.name, existingSchema)
|
|
646
850
|
.addTable("posts", (t) => {
|
|
647
851
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
648
852
|
})
|
|
@@ -655,7 +859,7 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
655
859
|
});
|
|
656
860
|
|
|
657
861
|
it("should preserve operations from existing schema", () => {
|
|
658
|
-
const existingSchema = schema((s) => {
|
|
862
|
+
const existingSchema = schema("existing", (s) => {
|
|
659
863
|
return s
|
|
660
864
|
.addTable("users", (t) => {
|
|
661
865
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -665,7 +869,7 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
665
869
|
});
|
|
666
870
|
});
|
|
667
871
|
|
|
668
|
-
const extendedSchema = new SchemaBuilder(existingSchema)
|
|
872
|
+
const extendedSchema = new SchemaBuilder(existingSchema.name, existingSchema)
|
|
669
873
|
.addTable("comments", (t) => {
|
|
670
874
|
return t.addColumn("id", idColumn()).addColumn("text", column("string"));
|
|
671
875
|
})
|
|
@@ -681,19 +885,19 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
681
885
|
});
|
|
682
886
|
|
|
683
887
|
it("should merge multiple schemas using mergeWithExistingSchema", () => {
|
|
684
|
-
const schema1 = schema((s) => {
|
|
888
|
+
const schema1 = schema("schema1", (s) => {
|
|
685
889
|
return s.addTable("users", (t) => {
|
|
686
890
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
687
891
|
});
|
|
688
892
|
});
|
|
689
893
|
|
|
690
|
-
const schema2 = schema((s) => {
|
|
894
|
+
const schema2 = schema("schema2", (s) => {
|
|
691
895
|
return s.addTable("posts", (t) => {
|
|
692
896
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
693
897
|
});
|
|
694
898
|
});
|
|
695
899
|
|
|
696
|
-
const mergedSchema = new SchemaBuilder()
|
|
900
|
+
const mergedSchema = new SchemaBuilder("merged")
|
|
697
901
|
.mergeWithExistingSchema(schema1)
|
|
698
902
|
.mergeWithExistingSchema(schema2)
|
|
699
903
|
.build();
|
|
@@ -704,20 +908,62 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
704
908
|
expect(mergedSchema.operations).toHaveLength(2);
|
|
705
909
|
});
|
|
706
910
|
|
|
911
|
+
it("should throw on duplicate table names when merging schemas", () => {
|
|
912
|
+
const schema1 = schema("schema1", (s) => {
|
|
913
|
+
return s.addTable("users", (t) => {
|
|
914
|
+
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
915
|
+
});
|
|
916
|
+
});
|
|
917
|
+
|
|
918
|
+
const schema2 = schema("schema2", (s) => {
|
|
919
|
+
return s.addTable("users", (t) => {
|
|
920
|
+
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
921
|
+
});
|
|
922
|
+
});
|
|
923
|
+
|
|
924
|
+
expect(() =>
|
|
925
|
+
new SchemaBuilder("merged").mergeWithExistingSchema(schema1).mergeWithExistingSchema(schema2),
|
|
926
|
+
).toThrow(/Duplicate table name "users"/);
|
|
927
|
+
});
|
|
928
|
+
|
|
929
|
+
it("should throw on duplicate index names when merging schemas", () => {
|
|
930
|
+
const schema1 = schema("schema1", (s) => {
|
|
931
|
+
return s.addTable("users", (t) => {
|
|
932
|
+
return t
|
|
933
|
+
.addColumn("id", idColumn())
|
|
934
|
+
.addColumn("name", column("string"))
|
|
935
|
+
.createIndex("idx_shared", ["name"]);
|
|
936
|
+
});
|
|
937
|
+
});
|
|
938
|
+
|
|
939
|
+
const schema2 = schema("schema2", (s) => {
|
|
940
|
+
return s.addTable("posts", (t) => {
|
|
941
|
+
return t
|
|
942
|
+
.addColumn("id", idColumn())
|
|
943
|
+
.addColumn("title", column("string"))
|
|
944
|
+
.createIndex("idx_shared", ["title"]);
|
|
945
|
+
});
|
|
946
|
+
});
|
|
947
|
+
|
|
948
|
+
expect(() =>
|
|
949
|
+
new SchemaBuilder("merged").mergeWithExistingSchema(schema1).mergeWithExistingSchema(schema2),
|
|
950
|
+
).toThrow(/Duplicate index name "idx_shared"/);
|
|
951
|
+
});
|
|
952
|
+
|
|
707
953
|
it("should extend merged schema with new tables", () => {
|
|
708
|
-
const schema1 = schema((s) => {
|
|
954
|
+
const schema1 = schema("schema1", (s) => {
|
|
709
955
|
return s.addTable("users", (t) => {
|
|
710
956
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
711
957
|
});
|
|
712
958
|
});
|
|
713
959
|
|
|
714
|
-
const schema2 = schema((s) => {
|
|
960
|
+
const schema2 = schema("schema2", (s) => {
|
|
715
961
|
return s.addTable("posts", (t) => {
|
|
716
962
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
717
963
|
});
|
|
718
964
|
});
|
|
719
965
|
|
|
720
|
-
const extended = new SchemaBuilder()
|
|
966
|
+
const extended = new SchemaBuilder("extended")
|
|
721
967
|
.mergeWithExistingSchema(schema1)
|
|
722
968
|
.mergeWithExistingSchema(schema2)
|
|
723
969
|
.addTable("comments", (t) => {
|
|
@@ -733,19 +979,19 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
733
979
|
});
|
|
734
980
|
|
|
735
981
|
it("should use mergeWithExistingSchema method to merge schemas", () => {
|
|
736
|
-
const schema1 = schema((s) => {
|
|
982
|
+
const schema1 = schema("schema1", (s) => {
|
|
737
983
|
return s.addTable("users", (t) => {
|
|
738
984
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
739
985
|
});
|
|
740
986
|
});
|
|
741
987
|
|
|
742
|
-
const schema2 = schema((s) => {
|
|
988
|
+
const schema2 = schema("schema2", (s) => {
|
|
743
989
|
return s.addTable("posts", (t) => {
|
|
744
990
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
745
991
|
});
|
|
746
992
|
});
|
|
747
993
|
|
|
748
|
-
const combined = new SchemaBuilder()
|
|
994
|
+
const combined = new SchemaBuilder("combined")
|
|
749
995
|
.mergeWithExistingSchema(schema1)
|
|
750
996
|
.mergeWithExistingSchema(schema2)
|
|
751
997
|
.addTable("comments", (t) => {
|
|
@@ -761,13 +1007,13 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
761
1007
|
});
|
|
762
1008
|
|
|
763
1009
|
it("should merge operations from multiple schemas in order", () => {
|
|
764
|
-
const schema1 = schema((s) => {
|
|
1010
|
+
const schema1 = schema("schema1", (s) => {
|
|
765
1011
|
return s.addTable("users", (t) => {
|
|
766
1012
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
767
1013
|
});
|
|
768
1014
|
});
|
|
769
1015
|
|
|
770
|
-
const schema2 = schema((s) => {
|
|
1016
|
+
const schema2 = schema("schema2", (s) => {
|
|
771
1017
|
return s
|
|
772
1018
|
.addTable("posts", (t) => {
|
|
773
1019
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
@@ -777,7 +1023,7 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
777
1023
|
});
|
|
778
1024
|
});
|
|
779
1025
|
|
|
780
|
-
const mergedSchema = new SchemaBuilder()
|
|
1026
|
+
const mergedSchema = new SchemaBuilder("merged")
|
|
781
1027
|
.mergeWithExistingSchema(schema1)
|
|
782
1028
|
.mergeWithExistingSchema(schema2)
|
|
783
1029
|
.build();
|
|
@@ -790,25 +1036,25 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
790
1036
|
});
|
|
791
1037
|
|
|
792
1038
|
it("should merge three or more schemas", () => {
|
|
793
|
-
const schema1 = schema((s) => {
|
|
1039
|
+
const schema1 = schema("schema1", (s) => {
|
|
794
1040
|
return s.addTable("users", (t) => {
|
|
795
1041
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
796
1042
|
});
|
|
797
1043
|
});
|
|
798
1044
|
|
|
799
|
-
const schema2 = schema((s) => {
|
|
1045
|
+
const schema2 = schema("schema2", (s) => {
|
|
800
1046
|
return s.addTable("posts", (t) => {
|
|
801
1047
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
802
1048
|
});
|
|
803
1049
|
});
|
|
804
1050
|
|
|
805
|
-
const schema3 = schema((s) => {
|
|
1051
|
+
const schema3 = schema("schema3", (s) => {
|
|
806
1052
|
return s.addTable("comments", (t) => {
|
|
807
1053
|
return t.addColumn("id", idColumn()).addColumn("text", column("string"));
|
|
808
1054
|
});
|
|
809
1055
|
});
|
|
810
1056
|
|
|
811
|
-
const mergedSchema = new SchemaBuilder()
|
|
1057
|
+
const mergedSchema = new SchemaBuilder("merged")
|
|
812
1058
|
.mergeWithExistingSchema(schema1)
|
|
813
1059
|
.mergeWithExistingSchema(schema2)
|
|
814
1060
|
.mergeWithExistingSchema(schema3)
|
|
@@ -822,13 +1068,13 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
822
1068
|
});
|
|
823
1069
|
|
|
824
1070
|
it("should handle single schema merge", () => {
|
|
825
|
-
const schema1 = schema((s) => {
|
|
1071
|
+
const schema1 = schema("schema1", (s) => {
|
|
826
1072
|
return s.addTable("users", (t) => {
|
|
827
1073
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
828
1074
|
});
|
|
829
1075
|
});
|
|
830
1076
|
|
|
831
|
-
const mergedSchema = new SchemaBuilder().mergeWithExistingSchema(schema1).build();
|
|
1077
|
+
const mergedSchema = new SchemaBuilder("merged").mergeWithExistingSchema(schema1).build();
|
|
832
1078
|
|
|
833
1079
|
expect(mergedSchema.tables.users).toBeDefined();
|
|
834
1080
|
expect(mergedSchema.version).toBe(1);
|