@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,13 +1,19 @@
|
|
|
1
1
|
import { describe, expect, test } from "vitest";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
createNamingResolver,
|
|
5
|
+
schemaNamingStrategy,
|
|
6
|
+
suffixNamingStrategy,
|
|
7
|
+
type SqlNamingStrategy,
|
|
8
|
+
} from "../../../naming/sql-naming";
|
|
2
9
|
import { column, idColumn, referenceColumn, schema } from "../../../schema/create";
|
|
3
10
|
import { createColdKysely } from "./cold-kysely";
|
|
4
|
-
import { SQLiteSQLGenerator } from "./dialect/sqlite";
|
|
5
|
-
import { PostgresSQLGenerator } from "./dialect/postgres";
|
|
6
11
|
import { MySQLSQLGenerator } from "./dialect/mysql";
|
|
12
|
+
import { PostgresSQLGenerator } from "./dialect/postgres";
|
|
13
|
+
import { SQLiteSQLGenerator } from "./dialect/sqlite";
|
|
7
14
|
import { createPreparedMigrations } from "./prepared-migrations";
|
|
8
|
-
import { createTableNameMapper } from "../../shared/table-name-mapper";
|
|
9
15
|
|
|
10
|
-
const testSchema = schema((s) => {
|
|
16
|
+
const testSchema = schema("test", (s) => {
|
|
11
17
|
return s
|
|
12
18
|
.addTable("users", (t) => {
|
|
13
19
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -31,9 +37,42 @@ const testSchema = schema((s) => {
|
|
|
31
37
|
});
|
|
32
38
|
});
|
|
33
39
|
|
|
40
|
+
const nullableSchema = schema("nullable", (s) => {
|
|
41
|
+
return s
|
|
42
|
+
.addTable("users", (t) => {
|
|
43
|
+
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
44
|
+
})
|
|
45
|
+
.alterTable("users", (t) => {
|
|
46
|
+
return t.alterColumn("name").nullable();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const resolver = createNamingResolver(testSchema, "test", suffixNamingStrategy);
|
|
51
|
+
const nullableResolver = createNamingResolver(nullableSchema, "nullable", suffixNamingStrategy);
|
|
52
|
+
const fkLaterSchema = schema("fk_later", (s) => {
|
|
53
|
+
return s
|
|
54
|
+
.addTable("users", (t) => {
|
|
55
|
+
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
56
|
+
})
|
|
57
|
+
.addTable("posts", (t) => {
|
|
58
|
+
return t
|
|
59
|
+
.addColumn("id", idColumn())
|
|
60
|
+
.addColumn("title", column("string"))
|
|
61
|
+
.addColumn("authorId", referenceColumn());
|
|
62
|
+
})
|
|
63
|
+
.addReference("author", {
|
|
64
|
+
type: "one",
|
|
65
|
+
from: { table: "posts", column: "authorId" },
|
|
66
|
+
to: { table: "users", column: "id" },
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const fkLaterResolver = createNamingResolver(fkLaterSchema, "fk_later", suffixNamingStrategy);
|
|
71
|
+
|
|
34
72
|
describe("PreparedMigrations - PostgreSQL", () => {
|
|
35
73
|
const coldKysely = createColdKysely("postgresql");
|
|
36
74
|
const generator = new PostgresSQLGenerator(coldKysely, "postgresql");
|
|
75
|
+
const resolver = createNamingResolver(testSchema, "test", suffixNamingStrategy);
|
|
37
76
|
|
|
38
77
|
test("compile migration 0 -> 1 (create users table)", () => {
|
|
39
78
|
const statements = generator.compile(
|
|
@@ -55,7 +94,7 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
55
94
|
],
|
|
56
95
|
},
|
|
57
96
|
],
|
|
58
|
-
|
|
97
|
+
resolver,
|
|
59
98
|
);
|
|
60
99
|
|
|
61
100
|
expect(statements.length).toBe(1);
|
|
@@ -78,7 +117,7 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
78
117
|
],
|
|
79
118
|
},
|
|
80
119
|
],
|
|
81
|
-
|
|
120
|
+
resolver,
|
|
82
121
|
);
|
|
83
122
|
|
|
84
123
|
expect(statements.length).toBe(1);
|
|
@@ -98,12 +137,12 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
98
137
|
unique: false,
|
|
99
138
|
},
|
|
100
139
|
],
|
|
101
|
-
|
|
140
|
+
resolver,
|
|
102
141
|
);
|
|
103
142
|
|
|
104
143
|
expect(statements.length).toBe(1);
|
|
105
144
|
expect(statements[0].sql).toMatchInlineSnapshot(
|
|
106
|
-
`"create index "
|
|
145
|
+
`"create index "idx_users_name_idx_test_92db5054" on "users_test" ("name")"`,
|
|
107
146
|
);
|
|
108
147
|
});
|
|
109
148
|
|
|
@@ -122,11 +161,92 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
122
161
|
`"update "fragno_db_settings" set "value" = '2' where "key" = 'test_namespace.schema_version'"`,
|
|
123
162
|
);
|
|
124
163
|
});
|
|
164
|
+
|
|
165
|
+
test("compile uses custom naming strategy for columns and constraints", () => {
|
|
166
|
+
const customStrategy: SqlNamingStrategy = {
|
|
167
|
+
namespaceScope: "suffix",
|
|
168
|
+
namespaceToSchema: (namespace) => namespace,
|
|
169
|
+
tableName: (logicalTable, namespace) =>
|
|
170
|
+
namespace ? `tbl_${logicalTable}_${namespace}` : `tbl_${logicalTable}`,
|
|
171
|
+
columnName: (logicalColumn) => `col_${logicalColumn}`,
|
|
172
|
+
indexName: (logicalIndex, _table, namespace) =>
|
|
173
|
+
namespace ? `idx_custom_${logicalIndex}_${namespace}` : `idx_custom_${logicalIndex}`,
|
|
174
|
+
uniqueIndexName: (logicalIndex, _table, namespace) =>
|
|
175
|
+
namespace ? `uidx_custom_${logicalIndex}_${namespace}` : `uidx_custom_${logicalIndex}`,
|
|
176
|
+
foreignKeyName: ({ referenceName, namespace }) =>
|
|
177
|
+
namespace ? `fk_custom_${referenceName}_${namespace}` : `fk_custom_${referenceName}`,
|
|
178
|
+
};
|
|
179
|
+
const customResolver = createNamingResolver(testSchema, "custom", customStrategy);
|
|
180
|
+
|
|
181
|
+
const statements = generator.compile(
|
|
182
|
+
[
|
|
183
|
+
{
|
|
184
|
+
type: "create-table",
|
|
185
|
+
name: "users",
|
|
186
|
+
columns: [
|
|
187
|
+
{ name: "id", type: "string", isNullable: false, role: "external-id" },
|
|
188
|
+
{ name: "name", type: "string", isNullable: false, role: "regular" },
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: "create-table",
|
|
193
|
+
name: "posts",
|
|
194
|
+
columns: [
|
|
195
|
+
{ name: "id", type: "string", isNullable: false, role: "external-id" },
|
|
196
|
+
{ name: "authorId", type: "bigint", isNullable: false, role: "reference" },
|
|
197
|
+
],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: "add-index",
|
|
201
|
+
table: "users",
|
|
202
|
+
name: "name_idx",
|
|
203
|
+
columns: ["name"],
|
|
204
|
+
unique: false,
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: "add-foreign-key",
|
|
208
|
+
table: "posts",
|
|
209
|
+
value: {
|
|
210
|
+
name: "author",
|
|
211
|
+
columns: ["authorId"],
|
|
212
|
+
referencedTable: "users",
|
|
213
|
+
referencedColumns: ["_internalId"],
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
customResolver,
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
const sql = statements.map((stmt) => stmt.sql).join("\\n");
|
|
221
|
+
expect(sql).toContain(`create table "tbl_users_custom"`);
|
|
222
|
+
expect(sql).toContain(`"col_name"`);
|
|
223
|
+
expect(sql).toContain(`create index "idx_custom_name_idx_custom"`);
|
|
224
|
+
expect(sql).toContain(`add constraint "fk_custom_author_custom"`);
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
test("compile uses schema naming strategy for schema-scoped namespaces", () => {
|
|
228
|
+
const schemaResolver = createNamingResolver(testSchema, "tenant", schemaNamingStrategy);
|
|
229
|
+
const statements = generator.compile(
|
|
230
|
+
[
|
|
231
|
+
{
|
|
232
|
+
type: "create-table",
|
|
233
|
+
name: "users",
|
|
234
|
+
columns: [{ name: "id", type: "string", isNullable: false, role: "external-id" }],
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
schemaResolver,
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
const sql = statements.map((stmt) => stmt.sql).join("\\n");
|
|
241
|
+
expect(sql).toContain(`CREATE SCHEMA IF NOT EXISTS "tenant"`);
|
|
242
|
+
expect(sql).toContain(`create table "tenant"."users"`);
|
|
243
|
+
});
|
|
125
244
|
});
|
|
126
245
|
|
|
127
246
|
describe("PreparedMigrations - SQLite FK Merging", () => {
|
|
128
247
|
const coldKysely = createColdKysely("sqlite");
|
|
129
248
|
const generator = new SQLiteSQLGenerator(coldKysely, "sqlite");
|
|
249
|
+
const resolver = createNamingResolver(testSchema, "test", suffixNamingStrategy);
|
|
130
250
|
|
|
131
251
|
test("preprocess merges FK into create-table", () => {
|
|
132
252
|
const operations = generator.preprocess([
|
|
@@ -191,7 +311,7 @@ describe("PreparedMigrations - SQLite FK Merging", () => {
|
|
|
191
311
|
},
|
|
192
312
|
},
|
|
193
313
|
],
|
|
194
|
-
|
|
314
|
+
resolver,
|
|
195
315
|
);
|
|
196
316
|
|
|
197
317
|
expect(statements.length).toBe(3);
|
|
@@ -200,7 +320,7 @@ describe("PreparedMigrations - SQLite FK Merging", () => {
|
|
|
200
320
|
`"create table "users_test" ("id" text not null unique)"`,
|
|
201
321
|
);
|
|
202
322
|
expect(statements[2].sql).toMatchInlineSnapshot(
|
|
203
|
-
`"create table "posts_test" ("id" text not null unique, "authorId" integer not null,
|
|
323
|
+
`"create table "posts_test" ("id" text not null unique, "authorId" integer not null, foreign key ("authorId") references "users_test" ("_internalId") on delete restrict on update restrict)"`,
|
|
204
324
|
);
|
|
205
325
|
});
|
|
206
326
|
|
|
@@ -286,7 +406,7 @@ describe("PreparedMigrations - MySQL", () => {
|
|
|
286
406
|
expect(statements.length).toBe(3);
|
|
287
407
|
expect(statements[0].sql).toMatchInlineSnapshot(`"SET FOREIGN_KEY_CHECKS = 0"`);
|
|
288
408
|
expect(statements[1].sql).toMatchInlineSnapshot(
|
|
289
|
-
`"create table \`users\` (\`_internalId\` bigint not null primary key
|
|
409
|
+
`"create table \`users\` (\`_internalId\` bigint not null auto_increment, constraint \`users__internalId\` primary key (\`_internalId\`))"`,
|
|
290
410
|
);
|
|
291
411
|
expect(statements[2].sql).toMatchInlineSnapshot(`"SET FOREIGN_KEY_CHECKS = 1"`);
|
|
292
412
|
});
|
|
@@ -335,7 +455,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
335
455
|
schema: testSchema,
|
|
336
456
|
namespace: "test",
|
|
337
457
|
database: "postgresql",
|
|
338
|
-
|
|
458
|
+
resolver,
|
|
339
459
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
340
460
|
driver: mockDriver as any,
|
|
341
461
|
});
|
|
@@ -345,7 +465,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
345
465
|
expect(transactionStarted).toBe(true);
|
|
346
466
|
expect(executedStatements.length).toBe(2);
|
|
347
467
|
expect(executedStatements[0]).toMatchInlineSnapshot(
|
|
348
|
-
`"create table "users_test" ("id" varchar(
|
|
468
|
+
`"create table "users_test" ("id" varchar(128) not null unique, "name" text not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null)"`,
|
|
349
469
|
);
|
|
350
470
|
expect(executedStatements[1]).toMatchInlineSnapshot(
|
|
351
471
|
`"insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '1')"`,
|
|
@@ -379,7 +499,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
379
499
|
schema: testSchema,
|
|
380
500
|
namespace: "test",
|
|
381
501
|
database: "postgresql",
|
|
382
|
-
|
|
502
|
+
resolver,
|
|
383
503
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
384
504
|
driver: mockDriver as any,
|
|
385
505
|
});
|
|
@@ -404,7 +524,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
404
524
|
schema: testSchema,
|
|
405
525
|
namespace: "test",
|
|
406
526
|
database: "postgresql",
|
|
407
|
-
|
|
527
|
+
resolver,
|
|
408
528
|
});
|
|
409
529
|
|
|
410
530
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -426,7 +546,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
426
546
|
schema: testSchema,
|
|
427
547
|
namespace: "test",
|
|
428
548
|
database: "postgresql",
|
|
429
|
-
|
|
549
|
+
resolver,
|
|
430
550
|
});
|
|
431
551
|
|
|
432
552
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -462,7 +582,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
462
582
|
schema: testSchema,
|
|
463
583
|
namespace: "test",
|
|
464
584
|
database: "postgresql",
|
|
465
|
-
|
|
585
|
+
resolver,
|
|
466
586
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
467
587
|
driver: mockDriver as any,
|
|
468
588
|
});
|
|
@@ -478,7 +598,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
478
598
|
schema: testSchema,
|
|
479
599
|
namespace: "test",
|
|
480
600
|
database: "postgresql",
|
|
481
|
-
|
|
601
|
+
resolver,
|
|
482
602
|
// No driver provided
|
|
483
603
|
});
|
|
484
604
|
|
|
@@ -494,18 +614,18 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
494
614
|
schema: testSchema,
|
|
495
615
|
namespace: "test",
|
|
496
616
|
database: "postgresql",
|
|
497
|
-
|
|
617
|
+
resolver,
|
|
498
618
|
});
|
|
499
619
|
|
|
500
620
|
const sql = prepared.getSQL(0, 2, { updateVersionInMigration: true });
|
|
501
621
|
expect(sql).toMatchInlineSnapshot(`
|
|
502
|
-
"create table "users_test" ("id" varchar(
|
|
622
|
+
"create table "users_test" ("id" varchar(128) not null unique, "name" text not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null);
|
|
503
623
|
|
|
504
624
|
alter table "users_test" add column "age" integer;
|
|
505
625
|
|
|
506
|
-
create index "
|
|
626
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
507
627
|
|
|
508
|
-
create index "
|
|
628
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
509
629
|
|
|
510
630
|
insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '2');"
|
|
511
631
|
`);
|
|
@@ -516,22 +636,22 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
516
636
|
schema: testSchema,
|
|
517
637
|
namespace: "test",
|
|
518
638
|
database: "postgresql",
|
|
519
|
-
|
|
639
|
+
resolver,
|
|
520
640
|
});
|
|
521
641
|
|
|
522
642
|
const sql = prepared.getSQL(0, 4, { updateVersionInMigration: true });
|
|
523
643
|
expect(sql).toMatchInlineSnapshot(`
|
|
524
|
-
"create table "users_test" ("id" varchar(
|
|
644
|
+
"create table "users_test" ("id" varchar(128) not null unique, "name" text not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null);
|
|
525
645
|
|
|
526
646
|
alter table "users_test" add column "age" integer;
|
|
527
647
|
|
|
528
|
-
create index "
|
|
648
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
529
649
|
|
|
530
|
-
create index "
|
|
650
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
531
651
|
|
|
532
|
-
create table "posts_test" ("id" varchar(
|
|
652
|
+
create table "posts_test" ("id" varchar(128) not null unique, "title" text not null, "authorId" bigint not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null);
|
|
533
653
|
|
|
534
|
-
alter table "posts_test" add constraint "
|
|
654
|
+
alter table "posts_test" add constraint "fk_posts_users_author_test_8d48035c" foreign key ("authorId") references "users_test" ("_internalId") on delete restrict on update restrict;
|
|
535
655
|
|
|
536
656
|
insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '4');"
|
|
537
657
|
`);
|
|
@@ -542,16 +662,16 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
542
662
|
schema: testSchema,
|
|
543
663
|
namespace: "test",
|
|
544
664
|
database: "postgresql",
|
|
545
|
-
|
|
665
|
+
resolver,
|
|
546
666
|
});
|
|
547
667
|
|
|
548
668
|
const sql = prepared.getSQL(1, 2, { updateVersionInMigration: true });
|
|
549
669
|
expect(sql).toMatchInlineSnapshot(`
|
|
550
670
|
"alter table "users_test" add column "age" integer;
|
|
551
671
|
|
|
552
|
-
create index "
|
|
672
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
553
673
|
|
|
554
|
-
create index "
|
|
674
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
555
675
|
|
|
556
676
|
update "fragno_db_settings" set "value" = '2' where "key" = 'test.schema_version';"
|
|
557
677
|
`);
|
|
@@ -562,12 +682,12 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
562
682
|
schema: testSchema,
|
|
563
683
|
namespace: "test",
|
|
564
684
|
database: "postgresql",
|
|
565
|
-
|
|
685
|
+
resolver,
|
|
566
686
|
});
|
|
567
687
|
|
|
568
688
|
const sql = prepared.getSQL(2, 3, { updateVersionInMigration: true });
|
|
569
689
|
expect(sql).toMatchInlineSnapshot(`
|
|
570
|
-
"create table "posts_test" ("id" varchar(
|
|
690
|
+
"create table "posts_test" ("id" varchar(128) not null unique, "title" text not null, "authorId" bigint not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null);
|
|
571
691
|
|
|
572
692
|
update "fragno_db_settings" set "value" = '3' where "key" = 'test.schema_version';"
|
|
573
693
|
`);
|
|
@@ -578,7 +698,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
578
698
|
schema: testSchema,
|
|
579
699
|
namespace: "test",
|
|
580
700
|
database: "sqlite",
|
|
581
|
-
|
|
701
|
+
resolver,
|
|
582
702
|
});
|
|
583
703
|
|
|
584
704
|
const sql = prepared.getSQL(0, 4, { updateVersionInMigration: true });
|
|
@@ -589,39 +709,53 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
589
709
|
|
|
590
710
|
alter table "users_test" add column "age" integer;
|
|
591
711
|
|
|
592
|
-
create index "
|
|
712
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
593
713
|
|
|
594
|
-
create index "
|
|
714
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
595
715
|
|
|
596
|
-
create table "posts_test" ("id" text not null unique, "title" text not null, "authorId" integer not null, "_internalId" integer not null primary key autoincrement, "_version" integer default 0 not null,
|
|
716
|
+
create table "posts_test" ("id" text not null unique, "title" text not null, "authorId" integer not null, "_internalId" integer not null primary key autoincrement, "_version" integer default 0 not null, foreign key ("authorId") references "users_test" ("_internalId") on delete restrict on update restrict);
|
|
597
717
|
|
|
598
718
|
insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '4');"
|
|
599
719
|
`);
|
|
600
720
|
});
|
|
601
721
|
|
|
722
|
+
test("SQLite: adding FK after table creation throws", () => {
|
|
723
|
+
const prepared = createPreparedMigrations({
|
|
724
|
+
schema: fkLaterSchema,
|
|
725
|
+
namespace: "fk_later",
|
|
726
|
+
database: "sqlite",
|
|
727
|
+
resolver: fkLaterResolver,
|
|
728
|
+
});
|
|
729
|
+
|
|
730
|
+
const previousVersion = fkLaterSchema.version - 1;
|
|
731
|
+
expect(() =>
|
|
732
|
+
prepared.getSQL(previousVersion, fkLaterSchema.version, { updateVersionInMigration: false }),
|
|
733
|
+
).toThrow("SQLite doesn't support modifying foreign keys");
|
|
734
|
+
});
|
|
735
|
+
|
|
602
736
|
test("MySQL: migration 0 -> 4 with FK checks disabled", () => {
|
|
603
737
|
const prepared = createPreparedMigrations({
|
|
604
738
|
schema: testSchema,
|
|
605
739
|
namespace: "test",
|
|
606
740
|
database: "mysql",
|
|
607
|
-
|
|
741
|
+
resolver,
|
|
608
742
|
});
|
|
609
743
|
|
|
610
744
|
const sql = prepared.getSQL(0, 4, { updateVersionInMigration: true });
|
|
611
745
|
expect(sql).toMatchInlineSnapshot(`
|
|
612
746
|
"SET FOREIGN_KEY_CHECKS = 0;
|
|
613
747
|
|
|
614
|
-
create table \`users_test\` (\`id\` varchar(
|
|
748
|
+
create table \`users_test\` (\`id\` varchar(128) not null unique, \`name\` text not null, \`_internalId\` bigint not null auto_increment, \`_version\` integer default 0 not null, constraint \`users_test__internalId\` primary key (\`_internalId\`));
|
|
615
749
|
|
|
616
750
|
alter table \`users_test\` add column \`age\` integer;
|
|
617
751
|
|
|
618
|
-
create index \`
|
|
752
|
+
create index \`idx_users_name_idx_test_92db5054\` on \`users_test\` (\`name\`);
|
|
619
753
|
|
|
620
|
-
create index \`
|
|
754
|
+
create index \`idx_users_age_idx_test_1c69311d\` on \`users_test\` (\`age\`);
|
|
621
755
|
|
|
622
|
-
create table \`posts_test\` (\`id\` varchar(
|
|
756
|
+
create table \`posts_test\` (\`id\` varchar(128) not null unique, \`title\` text not null, \`authorId\` bigint not null, \`_internalId\` bigint not null auto_increment, \`_version\` integer default 0 not null, constraint \`posts_test__internalId\` primary key (\`_internalId\`));
|
|
623
757
|
|
|
624
|
-
alter table \`posts_test\` add constraint \`
|
|
758
|
+
alter table \`posts_test\` add constraint \`fk_posts_users_author_test_8d48035c\` foreign key (\`authorId\`) references \`users_test\` (\`_internalId\`) on delete restrict on update restrict;
|
|
625
759
|
|
|
626
760
|
SET FOREIGN_KEY_CHECKS = 1;
|
|
627
761
|
|
|
@@ -629,12 +763,70 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
629
763
|
`);
|
|
630
764
|
});
|
|
631
765
|
|
|
766
|
+
test("PostgreSQL: migration 1 -> 2 (make column nullable)", () => {
|
|
767
|
+
const prepared = createPreparedMigrations({
|
|
768
|
+
schema: nullableSchema,
|
|
769
|
+
namespace: "nullable",
|
|
770
|
+
database: "postgresql",
|
|
771
|
+
resolver: nullableResolver,
|
|
772
|
+
});
|
|
773
|
+
|
|
774
|
+
const sql = prepared.getSQL(1, 2, { updateVersionInMigration: false });
|
|
775
|
+
expect(sql).toMatchInlineSnapshot(
|
|
776
|
+
`"alter table "users_nullable" alter column "name" drop not null;"`,
|
|
777
|
+
);
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
test("MySQL: migration 1 -> 2 (make column nullable)", () => {
|
|
781
|
+
const prepared = createPreparedMigrations({
|
|
782
|
+
schema: nullableSchema,
|
|
783
|
+
namespace: "nullable",
|
|
784
|
+
database: "mysql",
|
|
785
|
+
resolver: nullableResolver,
|
|
786
|
+
});
|
|
787
|
+
|
|
788
|
+
const sql = prepared.getSQL(1, 2, { updateVersionInMigration: false });
|
|
789
|
+
expect(sql).toMatchInlineSnapshot(`
|
|
790
|
+
"SET FOREIGN_KEY_CHECKS = 0;
|
|
791
|
+
|
|
792
|
+
alter table \`users_nullable\` modify column \`name\` text;
|
|
793
|
+
|
|
794
|
+
SET FOREIGN_KEY_CHECKS = 1;"
|
|
795
|
+
`);
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
test("SQLite: migration 1 -> 2 (make column nullable)", () => {
|
|
799
|
+
const prepared = createPreparedMigrations({
|
|
800
|
+
schema: nullableSchema,
|
|
801
|
+
namespace: "nullable",
|
|
802
|
+
database: "sqlite",
|
|
803
|
+
resolver: nullableResolver,
|
|
804
|
+
});
|
|
805
|
+
|
|
806
|
+
const sql = prepared.getSQL(1, 2, { updateVersionInMigration: false });
|
|
807
|
+
expect(sql).toMatchInlineSnapshot(`
|
|
808
|
+
"PRAGMA defer_foreign_keys = ON;
|
|
809
|
+
|
|
810
|
+
PRAGMA foreign_keys = OFF;
|
|
811
|
+
|
|
812
|
+
create table "users_nullable__fragno_tmp_414fdd" ("id" text not null unique, "name" text, "_internalId" integer not null primary key autoincrement, "_version" integer default 0 not null);
|
|
813
|
+
|
|
814
|
+
insert into "users_nullable__fragno_tmp_414fdd" ("id", "name", "_internalId", "_version") select "id", "name", "_internalId", "_version" from "users_nullable";
|
|
815
|
+
|
|
816
|
+
drop table "users_nullable";
|
|
817
|
+
|
|
818
|
+
alter table "users_nullable__fragno_tmp_414fdd" rename to "users_nullable";
|
|
819
|
+
|
|
820
|
+
PRAGMA foreign_keys = ON;"
|
|
821
|
+
`);
|
|
822
|
+
});
|
|
823
|
+
|
|
632
824
|
test("compile returns CompiledMigration with statements array", () => {
|
|
633
825
|
const prepared = createPreparedMigrations({
|
|
634
826
|
schema: testSchema,
|
|
635
827
|
namespace: "test",
|
|
636
828
|
database: "postgresql",
|
|
637
|
-
|
|
829
|
+
resolver,
|
|
638
830
|
});
|
|
639
831
|
|
|
640
832
|
const compiled = prepared.compile(0, 2, { updateVersionInMigration: true });
|
|
@@ -649,13 +841,13 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
649
841
|
schema: testSchema,
|
|
650
842
|
namespace: "test",
|
|
651
843
|
database: "postgresql",
|
|
652
|
-
|
|
844
|
+
resolver,
|
|
653
845
|
});
|
|
654
846
|
|
|
655
847
|
const sql = prepared.getSQL(0, 1, { updateVersionInMigration: false });
|
|
656
848
|
expect(sql).not.toContain("fragno_db_settings");
|
|
657
849
|
expect(sql).toMatchInlineSnapshot(
|
|
658
|
-
`"create table "users_test" ("id" varchar(
|
|
850
|
+
`"create table "users_test" ("id" varchar(128) not null unique, "name" text not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null);"`,
|
|
659
851
|
);
|
|
660
852
|
});
|
|
661
853
|
});
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
|
|
3
|
+
import { generateMigrationFromSchema } from "../../../migration-engine/auto-from-schema";
|
|
4
|
+
import type { NamingResolver } from "../../../naming/sql-naming";
|
|
1
5
|
import type { AnySchema } from "../../../schema/create";
|
|
2
6
|
import type { SqlDriverAdapter } from "../../../sql-driver/sql-driver-adapter";
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
7
|
+
import type { DriverConfig, SupportedDatabase } from "../driver-config";
|
|
8
|
+
import type { SQLiteStorageMode } from "../sqlite-storage";
|
|
5
9
|
import { createColdKysely } from "./cold-kysely";
|
|
6
|
-
import { type SQLGenerator } from "./sql-generator";
|
|
7
|
-
import { SQLiteSQLGenerator } from "./dialect/sqlite";
|
|
8
|
-
import { PostgresSQLGenerator } from "./dialect/postgres";
|
|
9
10
|
import { MySQLSQLGenerator } from "./dialect/mysql";
|
|
11
|
+
import { PostgresSQLGenerator } from "./dialect/postgres";
|
|
12
|
+
import { SQLiteSQLGenerator } from "./dialect/sqlite";
|
|
10
13
|
import { executeMigration, type CompiledMigration } from "./executor";
|
|
11
|
-
import type
|
|
12
|
-
import type { Kysely } from "kysely";
|
|
14
|
+
import { type SQLGenerator } from "./sql-generator";
|
|
13
15
|
/**
|
|
14
16
|
* Options for executing a migration.
|
|
15
17
|
*/
|
|
@@ -85,7 +87,9 @@ export interface PreparedMigrationsConfig {
|
|
|
85
87
|
schema: AnySchema;
|
|
86
88
|
namespace: string;
|
|
87
89
|
database: SupportedDatabase;
|
|
88
|
-
|
|
90
|
+
driverConfig?: DriverConfig;
|
|
91
|
+
sqliteStorageMode?: SQLiteStorageMode;
|
|
92
|
+
resolver?: NamingResolver;
|
|
89
93
|
driver?: SqlDriverAdapter;
|
|
90
94
|
/**
|
|
91
95
|
* Whether to automatically update the schema version in the database after migration.
|
|
@@ -102,6 +106,8 @@ export function createPreparedMigrations(config: PreparedMigrationsConfig): Prep
|
|
|
102
106
|
schema,
|
|
103
107
|
namespace,
|
|
104
108
|
database,
|
|
109
|
+
driverConfig,
|
|
110
|
+
sqliteStorageMode,
|
|
105
111
|
driver,
|
|
106
112
|
updateVersionInMigration: defaultUpdateVersion = true,
|
|
107
113
|
} = config;
|
|
@@ -110,7 +116,7 @@ export function createPreparedMigrations(config: PreparedMigrationsConfig): Prep
|
|
|
110
116
|
const coldKysely = createColdKysely(database);
|
|
111
117
|
|
|
112
118
|
// Create the appropriate SQL generator for the database
|
|
113
|
-
const generator = createSQLGenerator(database, coldKysely);
|
|
119
|
+
const generator = createSQLGenerator(database, coldKysely, driverConfig, sqliteStorageMode);
|
|
114
120
|
|
|
115
121
|
/**
|
|
116
122
|
* Internal method to compile a migration for a given version range.
|
|
@@ -140,7 +146,7 @@ export function createPreparedMigrations(config: PreparedMigrationsConfig): Prep
|
|
|
140
146
|
const operations = generateMigrationFromSchema(schema, fromVersion, toVersion);
|
|
141
147
|
|
|
142
148
|
// Phase 2: Compile operations to SQL
|
|
143
|
-
const statements = generator.compile(operations, config.
|
|
149
|
+
const statements = generator.compile(operations, config.resolver);
|
|
144
150
|
|
|
145
151
|
// Add version update SQL if requested
|
|
146
152
|
if (updateVersionInMigration && toVersion !== fromVersion) {
|
|
@@ -202,13 +208,15 @@ function createSQLGenerator(
|
|
|
202
208
|
database: SupportedDatabase,
|
|
203
209
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
204
210
|
coldKysely: Kysely<any>,
|
|
211
|
+
driverConfig?: DriverConfig,
|
|
212
|
+
sqliteStorageMode?: SQLiteStorageMode,
|
|
205
213
|
): SQLGenerator {
|
|
206
214
|
switch (database) {
|
|
207
215
|
case "sqlite":
|
|
208
|
-
return new SQLiteSQLGenerator(coldKysely, database);
|
|
216
|
+
return new SQLiteSQLGenerator(coldKysely, database, driverConfig, sqliteStorageMode);
|
|
209
217
|
case "postgresql":
|
|
210
|
-
return new PostgresSQLGenerator(coldKysely, database);
|
|
218
|
+
return new PostgresSQLGenerator(coldKysely, database, driverConfig, sqliteStorageMode);
|
|
211
219
|
case "mysql":
|
|
212
|
-
return new MySQLSQLGenerator(coldKysely, database);
|
|
220
|
+
return new MySQLSQLGenerator(coldKysely, database, driverConfig, sqliteStorageMode);
|
|
213
221
|
}
|
|
214
222
|
}
|