@fragno-dev/db 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +202 -140
- package/CHANGELOG.md +35 -0
- package/README.md +30 -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 +27 -9
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -1
- package/dist/adapters/generic-sql/generic-sql-adapter.js +55 -16
- package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js +129 -3
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
- package/dist/adapters/generic-sql/migration/dialect/mysql.js +24 -5
- package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
- package/dist/adapters/generic-sql/migration/dialect/postgres.js +6 -5
- package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js +21 -10
- package/dist/adapters/generic-sql/migration/dialect/sqlite.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 +8 -8
- package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
- package/dist/adapters/generic-sql/migration/sql-generator.js +74 -51
- package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +6 -5
- 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/generic-sql-uow-operation-compiler.js +25 -17
- 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 +15 -12
- package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
- package/dist/adapters/generic-sql/query/where-builder.js +39 -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 +7 -3
- package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
- package/dist/adapters/generic-sql/uow-encoder.js +28 -8
- package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
- package/dist/adapters/in-memory/condition-evaluator.js +131 -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 +176 -0
- package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -0
- package/dist/adapters/in-memory/in-memory-uow.js +648 -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 +28 -0
- package/dist/adapters/in-memory/options.d.ts.map +1 -0
- package/dist/adapters/in-memory/options.js +61 -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.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/db-fragment-definition-builder.d.ts +18 -7
- package/dist/db-fragment-definition-builder.d.ts.map +1 -1
- package/dist/db-fragment-definition-builder.js +116 -54
- package/dist/db-fragment-definition-builder.js.map +1 -1
- package/dist/dispatchers/cloudflare-do/index.d.ts +26 -0
- package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -0
- package/dist/dispatchers/cloudflare-do/index.js +63 -0
- package/dist/dispatchers/cloudflare-do/index.js.map +1 -0
- package/dist/dispatchers/node/index.d.ts +17 -0
- package/dist/dispatchers/node/index.d.ts.map +1 -0
- package/dist/dispatchers/node/index.js +59 -0
- package/dist/dispatchers/node/index.js.map +1 -0
- package/dist/fragments/internal-fragment.d.ts +79 -2
- package/dist/fragments/internal-fragment.d.ts.map +1 -1
- package/dist/fragments/internal-fragment.js +150 -32
- package/dist/fragments/internal-fragment.js.map +1 -1
- package/dist/fragments/internal-fragment.routes.js +29 -0
- package/dist/fragments/internal-fragment.routes.js.map +1 -0
- package/dist/fragments/internal-fragment.schema.d.ts +9 -0
- package/dist/fragments/internal-fragment.schema.d.ts.map +1 -0
- package/dist/fragments/internal-fragment.schema.js +22 -0
- package/dist/fragments/internal-fragment.schema.js.map +1 -0
- package/dist/hooks/durable-hooks-processor.d.ts +14 -0
- package/dist/hooks/durable-hooks-processor.d.ts.map +1 -0
- package/dist/hooks/durable-hooks-processor.js +32 -0
- package/dist/hooks/durable-hooks-processor.js.map +1 -0
- package/dist/hooks/hooks.d.ts +42 -1
- package/dist/hooks/hooks.d.ts.map +1 -1
- package/dist/hooks/hooks.js +72 -6
- package/dist/hooks/hooks.js.map +1 -1
- package/dist/migration-engine/auto-from-schema.js +14 -11
- 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 +72 -33
- package/dist/migration-engine/generation-engine.js.map +1 -1
- package/dist/migration-engine/shared.js.map +1 -1
- package/dist/mod.d.ts +15 -8
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +14 -8
- 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/node_modules/.pnpm/{rou3@0.7.10 → rou3@0.7.12}/node_modules/rou3/dist/index.js +8 -5
- package/dist/node_modules/.pnpm/rou3@0.7.12/node_modules/rou3/dist/index.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 +52 -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/packages/fragno/dist/api/fragment-definition-builder.js +3 -2
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -1
- package/dist/packages/fragno/dist/api/fragment-instantiator.js +164 -20
- package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
- package/dist/packages/fragno/dist/api/request-input-context.js +67 -0
- package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -1
- package/dist/packages/fragno/dist/api/route.js +14 -1
- package/dist/packages/fragno/dist/api/route.js.map +1 -1
- package/dist/packages/fragno/dist/internal/trace-context.js +12 -0
- package/dist/packages/fragno/dist/internal/trace-context.js.map +1 -0
- package/dist/query/column-defaults.js +20 -4
- package/dist/query/column-defaults.js.map +1 -1
- package/dist/query/cursor.d.ts +3 -1
- package/dist/query/cursor.d.ts.map +1 -1
- package/dist/query/cursor.js +45 -14
- package/dist/query/cursor.js.map +1 -1
- package/dist/query/db-now.d.ts +8 -0
- package/dist/query/db-now.d.ts.map +1 -0
- package/dist/query/db-now.js +7 -0
- package/dist/query/db-now.js.map +1 -0
- package/dist/query/serialize/create-sql-serializer.js +3 -2
- 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 +55 -11
- 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 +6 -1
- package/dist/query/simple-query-interface.d.ts.map +1 -1
- 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 +11 -6
- 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 +50 -14
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.js +86 -5
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
- package/dist/query/value-decoding.js +9 -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 +38 -14
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +81 -42
- 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 +3 -2
- 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} +82 -56
- 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 +296 -0
- package/dist/schema-output/prisma.js.map +1 -0
- package/dist/util/default-database-adapter.js +61 -0
- package/dist/util/default-database-adapter.js.map +1 -0
- package/dist/with-database.d.ts +1 -1
- package/dist/with-database.d.ts.map +1 -1
- package/dist/with-database.js +12 -3
- package/dist/with-database.js.map +1 -1
- package/package.json +43 -28
- package/src/adapters/adapters.ts +30 -24
- package/src/adapters/drizzle/migrate-drizzle.test.ts +54 -33
- package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +599 -0
- package/src/adapters/drizzle/test-utils.ts +12 -8
- package/src/adapters/generic-sql/driver-config.ts +38 -0
- package/src/adapters/generic-sql/generic-sql-adapter.test.ts +5 -5
- package/src/adapters/generic-sql/generic-sql-adapter.ts +110 -24
- package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +54 -0
- package/src/adapters/generic-sql/generic-sql-uow-executor.ts +231 -3
- package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +118 -0
- package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +26 -8
- package/src/adapters/generic-sql/migration/dialect/mysql.ts +46 -8
- package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +25 -7
- package/src/adapters/generic-sql/migration/dialect/postgres.ts +8 -4
- package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +47 -8
- package/src/adapters/generic-sql/migration/dialect/sqlite.ts +27 -12
- package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +128 -39
- package/src/adapters/generic-sql/migration/prepared-migrations.ts +15 -8
- package/src/adapters/generic-sql/migration/sql-generator.ts +142 -65
- package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +9 -6
- package/src/adapters/generic-sql/query/cursor-utils.test.ts +271 -0
- package/src/adapters/generic-sql/query/cursor-utils.ts +41 -6
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +27 -27
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +38 -24
- package/src/adapters/generic-sql/query/select-builder.test.ts +15 -11
- package/src/adapters/generic-sql/query/select-builder.ts +6 -2
- package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +52 -2
- package/src/adapters/generic-sql/query/sql-query-compiler.ts +50 -15
- package/src/adapters/generic-sql/query/where-builder.test.ts +91 -17
- package/src/adapters/generic-sql/query/where-builder.ts +90 -38
- package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +6 -6
- package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +806 -0
- package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +11 -11
- package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +10 -10
- package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +7 -7
- package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +6 -6
- package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
- package/src/adapters/generic-sql/uow-decoder.test.ts +1 -1
- package/src/adapters/generic-sql/uow-decoder.ts +21 -3
- package/src/adapters/generic-sql/uow-encoder.test.ts +33 -2
- package/src/adapters/generic-sql/uow-encoder.ts +50 -11
- package/src/adapters/in-memory/condition-evaluator.test.ts +193 -0
- package/src/adapters/in-memory/condition-evaluator.ts +275 -0
- package/src/adapters/in-memory/errors.ts +20 -0
- package/src/adapters/in-memory/in-memory-adapter.ts +277 -0
- package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +296 -0
- package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +100 -0
- package/src/adapters/in-memory/in-memory-uow.ts +1348 -0
- package/src/adapters/in-memory/index.ts +3 -0
- package/src/adapters/in-memory/options.test.ts +41 -0
- package/src/adapters/in-memory/options.ts +87 -0
- package/src/adapters/in-memory/reference-resolution.test.ts +50 -0
- package/src/adapters/in-memory/reference-resolution.ts +67 -0
- package/src/adapters/in-memory/sorted-array-index.test.ts +123 -0
- package/src/adapters/in-memory/sorted-array-index.ts +228 -0
- package/src/adapters/in-memory/store.test.ts +68 -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 +57 -0
- package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1163 -0
- package/src/adapters/shared/from-unit-of-work-compiler.ts +3 -1
- package/src/adapters/shared/uow-operation-compiler.ts +26 -16
- package/src/adapters/sql/index.ts +12 -0
- package/src/db-fragment-definition-builder.test.ts +30 -12
- package/src/db-fragment-definition-builder.ts +142 -73
- package/src/db-fragment-instantiator.test.ts +105 -13
- package/src/db-fragment-integration.test.ts +9 -7
- package/src/dispatchers/cloudflare-do/index.test.ts +73 -0
- package/src/dispatchers/cloudflare-do/index.ts +104 -0
- package/src/dispatchers/node/index.test.ts +91 -0
- package/src/dispatchers/node/index.ts +87 -0
- package/src/fragments/internal-fragment.routes.ts +42 -0
- package/src/fragments/internal-fragment.schema.ts +51 -0
- package/src/fragments/internal-fragment.test.ts +458 -8
- package/src/fragments/internal-fragment.ts +322 -63
- package/src/hooks/durable-hooks-processor.test.ts +117 -0
- package/src/hooks/durable-hooks-processor.ts +67 -0
- package/src/hooks/hooks.test.ts +165 -5
- package/src/hooks/hooks.ts +197 -9
- package/src/migration-engine/auto-from-schema.test.ts +14 -14
- package/src/migration-engine/auto-from-schema.ts +5 -2
- package/src/migration-engine/create.test.ts +2 -2
- package/src/migration-engine/generation-engine.test.ts +229 -104
- package/src/migration-engine/generation-engine.ts +94 -64
- package/src/migration-engine/shared.ts +1 -0
- package/src/mod.ts +64 -26
- package/src/naming/sql-naming.ts +180 -0
- package/src/outbox/outbox-builder.ts +241 -0
- package/src/outbox/outbox.test.ts +253 -0
- package/src/outbox/outbox.ts +137 -0
- package/src/query/column-defaults.ts +41 -3
- package/src/query/condition-builder.test.ts +3 -3
- package/src/query/cursor.test.ts +116 -18
- package/src/query/cursor.ts +75 -26
- package/src/query/db-now.ts +6 -0
- package/src/query/query-type.test.ts +2 -2
- package/src/query/serialize/create-sql-serializer.ts +7 -2
- package/src/query/serialize/dialect/mysql-serializer.ts +12 -4
- package/src/query/serialize/dialect/postgres-serializer.ts +34 -4
- package/src/query/serialize/dialect/sqlite-serializer.test.ts +51 -1
- package/src/query/serialize/dialect/sqlite-serializer.ts +92 -9
- package/src/query/serialize/sql-serializer.ts +4 -4
- package/src/query/simple-query-interface.ts +5 -0
- package/src/query/unit-of-work/execute-unit-of-work.test.ts +25 -1
- package/src/query/unit-of-work/execute-unit-of-work.ts +25 -8
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +12 -12
- package/src/query/unit-of-work/unit-of-work-types.test.ts +1 -1
- package/src/query/unit-of-work/unit-of-work.test.ts +168 -37
- package/src/query/unit-of-work/unit-of-work.ts +203 -18
- package/src/query/value-decoding.test.ts +13 -2
- package/src/query/value-decoding.ts +17 -4
- package/src/query/value-encoding.test.ts +85 -2
- package/src/query/value-encoding.ts +56 -6
- package/src/schema/create.test.ts +129 -42
- package/src/schema/create.ts +185 -47
- package/src/schema/generate-id.test.ts +2 -2
- package/src/schema/generate-id.ts +2 -2
- package/src/schema/serialize.test.ts +14 -2
- package/src/schema/type-conversion/create-sql-type-mapper.ts +7 -2
- package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
- package/src/schema/type-conversion/type-mapping.test.ts +25 -1
- package/src/schema/validator.test.ts +197 -0
- package/src/schema/validator.ts +231 -0
- package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +179 -129
- package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +143 -93
- package/src/schema-output/prisma.test.ts +536 -0
- package/src/schema-output/prisma.ts +573 -0
- package/src/util/default-database-adapter.ts +106 -0
- package/src/with-database.ts +22 -3
- package/tsdown.config.ts +6 -4
- 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.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,6 +1,11 @@
|
|
|
1
1
|
import type { AnyTable, AnyColumn } from "../schema/create";
|
|
2
2
|
import { FragnoId, FragnoReference } from "../schema/create";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
generateDatabaseDefault,
|
|
5
|
+
generateRuntimeDefault,
|
|
6
|
+
type RuntimeDefaultContext,
|
|
7
|
+
} from "./column-defaults";
|
|
8
|
+
import type { NamingResolver } from "../naming/sql-naming";
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
11
|
* Marker class for reference column values that need subquery resolution.
|
|
@@ -104,6 +109,8 @@ export function encodeValues(
|
|
|
104
109
|
values: Record<string, unknown>,
|
|
105
110
|
table: AnyTable,
|
|
106
111
|
generateDefault: boolean,
|
|
112
|
+
runtimeDefaults: RuntimeDefaultContext = {},
|
|
113
|
+
resolver?: NamingResolver,
|
|
107
114
|
): Record<string, unknown> {
|
|
108
115
|
const result: Record<string, unknown> = {};
|
|
109
116
|
|
|
@@ -119,10 +126,12 @@ export function encodeValues(
|
|
|
119
126
|
if (generateDefault && value === undefined) {
|
|
120
127
|
// Only generate runtime defaults (defaultTo$), not static defaults (defaultTo).
|
|
121
128
|
// Static defaults should be handled by the database via DEFAULT constraints.
|
|
122
|
-
value = generateRuntimeDefault(col);
|
|
129
|
+
value = generateRuntimeDefault(col, runtimeDefaults);
|
|
123
130
|
}
|
|
124
131
|
|
|
125
132
|
if (value !== undefined) {
|
|
133
|
+
const physicalColumnName = resolver ? resolver.getColumnName(table.name, col.name) : col.name;
|
|
134
|
+
|
|
126
135
|
// Handle reference columns: strings or FragnoIds without internal IDs need subqueries
|
|
127
136
|
if (col.role === "reference") {
|
|
128
137
|
let needsSubquery = false;
|
|
@@ -138,11 +147,11 @@ export function encodeValues(
|
|
|
138
147
|
externalIdForSubquery = value.externalId;
|
|
139
148
|
} else if (value instanceof FragnoId && value.internalId !== undefined) {
|
|
140
149
|
// FragnoId with internal ID - use it directly (will be serialized later)
|
|
141
|
-
result[
|
|
150
|
+
result[physicalColumnName] = value.internalId;
|
|
142
151
|
continue;
|
|
143
152
|
} else if (value instanceof FragnoReference) {
|
|
144
153
|
// FragnoReference - use internal ID directly (will be serialized later)
|
|
145
|
-
result[
|
|
154
|
+
result[physicalColumnName] = value.internalId;
|
|
146
155
|
continue;
|
|
147
156
|
}
|
|
148
157
|
|
|
@@ -151,7 +160,10 @@ export function encodeValues(
|
|
|
151
160
|
rel.on.some(([localCol]) => localCol === k),
|
|
152
161
|
);
|
|
153
162
|
if (relation) {
|
|
154
|
-
result[
|
|
163
|
+
result[physicalColumnName] = new ReferenceSubquery(
|
|
164
|
+
relation.table,
|
|
165
|
+
externalIdForSubquery!,
|
|
166
|
+
);
|
|
155
167
|
continue;
|
|
156
168
|
}
|
|
157
169
|
throw new Error(`Reference column ${k} not found in table ${table.name}`);
|
|
@@ -160,9 +172,47 @@ export function encodeValues(
|
|
|
160
172
|
|
|
161
173
|
// Resolve FragnoId/FragnoReference to primitive values (serialization happens later)
|
|
162
174
|
const resolvedValue = resolveFragnoIdValue(value, col);
|
|
163
|
-
result[
|
|
175
|
+
result[physicalColumnName] = resolvedValue;
|
|
164
176
|
}
|
|
165
177
|
}
|
|
166
178
|
|
|
167
179
|
return result;
|
|
168
180
|
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Encode values and apply database defaults in-process.
|
|
184
|
+
*
|
|
185
|
+
* This is intended for adapters that cannot rely on database DEFAULT constraints,
|
|
186
|
+
* such as the in-memory adapter.
|
|
187
|
+
*
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
190
|
+
export function encodeValuesWithDbDefaults(
|
|
191
|
+
values: Record<string, unknown>,
|
|
192
|
+
table: AnyTable,
|
|
193
|
+
runtimeDefaults: RuntimeDefaultContext = {},
|
|
194
|
+
resolver?: NamingResolver,
|
|
195
|
+
): Record<string, unknown> {
|
|
196
|
+
const resolved = encodeValues(values, table, true, runtimeDefaults, resolver);
|
|
197
|
+
|
|
198
|
+
for (const columnKey of Object.keys(table.columns)) {
|
|
199
|
+
const column = table.columns[columnKey];
|
|
200
|
+
if (column.role === "internal-id") {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const physicalColumnName = resolver
|
|
205
|
+
? resolver.getColumnName(table.name, column.name)
|
|
206
|
+
: column.name;
|
|
207
|
+
if (Object.prototype.hasOwnProperty.call(resolved, physicalColumnName)) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
const fallback = generateDatabaseDefault(column, runtimeDefaults);
|
|
212
|
+
if (fallback !== undefined) {
|
|
213
|
+
resolved[physicalColumnName] = fallback;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return resolved;
|
|
218
|
+
}
|
|
@@ -16,7 +16,7 @@ import type {
|
|
|
16
16
|
|
|
17
17
|
describe("create", () => {
|
|
18
18
|
it("should create a table with columns using callback pattern", () => {
|
|
19
|
-
const userSchema = schema((s) => {
|
|
19
|
+
const userSchema = schema("user", (s) => {
|
|
20
20
|
return s.addTable("users", (t) => {
|
|
21
21
|
return t
|
|
22
22
|
.addColumn("id", idColumn())
|
|
@@ -45,7 +45,7 @@ describe("create", () => {
|
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
it("should create a schema with multiple tables using callback pattern", () => {
|
|
48
|
-
const userSchema = schema((s) => {
|
|
48
|
+
const userSchema = schema("user", (s) => {
|
|
49
49
|
return s
|
|
50
50
|
.addTable("users", (t) => {
|
|
51
51
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -61,12 +61,12 @@ describe("create", () => {
|
|
|
61
61
|
expect(userSchema.version).toBe(2); // Two addTable calls
|
|
62
62
|
expect(userSchema.tables.users).toBeDefined();
|
|
63
63
|
expect(userSchema.tables.posts).toBeDefined();
|
|
64
|
-
expect(userSchema.tables.users.
|
|
65
|
-
expect(userSchema.tables.posts.
|
|
64
|
+
expect(userSchema.tables.users.name).toBe("users");
|
|
65
|
+
expect(userSchema.tables.posts.name).toBe("posts");
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
it("should generate default values for columns", () => {
|
|
69
|
-
const testSchema = schema((s) => {
|
|
69
|
+
const testSchema = schema("test", (s) => {
|
|
70
70
|
return s.addTable("test", (t) => {
|
|
71
71
|
return t
|
|
72
72
|
.addColumn("id", idColumn())
|
|
@@ -91,7 +91,7 @@ describe("create", () => {
|
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
it("should increment schema version on each schema-level operation", () => {
|
|
94
|
-
const userSchema = schema((s) => {
|
|
94
|
+
const userSchema = schema("user", (s) => {
|
|
95
95
|
return s
|
|
96
96
|
.addTable("users", (t) => {
|
|
97
97
|
return t
|
|
@@ -108,7 +108,7 @@ describe("create", () => {
|
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
it("should support unique constraints on tables via unique method", () => {
|
|
111
|
-
const userSchema = schema((s) => {
|
|
111
|
+
const userSchema = schema("user", (s) => {
|
|
112
112
|
return s.addTable("users", (t) => {
|
|
113
113
|
return t
|
|
114
114
|
.addColumn("id", idColumn())
|
|
@@ -129,7 +129,7 @@ describe("create", () => {
|
|
|
129
129
|
});
|
|
130
130
|
|
|
131
131
|
it("should support creating indexes on tables", () => {
|
|
132
|
-
const userSchema = schema((s) => {
|
|
132
|
+
const userSchema = schema("user", (s) => {
|
|
133
133
|
return s.addTable("users", (t) => {
|
|
134
134
|
return t
|
|
135
135
|
.addColumn("id", idColumn())
|
|
@@ -157,9 +157,54 @@ describe("create", () => {
|
|
|
157
157
|
expect(usernameIndex!.unique).toBe(true);
|
|
158
158
|
});
|
|
159
159
|
|
|
160
|
+
it("should throw on duplicate table names", () => {
|
|
161
|
+
expect(() =>
|
|
162
|
+
schema("dup", (s) => {
|
|
163
|
+
return s
|
|
164
|
+
.addTable("users", (t) => {
|
|
165
|
+
return t.addColumn("id", idColumn());
|
|
166
|
+
})
|
|
167
|
+
.addTable("users", (t) => {
|
|
168
|
+
return t.addColumn("id", idColumn());
|
|
169
|
+
});
|
|
170
|
+
}),
|
|
171
|
+
).toThrow(/Duplicate table name "users"/);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it("should throw on duplicate index names across tables", () => {
|
|
175
|
+
expect(() =>
|
|
176
|
+
schema("dup", (s) => {
|
|
177
|
+
return s
|
|
178
|
+
.addTable("users", (t) => {
|
|
179
|
+
return t.addColumn("id", idColumn()).createIndex("idx_shared", ["id"]);
|
|
180
|
+
})
|
|
181
|
+
.addTable("posts", (t) => {
|
|
182
|
+
return t.addColumn("id", idColumn()).createIndex("idx_shared", ["id"]);
|
|
183
|
+
});
|
|
184
|
+
}),
|
|
185
|
+
).toThrow(/Duplicate index name "idx_shared"/);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it("should throw on duplicate index names added via alterTable", () => {
|
|
189
|
+
expect(() =>
|
|
190
|
+
schema("dup", (s) => {
|
|
191
|
+
return s
|
|
192
|
+
.addTable("users", (t) => {
|
|
193
|
+
return t.addColumn("id", idColumn()).createIndex("idx_email", ["id"]);
|
|
194
|
+
})
|
|
195
|
+
.addTable("posts", (t) => {
|
|
196
|
+
return t.addColumn("id", idColumn());
|
|
197
|
+
})
|
|
198
|
+
.alterTable("posts", (t) => {
|
|
199
|
+
return t.createIndex("idx_email", ["id"]);
|
|
200
|
+
});
|
|
201
|
+
}),
|
|
202
|
+
).toThrow(/Duplicate index name "idx_email"/);
|
|
203
|
+
});
|
|
204
|
+
|
|
160
205
|
it("should demonstrate manual many-to-many relation setup", () => {
|
|
161
206
|
// For many-to-many, create a junction table manually
|
|
162
|
-
const userSchema = schema((s) => {
|
|
207
|
+
const userSchema = schema("user", (s) => {
|
|
163
208
|
return s
|
|
164
209
|
.addTable("users", (t) => {
|
|
165
210
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -211,7 +256,7 @@ describe("create", () => {
|
|
|
211
256
|
});
|
|
212
257
|
|
|
213
258
|
it("should create a foreign key reference using addReference", () => {
|
|
214
|
-
const userSchema = schema((s) => {
|
|
259
|
+
const userSchema = schema("user", (s) => {
|
|
215
260
|
return s
|
|
216
261
|
.addTable("users", (t) => {
|
|
217
262
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -252,7 +297,7 @@ describe("create", () => {
|
|
|
252
297
|
});
|
|
253
298
|
|
|
254
299
|
it("should support multiple references by calling addReference multiple times", () => {
|
|
255
|
-
const userSchema = schema((s) => {
|
|
300
|
+
const userSchema = schema("user", (s) => {
|
|
256
301
|
return s
|
|
257
302
|
.addTable("users", (t) => {
|
|
258
303
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -305,7 +350,7 @@ describe("create", () => {
|
|
|
305
350
|
});
|
|
306
351
|
|
|
307
352
|
it("should support self-referencing foreign keys", () => {
|
|
308
|
-
const userSchema = schema((s) => {
|
|
353
|
+
const userSchema = schema("user", (s) => {
|
|
309
354
|
return s
|
|
310
355
|
.addTable("users", (t) => {
|
|
311
356
|
return t
|
|
@@ -340,7 +385,7 @@ describe("create", () => {
|
|
|
340
385
|
});
|
|
341
386
|
|
|
342
387
|
it("should allow altering an existing table to add columns", () => {
|
|
343
|
-
const userSchema = schema((s) => {
|
|
388
|
+
const userSchema = schema("user", (s) => {
|
|
344
389
|
return s
|
|
345
390
|
.addTable("users", (t) => {
|
|
346
391
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -381,7 +426,7 @@ describe("create", () => {
|
|
|
381
426
|
});
|
|
382
427
|
|
|
383
428
|
it("should allow altering an existing table to add indexes", () => {
|
|
384
|
-
const userSchema = schema((s) => {
|
|
429
|
+
const userSchema = schema("user", (s) => {
|
|
385
430
|
return s
|
|
386
431
|
.addTable("users", (t) => {
|
|
387
432
|
return t
|
|
@@ -406,7 +451,7 @@ describe("create", () => {
|
|
|
406
451
|
});
|
|
407
452
|
|
|
408
453
|
it("should allow multiple alterTable calls on the same table", () => {
|
|
409
|
-
const userSchema = schema((s) => {
|
|
454
|
+
const userSchema = schema("user", (s) => {
|
|
410
455
|
return s
|
|
411
456
|
.addTable("users", (t) => {
|
|
412
457
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -445,7 +490,7 @@ describe("create", () => {
|
|
|
445
490
|
});
|
|
446
491
|
|
|
447
492
|
it("should preserve indexes when altering a table", () => {
|
|
448
|
-
const userSchema = schema((s) => {
|
|
493
|
+
const userSchema = schema("user", (s) => {
|
|
449
494
|
return s
|
|
450
495
|
.addTable("users", (t) => {
|
|
451
496
|
return t
|
|
@@ -476,7 +521,7 @@ describe("create", () => {
|
|
|
476
521
|
});
|
|
477
522
|
|
|
478
523
|
it("should not duplicate existing indexes when altering a table", () => {
|
|
479
|
-
const userSchema = schema((s) => {
|
|
524
|
+
const userSchema = schema("user", (s) => {
|
|
480
525
|
return s
|
|
481
526
|
.addTable("users", (t) => {
|
|
482
527
|
return t
|
|
@@ -514,7 +559,7 @@ describe("create", () => {
|
|
|
514
559
|
});
|
|
515
560
|
|
|
516
561
|
it("should only add new indexes when altering a table with additional indexes", () => {
|
|
517
|
-
const userSchema = schema((s) => {
|
|
562
|
+
const userSchema = schema("user", (s) => {
|
|
518
563
|
return s
|
|
519
564
|
.addTable("users", (t) => {
|
|
520
565
|
return t
|
|
@@ -558,7 +603,7 @@ describe("create", () => {
|
|
|
558
603
|
});
|
|
559
604
|
|
|
560
605
|
it("Simple user table types", () => {
|
|
561
|
-
const _userSchema = schema((s) => {
|
|
606
|
+
const _userSchema = schema("_user", (s) => {
|
|
562
607
|
return s.addTable("users", (t) => {
|
|
563
608
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
564
609
|
});
|
|
@@ -585,7 +630,7 @@ describe("create", () => {
|
|
|
585
630
|
});
|
|
586
631
|
|
|
587
632
|
it("Simple user table types after alter table statements", () => {
|
|
588
|
-
const _userSchema = schema((s) => {
|
|
633
|
+
const _userSchema = schema("_user", (s) => {
|
|
589
634
|
return s
|
|
590
635
|
.addTable("users", (t) => {
|
|
591
636
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -636,13 +681,13 @@ describe("referenceColumn", () => {
|
|
|
636
681
|
|
|
637
682
|
describe("SchemaBuilder with existing schema", () => {
|
|
638
683
|
it("should initialize with an existing schema", () => {
|
|
639
|
-
const existingSchema = schema((s) => {
|
|
684
|
+
const existingSchema = schema("existing", (s) => {
|
|
640
685
|
return s.addTable("users", (t) => {
|
|
641
686
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
642
687
|
});
|
|
643
688
|
});
|
|
644
689
|
|
|
645
|
-
const extendedSchema = new SchemaBuilder(existingSchema)
|
|
690
|
+
const extendedSchema = new SchemaBuilder(existingSchema.name, existingSchema)
|
|
646
691
|
.addTable("posts", (t) => {
|
|
647
692
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
648
693
|
})
|
|
@@ -655,7 +700,7 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
655
700
|
});
|
|
656
701
|
|
|
657
702
|
it("should preserve operations from existing schema", () => {
|
|
658
|
-
const existingSchema = schema((s) => {
|
|
703
|
+
const existingSchema = schema("existing", (s) => {
|
|
659
704
|
return s
|
|
660
705
|
.addTable("users", (t) => {
|
|
661
706
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -665,7 +710,7 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
665
710
|
});
|
|
666
711
|
});
|
|
667
712
|
|
|
668
|
-
const extendedSchema = new SchemaBuilder(existingSchema)
|
|
713
|
+
const extendedSchema = new SchemaBuilder(existingSchema.name, existingSchema)
|
|
669
714
|
.addTable("comments", (t) => {
|
|
670
715
|
return t.addColumn("id", idColumn()).addColumn("text", column("string"));
|
|
671
716
|
})
|
|
@@ -681,19 +726,19 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
681
726
|
});
|
|
682
727
|
|
|
683
728
|
it("should merge multiple schemas using mergeWithExistingSchema", () => {
|
|
684
|
-
const schema1 = schema((s) => {
|
|
729
|
+
const schema1 = schema("schema1", (s) => {
|
|
685
730
|
return s.addTable("users", (t) => {
|
|
686
731
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
687
732
|
});
|
|
688
733
|
});
|
|
689
734
|
|
|
690
|
-
const schema2 = schema((s) => {
|
|
735
|
+
const schema2 = schema("schema2", (s) => {
|
|
691
736
|
return s.addTable("posts", (t) => {
|
|
692
737
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
693
738
|
});
|
|
694
739
|
});
|
|
695
740
|
|
|
696
|
-
const mergedSchema = new SchemaBuilder()
|
|
741
|
+
const mergedSchema = new SchemaBuilder("merged")
|
|
697
742
|
.mergeWithExistingSchema(schema1)
|
|
698
743
|
.mergeWithExistingSchema(schema2)
|
|
699
744
|
.build();
|
|
@@ -704,20 +749,62 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
704
749
|
expect(mergedSchema.operations).toHaveLength(2);
|
|
705
750
|
});
|
|
706
751
|
|
|
752
|
+
it("should throw on duplicate table names when merging schemas", () => {
|
|
753
|
+
const schema1 = schema("schema1", (s) => {
|
|
754
|
+
return s.addTable("users", (t) => {
|
|
755
|
+
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
756
|
+
});
|
|
757
|
+
});
|
|
758
|
+
|
|
759
|
+
const schema2 = schema("schema2", (s) => {
|
|
760
|
+
return s.addTable("users", (t) => {
|
|
761
|
+
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
762
|
+
});
|
|
763
|
+
});
|
|
764
|
+
|
|
765
|
+
expect(() =>
|
|
766
|
+
new SchemaBuilder("merged").mergeWithExistingSchema(schema1).mergeWithExistingSchema(schema2),
|
|
767
|
+
).toThrow(/Duplicate table name "users"/);
|
|
768
|
+
});
|
|
769
|
+
|
|
770
|
+
it("should throw on duplicate index names when merging schemas", () => {
|
|
771
|
+
const schema1 = schema("schema1", (s) => {
|
|
772
|
+
return s.addTable("users", (t) => {
|
|
773
|
+
return t
|
|
774
|
+
.addColumn("id", idColumn())
|
|
775
|
+
.addColumn("name", column("string"))
|
|
776
|
+
.createIndex("idx_shared", ["name"]);
|
|
777
|
+
});
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
const schema2 = schema("schema2", (s) => {
|
|
781
|
+
return s.addTable("posts", (t) => {
|
|
782
|
+
return t
|
|
783
|
+
.addColumn("id", idColumn())
|
|
784
|
+
.addColumn("title", column("string"))
|
|
785
|
+
.createIndex("idx_shared", ["title"]);
|
|
786
|
+
});
|
|
787
|
+
});
|
|
788
|
+
|
|
789
|
+
expect(() =>
|
|
790
|
+
new SchemaBuilder("merged").mergeWithExistingSchema(schema1).mergeWithExistingSchema(schema2),
|
|
791
|
+
).toThrow(/Duplicate index name "idx_shared"/);
|
|
792
|
+
});
|
|
793
|
+
|
|
707
794
|
it("should extend merged schema with new tables", () => {
|
|
708
|
-
const schema1 = schema((s) => {
|
|
795
|
+
const schema1 = schema("schema1", (s) => {
|
|
709
796
|
return s.addTable("users", (t) => {
|
|
710
797
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
711
798
|
});
|
|
712
799
|
});
|
|
713
800
|
|
|
714
|
-
const schema2 = schema((s) => {
|
|
801
|
+
const schema2 = schema("schema2", (s) => {
|
|
715
802
|
return s.addTable("posts", (t) => {
|
|
716
803
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
717
804
|
});
|
|
718
805
|
});
|
|
719
806
|
|
|
720
|
-
const extended = new SchemaBuilder()
|
|
807
|
+
const extended = new SchemaBuilder("extended")
|
|
721
808
|
.mergeWithExistingSchema(schema1)
|
|
722
809
|
.mergeWithExistingSchema(schema2)
|
|
723
810
|
.addTable("comments", (t) => {
|
|
@@ -733,19 +820,19 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
733
820
|
});
|
|
734
821
|
|
|
735
822
|
it("should use mergeWithExistingSchema method to merge schemas", () => {
|
|
736
|
-
const schema1 = schema((s) => {
|
|
823
|
+
const schema1 = schema("schema1", (s) => {
|
|
737
824
|
return s.addTable("users", (t) => {
|
|
738
825
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
739
826
|
});
|
|
740
827
|
});
|
|
741
828
|
|
|
742
|
-
const schema2 = schema((s) => {
|
|
829
|
+
const schema2 = schema("schema2", (s) => {
|
|
743
830
|
return s.addTable("posts", (t) => {
|
|
744
831
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
745
832
|
});
|
|
746
833
|
});
|
|
747
834
|
|
|
748
|
-
const combined = new SchemaBuilder()
|
|
835
|
+
const combined = new SchemaBuilder("combined")
|
|
749
836
|
.mergeWithExistingSchema(schema1)
|
|
750
837
|
.mergeWithExistingSchema(schema2)
|
|
751
838
|
.addTable("comments", (t) => {
|
|
@@ -761,13 +848,13 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
761
848
|
});
|
|
762
849
|
|
|
763
850
|
it("should merge operations from multiple schemas in order", () => {
|
|
764
|
-
const schema1 = schema((s) => {
|
|
851
|
+
const schema1 = schema("schema1", (s) => {
|
|
765
852
|
return s.addTable("users", (t) => {
|
|
766
853
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
767
854
|
});
|
|
768
855
|
});
|
|
769
856
|
|
|
770
|
-
const schema2 = schema((s) => {
|
|
857
|
+
const schema2 = schema("schema2", (s) => {
|
|
771
858
|
return s
|
|
772
859
|
.addTable("posts", (t) => {
|
|
773
860
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
@@ -777,7 +864,7 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
777
864
|
});
|
|
778
865
|
});
|
|
779
866
|
|
|
780
|
-
const mergedSchema = new SchemaBuilder()
|
|
867
|
+
const mergedSchema = new SchemaBuilder("merged")
|
|
781
868
|
.mergeWithExistingSchema(schema1)
|
|
782
869
|
.mergeWithExistingSchema(schema2)
|
|
783
870
|
.build();
|
|
@@ -790,25 +877,25 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
790
877
|
});
|
|
791
878
|
|
|
792
879
|
it("should merge three or more schemas", () => {
|
|
793
|
-
const schema1 = schema((s) => {
|
|
880
|
+
const schema1 = schema("schema1", (s) => {
|
|
794
881
|
return s.addTable("users", (t) => {
|
|
795
882
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
796
883
|
});
|
|
797
884
|
});
|
|
798
885
|
|
|
799
|
-
const schema2 = schema((s) => {
|
|
886
|
+
const schema2 = schema("schema2", (s) => {
|
|
800
887
|
return s.addTable("posts", (t) => {
|
|
801
888
|
return t.addColumn("id", idColumn()).addColumn("title", column("string"));
|
|
802
889
|
});
|
|
803
890
|
});
|
|
804
891
|
|
|
805
|
-
const schema3 = schema((s) => {
|
|
892
|
+
const schema3 = schema("schema3", (s) => {
|
|
806
893
|
return s.addTable("comments", (t) => {
|
|
807
894
|
return t.addColumn("id", idColumn()).addColumn("text", column("string"));
|
|
808
895
|
});
|
|
809
896
|
});
|
|
810
897
|
|
|
811
|
-
const mergedSchema = new SchemaBuilder()
|
|
898
|
+
const mergedSchema = new SchemaBuilder("merged")
|
|
812
899
|
.mergeWithExistingSchema(schema1)
|
|
813
900
|
.mergeWithExistingSchema(schema2)
|
|
814
901
|
.mergeWithExistingSchema(schema3)
|
|
@@ -822,13 +909,13 @@ describe("SchemaBuilder with existing schema", () => {
|
|
|
822
909
|
});
|
|
823
910
|
|
|
824
911
|
it("should handle single schema merge", () => {
|
|
825
|
-
const schema1 = schema((s) => {
|
|
912
|
+
const schema1 = schema("schema1", (s) => {
|
|
826
913
|
return s.addTable("users", (t) => {
|
|
827
914
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
828
915
|
});
|
|
829
916
|
});
|
|
830
917
|
|
|
831
|
-
const mergedSchema = new SchemaBuilder().mergeWithExistingSchema(schema1).build();
|
|
918
|
+
const mergedSchema = new SchemaBuilder("merged").mergeWithExistingSchema(schema1).build();
|
|
832
919
|
|
|
833
920
|
expect(mergedSchema.tables.users).toBeDefined();
|
|
834
921
|
expect(mergedSchema.version).toBe(1);
|