@fragno-dev/db 0.2.1 → 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 +206 -140
- package/CHANGELOG.md +67 -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 +38 -28
- 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 +45 -96
- package/dist/db-fragment-definition-builder.d.ts.map +1 -1
- package/dist/db-fragment-definition-builder.js +121 -99
- 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 +172 -9
- package/dist/fragments/internal-fragment.d.ts.map +1 -1
- package/dist/fragments/internal-fragment.js +193 -74
- 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 +47 -4
- package/dist/hooks/hooks.d.ts.map +1 -1
- package/dist/hooks/hooks.js +106 -39
- 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 +17 -10
- 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 +351 -100
- 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 +440 -267
- 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 +67 -22
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
- package/dist/query/unit-of-work/unit-of-work.js +110 -13
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
- package/dist/query/value-decoding.js +8 -5
- 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 +40 -14
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +82 -42
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/generate-id.d.ts +20 -0
- package/dist/schema/generate-id.d.ts.map +1 -0
- package/dist/schema/generate-id.js +28 -0
- package/dist/schema/generate-id.js.map +1 -0
- 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} +49 -35
- package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +48 -32
- 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 +88 -54
- package/src/db-fragment-definition-builder.ts +201 -322
- package/src/db-fragment-instantiator.test.ts +169 -101
- package/src/db-fragment-integration.test.ts +301 -149
- 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 +730 -274
- package/src/fragments/internal-fragment.ts +447 -154
- 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 +411 -259
- package/src/hooks/hooks.ts +265 -66
- 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 +78 -30
- 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 +1512 -1458
- package/src/query/unit-of-work/execute-unit-of-work.ts +1708 -596
- package/src/query/unit-of-work/tx-builder.test.ts +1041 -0
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +32 -32
- 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 +231 -36
- package/src/query/unit-of-work/unit-of-work.ts +229 -31
- 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 +187 -47
- package/src/schema/generate-id.test.ts +57 -0
- package/src/schema/generate-id.ts +38 -0
- 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
- package/src/shared/config.ts +0 -10
- package/src/shared/connection-pool.ts +0 -24
- package/src/shared/prisma.ts +0 -45
|
@@ -5,9 +5,14 @@ import { SQLiteSQLGenerator } from "./dialect/sqlite";
|
|
|
5
5
|
import { PostgresSQLGenerator } from "./dialect/postgres";
|
|
6
6
|
import { MySQLSQLGenerator } from "./dialect/mysql";
|
|
7
7
|
import { createPreparedMigrations } from "./prepared-migrations";
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import {
|
|
9
|
+
createNamingResolver,
|
|
10
|
+
schemaNamingStrategy,
|
|
11
|
+
suffixNamingStrategy,
|
|
12
|
+
type SqlNamingStrategy,
|
|
13
|
+
} from "../../../naming/sql-naming";
|
|
14
|
+
|
|
15
|
+
const testSchema = schema("test", (s) => {
|
|
11
16
|
return s
|
|
12
17
|
.addTable("users", (t) => {
|
|
13
18
|
return t.addColumn("id", idColumn()).addColumn("name", column("string"));
|
|
@@ -31,9 +36,12 @@ const testSchema = schema((s) => {
|
|
|
31
36
|
});
|
|
32
37
|
});
|
|
33
38
|
|
|
39
|
+
const resolver = createNamingResolver(testSchema, "test", suffixNamingStrategy);
|
|
40
|
+
|
|
34
41
|
describe("PreparedMigrations - PostgreSQL", () => {
|
|
35
42
|
const coldKysely = createColdKysely("postgresql");
|
|
36
43
|
const generator = new PostgresSQLGenerator(coldKysely, "postgresql");
|
|
44
|
+
const resolver = createNamingResolver(testSchema, "test", suffixNamingStrategy);
|
|
37
45
|
|
|
38
46
|
test("compile migration 0 -> 1 (create users table)", () => {
|
|
39
47
|
const statements = generator.compile(
|
|
@@ -55,7 +63,7 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
55
63
|
],
|
|
56
64
|
},
|
|
57
65
|
],
|
|
58
|
-
|
|
66
|
+
resolver,
|
|
59
67
|
);
|
|
60
68
|
|
|
61
69
|
expect(statements.length).toBe(1);
|
|
@@ -78,7 +86,7 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
78
86
|
],
|
|
79
87
|
},
|
|
80
88
|
],
|
|
81
|
-
|
|
89
|
+
resolver,
|
|
82
90
|
);
|
|
83
91
|
|
|
84
92
|
expect(statements.length).toBe(1);
|
|
@@ -98,12 +106,12 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
98
106
|
unique: false,
|
|
99
107
|
},
|
|
100
108
|
],
|
|
101
|
-
|
|
109
|
+
resolver,
|
|
102
110
|
);
|
|
103
111
|
|
|
104
112
|
expect(statements.length).toBe(1);
|
|
105
113
|
expect(statements[0].sql).toMatchInlineSnapshot(
|
|
106
|
-
`"create index "
|
|
114
|
+
`"create index "idx_users_name_idx_test_92db5054" on "users_test" ("name")"`,
|
|
107
115
|
);
|
|
108
116
|
});
|
|
109
117
|
|
|
@@ -122,11 +130,92 @@ describe("PreparedMigrations - PostgreSQL", () => {
|
|
|
122
130
|
`"update "fragno_db_settings" set "value" = '2' where "key" = 'test_namespace.schema_version'"`,
|
|
123
131
|
);
|
|
124
132
|
});
|
|
133
|
+
|
|
134
|
+
test("compile uses custom naming strategy for columns and constraints", () => {
|
|
135
|
+
const customStrategy: SqlNamingStrategy = {
|
|
136
|
+
namespaceScope: "suffix",
|
|
137
|
+
namespaceToSchema: (namespace) => namespace,
|
|
138
|
+
tableName: (logicalTable, namespace) =>
|
|
139
|
+
namespace ? `tbl_${logicalTable}_${namespace}` : `tbl_${logicalTable}`,
|
|
140
|
+
columnName: (logicalColumn) => `col_${logicalColumn}`,
|
|
141
|
+
indexName: (logicalIndex, _table, namespace) =>
|
|
142
|
+
namespace ? `idx_custom_${logicalIndex}_${namespace}` : `idx_custom_${logicalIndex}`,
|
|
143
|
+
uniqueIndexName: (logicalIndex, _table, namespace) =>
|
|
144
|
+
namespace ? `uidx_custom_${logicalIndex}_${namespace}` : `uidx_custom_${logicalIndex}`,
|
|
145
|
+
foreignKeyName: ({ referenceName, namespace }) =>
|
|
146
|
+
namespace ? `fk_custom_${referenceName}_${namespace}` : `fk_custom_${referenceName}`,
|
|
147
|
+
};
|
|
148
|
+
const customResolver = createNamingResolver(testSchema, "custom", customStrategy);
|
|
149
|
+
|
|
150
|
+
const statements = generator.compile(
|
|
151
|
+
[
|
|
152
|
+
{
|
|
153
|
+
type: "create-table",
|
|
154
|
+
name: "users",
|
|
155
|
+
columns: [
|
|
156
|
+
{ name: "id", type: "string", isNullable: false, role: "external-id" },
|
|
157
|
+
{ name: "name", type: "string", isNullable: false, role: "regular" },
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: "create-table",
|
|
162
|
+
name: "posts",
|
|
163
|
+
columns: [
|
|
164
|
+
{ name: "id", type: "string", isNullable: false, role: "external-id" },
|
|
165
|
+
{ name: "authorId", type: "bigint", isNullable: false, role: "reference" },
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: "add-index",
|
|
170
|
+
table: "users",
|
|
171
|
+
name: "name_idx",
|
|
172
|
+
columns: ["name"],
|
|
173
|
+
unique: false,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
type: "add-foreign-key",
|
|
177
|
+
table: "posts",
|
|
178
|
+
value: {
|
|
179
|
+
name: "author",
|
|
180
|
+
columns: ["authorId"],
|
|
181
|
+
referencedTable: "users",
|
|
182
|
+
referencedColumns: ["_internalId"],
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
customResolver,
|
|
187
|
+
);
|
|
188
|
+
|
|
189
|
+
const sql = statements.map((stmt) => stmt.sql).join("\\n");
|
|
190
|
+
expect(sql).toContain(`create table "tbl_users_custom"`);
|
|
191
|
+
expect(sql).toContain(`"col_name"`);
|
|
192
|
+
expect(sql).toContain(`create index "idx_custom_name_idx_custom"`);
|
|
193
|
+
expect(sql).toContain(`add constraint "fk_custom_author_custom"`);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
test("compile uses schema naming strategy for schema-scoped namespaces", () => {
|
|
197
|
+
const schemaResolver = createNamingResolver(testSchema, "tenant", schemaNamingStrategy);
|
|
198
|
+
const statements = generator.compile(
|
|
199
|
+
[
|
|
200
|
+
{
|
|
201
|
+
type: "create-table",
|
|
202
|
+
name: "users",
|
|
203
|
+
columns: [{ name: "id", type: "string", isNullable: false, role: "external-id" }],
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
schemaResolver,
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
const sql = statements.map((stmt) => stmt.sql).join("\\n");
|
|
210
|
+
expect(sql).toContain(`CREATE SCHEMA IF NOT EXISTS "tenant"`);
|
|
211
|
+
expect(sql).toContain(`create table "tenant"."users"`);
|
|
212
|
+
});
|
|
125
213
|
});
|
|
126
214
|
|
|
127
215
|
describe("PreparedMigrations - SQLite FK Merging", () => {
|
|
128
216
|
const coldKysely = createColdKysely("sqlite");
|
|
129
217
|
const generator = new SQLiteSQLGenerator(coldKysely, "sqlite");
|
|
218
|
+
const resolver = createNamingResolver(testSchema, "test", suffixNamingStrategy);
|
|
130
219
|
|
|
131
220
|
test("preprocess merges FK into create-table", () => {
|
|
132
221
|
const operations = generator.preprocess([
|
|
@@ -191,7 +280,7 @@ describe("PreparedMigrations - SQLite FK Merging", () => {
|
|
|
191
280
|
},
|
|
192
281
|
},
|
|
193
282
|
],
|
|
194
|
-
|
|
283
|
+
resolver,
|
|
195
284
|
);
|
|
196
285
|
|
|
197
286
|
expect(statements.length).toBe(3);
|
|
@@ -200,7 +289,7 @@ describe("PreparedMigrations - SQLite FK Merging", () => {
|
|
|
200
289
|
`"create table "users_test" ("id" text not null unique)"`,
|
|
201
290
|
);
|
|
202
291
|
expect(statements[2].sql).toMatchInlineSnapshot(
|
|
203
|
-
`"create table "posts_test" ("id" text not null unique, "authorId" integer not null,
|
|
292
|
+
`"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
293
|
);
|
|
205
294
|
});
|
|
206
295
|
|
|
@@ -286,7 +375,7 @@ describe("PreparedMigrations - MySQL", () => {
|
|
|
286
375
|
expect(statements.length).toBe(3);
|
|
287
376
|
expect(statements[0].sql).toMatchInlineSnapshot(`"SET FOREIGN_KEY_CHECKS = 0"`);
|
|
288
377
|
expect(statements[1].sql).toMatchInlineSnapshot(
|
|
289
|
-
`"create table \`users\` (\`_internalId\` bigint not null primary key
|
|
378
|
+
`"create table \`users\` (\`_internalId\` bigint not null auto_increment, constraint \`users__internalId\` primary key (\`_internalId\`))"`,
|
|
290
379
|
);
|
|
291
380
|
expect(statements[2].sql).toMatchInlineSnapshot(`"SET FOREIGN_KEY_CHECKS = 1"`);
|
|
292
381
|
});
|
|
@@ -335,7 +424,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
335
424
|
schema: testSchema,
|
|
336
425
|
namespace: "test",
|
|
337
426
|
database: "postgresql",
|
|
338
|
-
|
|
427
|
+
resolver,
|
|
339
428
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
340
429
|
driver: mockDriver as any,
|
|
341
430
|
});
|
|
@@ -379,7 +468,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
379
468
|
schema: testSchema,
|
|
380
469
|
namespace: "test",
|
|
381
470
|
database: "postgresql",
|
|
382
|
-
|
|
471
|
+
resolver,
|
|
383
472
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
384
473
|
driver: mockDriver as any,
|
|
385
474
|
});
|
|
@@ -404,7 +493,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
404
493
|
schema: testSchema,
|
|
405
494
|
namespace: "test",
|
|
406
495
|
database: "postgresql",
|
|
407
|
-
|
|
496
|
+
resolver,
|
|
408
497
|
});
|
|
409
498
|
|
|
410
499
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -426,7 +515,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
426
515
|
schema: testSchema,
|
|
427
516
|
namespace: "test",
|
|
428
517
|
database: "postgresql",
|
|
429
|
-
|
|
518
|
+
resolver,
|
|
430
519
|
});
|
|
431
520
|
|
|
432
521
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -462,7 +551,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
462
551
|
schema: testSchema,
|
|
463
552
|
namespace: "test",
|
|
464
553
|
database: "postgresql",
|
|
465
|
-
|
|
554
|
+
resolver,
|
|
466
555
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
467
556
|
driver: mockDriver as any,
|
|
468
557
|
});
|
|
@@ -478,7 +567,7 @@ describe("PreparedMigrations - Integration", () => {
|
|
|
478
567
|
schema: testSchema,
|
|
479
568
|
namespace: "test",
|
|
480
569
|
database: "postgresql",
|
|
481
|
-
|
|
570
|
+
resolver,
|
|
482
571
|
// No driver provided
|
|
483
572
|
});
|
|
484
573
|
|
|
@@ -494,7 +583,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
494
583
|
schema: testSchema,
|
|
495
584
|
namespace: "test",
|
|
496
585
|
database: "postgresql",
|
|
497
|
-
|
|
586
|
+
resolver,
|
|
498
587
|
});
|
|
499
588
|
|
|
500
589
|
const sql = prepared.getSQL(0, 2, { updateVersionInMigration: true });
|
|
@@ -503,9 +592,9 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
503
592
|
|
|
504
593
|
alter table "users_test" add column "age" integer;
|
|
505
594
|
|
|
506
|
-
create index "
|
|
595
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
507
596
|
|
|
508
|
-
create index "
|
|
597
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
509
598
|
|
|
510
599
|
insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '2');"
|
|
511
600
|
`);
|
|
@@ -516,7 +605,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
516
605
|
schema: testSchema,
|
|
517
606
|
namespace: "test",
|
|
518
607
|
database: "postgresql",
|
|
519
|
-
|
|
608
|
+
resolver,
|
|
520
609
|
});
|
|
521
610
|
|
|
522
611
|
const sql = prepared.getSQL(0, 4, { updateVersionInMigration: true });
|
|
@@ -525,13 +614,13 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
525
614
|
|
|
526
615
|
alter table "users_test" add column "age" integer;
|
|
527
616
|
|
|
528
|
-
create index "
|
|
617
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
529
618
|
|
|
530
|
-
create index "
|
|
619
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
531
620
|
|
|
532
621
|
create table "posts_test" ("id" varchar(30) not null unique, "title" text not null, "authorId" bigint not null, "_internalId" bigserial not null primary key, "_version" integer default 0 not null);
|
|
533
622
|
|
|
534
|
-
alter table "posts_test" add constraint "
|
|
623
|
+
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
624
|
|
|
536
625
|
insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '4');"
|
|
537
626
|
`);
|
|
@@ -542,16 +631,16 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
542
631
|
schema: testSchema,
|
|
543
632
|
namespace: "test",
|
|
544
633
|
database: "postgresql",
|
|
545
|
-
|
|
634
|
+
resolver,
|
|
546
635
|
});
|
|
547
636
|
|
|
548
637
|
const sql = prepared.getSQL(1, 2, { updateVersionInMigration: true });
|
|
549
638
|
expect(sql).toMatchInlineSnapshot(`
|
|
550
639
|
"alter table "users_test" add column "age" integer;
|
|
551
640
|
|
|
552
|
-
create index "
|
|
641
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
553
642
|
|
|
554
|
-
create index "
|
|
643
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
555
644
|
|
|
556
645
|
update "fragno_db_settings" set "value" = '2' where "key" = 'test.schema_version';"
|
|
557
646
|
`);
|
|
@@ -562,7 +651,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
562
651
|
schema: testSchema,
|
|
563
652
|
namespace: "test",
|
|
564
653
|
database: "postgresql",
|
|
565
|
-
|
|
654
|
+
resolver,
|
|
566
655
|
});
|
|
567
656
|
|
|
568
657
|
const sql = prepared.getSQL(2, 3, { updateVersionInMigration: true });
|
|
@@ -578,7 +667,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
578
667
|
schema: testSchema,
|
|
579
668
|
namespace: "test",
|
|
580
669
|
database: "sqlite",
|
|
581
|
-
|
|
670
|
+
resolver,
|
|
582
671
|
});
|
|
583
672
|
|
|
584
673
|
const sql = prepared.getSQL(0, 4, { updateVersionInMigration: true });
|
|
@@ -589,11 +678,11 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
589
678
|
|
|
590
679
|
alter table "users_test" add column "age" integer;
|
|
591
680
|
|
|
592
|
-
create index "
|
|
681
|
+
create index "idx_users_name_idx_test_92db5054" on "users_test" ("name");
|
|
593
682
|
|
|
594
|
-
create index "
|
|
683
|
+
create index "idx_users_age_idx_test_1c69311d" on "users_test" ("age");
|
|
595
684
|
|
|
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,
|
|
685
|
+
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
686
|
|
|
598
687
|
insert into "fragno_db_settings" ("id", "key", "value") values ('BflimUWc1NbCMMDD9SM3gQ', 'test.schema_version', '4');"
|
|
599
688
|
`);
|
|
@@ -604,24 +693,24 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
604
693
|
schema: testSchema,
|
|
605
694
|
namespace: "test",
|
|
606
695
|
database: "mysql",
|
|
607
|
-
|
|
696
|
+
resolver,
|
|
608
697
|
});
|
|
609
698
|
|
|
610
699
|
const sql = prepared.getSQL(0, 4, { updateVersionInMigration: true });
|
|
611
700
|
expect(sql).toMatchInlineSnapshot(`
|
|
612
701
|
"SET FOREIGN_KEY_CHECKS = 0;
|
|
613
702
|
|
|
614
|
-
create table \`users_test\` (\`id\` varchar(30) not null unique, \`name\` text not null, \`_internalId\` bigint not null
|
|
703
|
+
create table \`users_test\` (\`id\` varchar(30) 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
704
|
|
|
616
705
|
alter table \`users_test\` add column \`age\` integer;
|
|
617
706
|
|
|
618
|
-
create index \`
|
|
707
|
+
create index \`idx_users_name_idx_test_92db5054\` on \`users_test\` (\`name\`);
|
|
619
708
|
|
|
620
|
-
create index \`
|
|
709
|
+
create index \`idx_users_age_idx_test_1c69311d\` on \`users_test\` (\`age\`);
|
|
621
710
|
|
|
622
|
-
create table \`posts_test\` (\`id\` varchar(30) not null unique, \`title\` text not null, \`authorId\` bigint not null, \`_internalId\` bigint not null
|
|
711
|
+
create table \`posts_test\` (\`id\` varchar(30) 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
712
|
|
|
624
|
-
alter table \`posts_test\` add constraint \`
|
|
713
|
+
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
714
|
|
|
626
715
|
SET FOREIGN_KEY_CHECKS = 1;
|
|
627
716
|
|
|
@@ -634,7 +723,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
634
723
|
schema: testSchema,
|
|
635
724
|
namespace: "test",
|
|
636
725
|
database: "postgresql",
|
|
637
|
-
|
|
726
|
+
resolver,
|
|
638
727
|
});
|
|
639
728
|
|
|
640
729
|
const compiled = prepared.compile(0, 2, { updateVersionInMigration: true });
|
|
@@ -649,7 +738,7 @@ describe("PreparedMigrations - Multi-step Migration Scenarios", () => {
|
|
|
649
738
|
schema: testSchema,
|
|
650
739
|
namespace: "test",
|
|
651
740
|
database: "postgresql",
|
|
652
|
-
|
|
741
|
+
resolver,
|
|
653
742
|
});
|
|
654
743
|
|
|
655
744
|
const sql = prepared.getSQL(0, 1, { updateVersionInMigration: false });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AnySchema } from "../../../schema/create";
|
|
2
2
|
import type { SqlDriverAdapter } from "../../../sql-driver/sql-driver-adapter";
|
|
3
|
-
import type {
|
|
3
|
+
import type { NamingResolver } from "../../../naming/sql-naming";
|
|
4
4
|
import { generateMigrationFromSchema } from "../../../migration-engine/auto-from-schema";
|
|
5
5
|
import { createColdKysely } from "./cold-kysely";
|
|
6
6
|
import { type SQLGenerator } from "./sql-generator";
|
|
@@ -8,8 +8,9 @@ import { SQLiteSQLGenerator } from "./dialect/sqlite";
|
|
|
8
8
|
import { PostgresSQLGenerator } from "./dialect/postgres";
|
|
9
9
|
import { MySQLSQLGenerator } from "./dialect/mysql";
|
|
10
10
|
import { executeMigration, type CompiledMigration } from "./executor";
|
|
11
|
-
import type { SupportedDatabase } from "../driver-config";
|
|
11
|
+
import type { DriverConfig, SupportedDatabase } from "../driver-config";
|
|
12
12
|
import type { Kysely } from "kysely";
|
|
13
|
+
import type { SQLiteStorageMode } from "../sqlite-storage";
|
|
13
14
|
/**
|
|
14
15
|
* Options for executing a migration.
|
|
15
16
|
*/
|
|
@@ -85,7 +86,9 @@ export interface PreparedMigrationsConfig {
|
|
|
85
86
|
schema: AnySchema;
|
|
86
87
|
namespace: string;
|
|
87
88
|
database: SupportedDatabase;
|
|
88
|
-
|
|
89
|
+
driverConfig?: DriverConfig;
|
|
90
|
+
sqliteStorageMode?: SQLiteStorageMode;
|
|
91
|
+
resolver?: NamingResolver;
|
|
89
92
|
driver?: SqlDriverAdapter;
|
|
90
93
|
/**
|
|
91
94
|
* Whether to automatically update the schema version in the database after migration.
|
|
@@ -102,6 +105,8 @@ export function createPreparedMigrations(config: PreparedMigrationsConfig): Prep
|
|
|
102
105
|
schema,
|
|
103
106
|
namespace,
|
|
104
107
|
database,
|
|
108
|
+
driverConfig,
|
|
109
|
+
sqliteStorageMode,
|
|
105
110
|
driver,
|
|
106
111
|
updateVersionInMigration: defaultUpdateVersion = true,
|
|
107
112
|
} = config;
|
|
@@ -110,7 +115,7 @@ export function createPreparedMigrations(config: PreparedMigrationsConfig): Prep
|
|
|
110
115
|
const coldKysely = createColdKysely(database);
|
|
111
116
|
|
|
112
117
|
// Create the appropriate SQL generator for the database
|
|
113
|
-
const generator = createSQLGenerator(database, coldKysely);
|
|
118
|
+
const generator = createSQLGenerator(database, coldKysely, driverConfig, sqliteStorageMode);
|
|
114
119
|
|
|
115
120
|
/**
|
|
116
121
|
* Internal method to compile a migration for a given version range.
|
|
@@ -140,7 +145,7 @@ export function createPreparedMigrations(config: PreparedMigrationsConfig): Prep
|
|
|
140
145
|
const operations = generateMigrationFromSchema(schema, fromVersion, toVersion);
|
|
141
146
|
|
|
142
147
|
// Phase 2: Compile operations to SQL
|
|
143
|
-
const statements = generator.compile(operations, config.
|
|
148
|
+
const statements = generator.compile(operations, config.resolver);
|
|
144
149
|
|
|
145
150
|
// Add version update SQL if requested
|
|
146
151
|
if (updateVersionInMigration && toVersion !== fromVersion) {
|
|
@@ -202,13 +207,15 @@ function createSQLGenerator(
|
|
|
202
207
|
database: SupportedDatabase,
|
|
203
208
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
204
209
|
coldKysely: Kysely<any>,
|
|
210
|
+
driverConfig?: DriverConfig,
|
|
211
|
+
sqliteStorageMode?: SQLiteStorageMode,
|
|
205
212
|
): SQLGenerator {
|
|
206
213
|
switch (database) {
|
|
207
214
|
case "sqlite":
|
|
208
|
-
return new SQLiteSQLGenerator(coldKysely, database);
|
|
215
|
+
return new SQLiteSQLGenerator(coldKysely, database, driverConfig, sqliteStorageMode);
|
|
209
216
|
case "postgresql":
|
|
210
|
-
return new PostgresSQLGenerator(coldKysely, database);
|
|
217
|
+
return new PostgresSQLGenerator(coldKysely, database, driverConfig, sqliteStorageMode);
|
|
211
218
|
case "mysql":
|
|
212
|
-
return new MySQLSQLGenerator(coldKysely, database);
|
|
219
|
+
return new MySQLSQLGenerator(coldKysely, database, driverConfig, sqliteStorageMode);
|
|
213
220
|
}
|
|
214
221
|
}
|