sqlew 5.0.8 → 5.2.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/CHANGELOG.md +56 -0
- package/README.md +19 -10
- package/dist/adapters/auth/auth-factory.d.ts +2 -81
- package/dist/adapters/auth/auth-factory.d.ts.map +1 -1
- package/dist/adapters/auth/auth-factory.js +2 -82
- package/dist/adapters/auth/auth-factory.js.map +1 -1
- package/dist/adapters/auth/base-auth-provider.d.ts +18 -303
- package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -1
- package/dist/adapters/auth/base-auth-provider.js +2 -104
- package/dist/adapters/auth/base-auth-provider.js.map +1 -1
- package/dist/adapters/auth/direct-auth-provider.d.ts +4 -348
- package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -1
- package/dist/adapters/auth/direct-auth-provider.js +6 -356
- package/dist/adapters/auth/direct-auth-provider.js.map +1 -1
- package/dist/adapters/base-adapter.d.ts +31 -598
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +10 -458
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -11
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -11
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mysql-adapter.d.ts +15 -541
- package/dist/adapters/mysql-adapter.d.ts.map +1 -1
- package/dist/adapters/mysql-adapter.js +24 -561
- package/dist/adapters/mysql-adapter.js.map +1 -1
- package/dist/adapters/postgresql-adapter.d.ts +15 -203
- package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
- package/dist/adapters/postgresql-adapter.js +24 -223
- package/dist/adapters/postgresql-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts +4 -28
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +4 -32
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/adapters/types.d.ts +1 -4
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/backend/backend-factory.d.ts +3 -3
- package/dist/backend/backend-factory.js +3 -3
- package/dist/backend/local-backend.d.ts.map +1 -1
- package/dist/backend/local-backend.js +0 -5
- package/dist/backend/local-backend.js.map +1 -1
- package/dist/cli/db-export.d.ts.map +1 -1
- package/dist/cli/db-export.js +54 -32
- package/dist/cli/db-export.js.map +1 -1
- package/dist/cli/db-import.d.ts.map +1 -1
- package/dist/cli/db-import.js +32 -31
- package/dist/cli/db-import.js.map +1 -1
- package/dist/cli/hooks/on-exit-plan.d.ts.map +1 -1
- package/dist/cli/hooks/on-exit-plan.js +42 -1
- package/dist/cli/hooks/on-exit-plan.js.map +1 -1
- package/dist/cli/hooks/on-prompt.d.ts.map +1 -1
- package/dist/cli/hooks/on-prompt.js +5 -0
- package/dist/cli/hooks/on-prompt.js.map +1 -1
- package/dist/cli/hooks/plan-processor.d.ts.map +1 -1
- package/dist/cli/hooks/plan-processor.js +16 -2
- package/dist/cli/hooks/plan-processor.js.map +1 -1
- package/dist/cli/hooks/stdin-parser.d.ts +41 -0
- package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
- package/dist/cli/hooks/stdin-parser.js +140 -4
- package/dist/cli/hooks/stdin-parser.js.map +1 -1
- package/dist/cli/hooks/track-plan.d.ts +13 -0
- package/dist/cli/hooks/track-plan.d.ts.map +1 -1
- package/dist/cli/hooks/track-plan.js +58 -3
- package/dist/cli/hooks/track-plan.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -12
- package/dist/cli.js.map +1 -1
- package/dist/config/cloud-config-loader.d.ts +8 -8
- package/dist/config/cloud-config-loader.d.ts.map +1 -1
- package/dist/config/cloud-config-loader.js +12 -12
- package/dist/config/cloud-config-loader.js.map +1 -1
- package/dist/config/global-config.d.ts +24 -46
- package/dist/config/global-config.d.ts.map +1 -1
- package/dist/config/global-config.js +174 -56
- package/dist/config/global-config.js.map +1 -1
- package/dist/config/loader.d.ts +1 -18
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +1 -89
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +2 -64
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -18
- package/dist/config/types.js.map +1 -1
- package/dist/database/index.d.ts +1 -2
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +1 -3
- package/dist/database/index.js.map +1 -1
- package/dist/database/migrations/v4/20251126000001_v4_migrate_data.d.ts.map +1 -1
- package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js +2 -1
- package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js.map +1 -1
- package/dist/database/operations/queries.d.ts +0 -4
- package/dist/database/operations/queries.d.ts.map +1 -1
- package/dist/database/operations/queries.js +0 -8
- package/dist/database/operations/queries.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/init-rules.d.ts.map +1 -1
- package/dist/init-rules.js +0 -1
- package/dist/init-rules.js.map +1 -1
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +2 -1
- package/dist/knexfile.js.map +1 -1
- package/dist/migration/local-to-global.d.ts +19 -0
- package/dist/migration/local-to-global.d.ts.map +1 -0
- package/dist/migration/local-to-global.js +133 -0
- package/dist/migration/local-to-global.js.map +1 -0
- package/dist/saas-connector/client/types.d.ts +1 -1
- package/dist/saas-connector/client/types.d.ts.map +1 -1
- package/dist/schema.js +1 -1
- package/dist/server/setup.d.ts.map +1 -1
- package/dist/server/setup.js +15 -7
- package/dist/server/setup.js.map +1 -1
- package/dist/tests/backend/backend-factory.test.js +2 -2
- package/dist/tests/backend/backend-factory.test.js.map +1 -1
- package/dist/tests/docker/native/constraint-operations.test.d.ts +2 -17
- package/dist/tests/docker/native/constraint-operations.test.d.ts.map +1 -1
- package/dist/tests/docker/native/constraint-operations.test.js +3 -82
- package/dist/tests/docker/native/constraint-operations.test.js.map +1 -1
- package/dist/tests/docker/native/db-init.d.ts +3 -34
- package/dist/tests/docker/native/db-init.d.ts.map +1 -1
- package/dist/tests/docker/native/db-init.js +15 -77
- package/dist/tests/docker/native/db-init.js.map +1 -1
- package/dist/tests/docker/native/decision-operations.test.d.ts +2 -10
- package/dist/tests/docker/native/decision-operations.test.d.ts.map +1 -1
- package/dist/tests/docker/native/decision-operations.test.js +2 -84
- package/dist/tests/docker/native/decision-operations.test.js.map +1 -1
- package/dist/tests/docker/native/help-system.test.d.ts +2 -5
- package/dist/tests/docker/native/help-system.test.d.ts.map +1 -1
- package/dist/tests/docker/native/help-system.test.js +2 -47
- package/dist/tests/docker/native/help-system.test.js.map +1 -1
- package/dist/tests/docker/native/suggest-tool.test.d.ts +3 -11
- package/dist/tests/docker/native/suggest-tool.test.d.ts.map +1 -1
- package/dist/tests/docker/native/suggest-tool.test.js +3 -60
- package/dist/tests/docker/native/suggest-tool.test.js.map +1 -1
- package/dist/tests/docker/native/test-harness.d.ts +2 -23
- package/dist/tests/docker/native/test-harness.d.ts.map +1 -1
- package/dist/tests/docker/native/test-harness.js +5 -59
- package/dist/tests/docker/native/test-harness.js.map +1 -1
- package/dist/tests/feature/decision/analytics.test.js +2 -1
- package/dist/tests/feature/decision/analytics.test.js.map +1 -1
- package/dist/tests/feature/decision/batch-validation-comprehensive.test.js +2 -7
- package/dist/tests/feature/decision/batch-validation-comprehensive.test.js.map +1 -1
- package/dist/tests/feature/decision/batch-validation.test.js +2 -1
- package/dist/tests/feature/decision/batch-validation.test.js.map +1 -1
- package/dist/tests/integration/auto-trigger-suggestions.test.js +4 -37
- package/dist/tests/integration/auto-trigger-suggestions.test.js.map +1 -1
- package/dist/tests/integration/hybrid-similarity-detection.test.js +2 -1
- package/dist/tests/integration/hybrid-similarity-detection.test.js.map +1 -1
- package/dist/tests/integration/json-export-import.test.d.ts.map +1 -0
- package/dist/tests/integration/json-export-import.test.js.map +1 -0
- package/dist/tests/unit/case-insensitive-validator.test.d.ts +0 -7
- package/dist/tests/unit/case-insensitive-validator.test.d.ts.map +1 -1
- package/dist/tests/unit/case-insensitive-validator.test.js +0 -22
- package/dist/tests/unit/case-insensitive-validator.test.js.map +1 -1
- package/dist/tests/unit/config/cloud-config-loader.test.js +4 -2
- package/dist/tests/unit/config/cloud-config-loader.test.js.map +1 -1
- package/dist/tests/unit/config/global-db-migration.test.d.ts +12 -0
- package/dist/tests/unit/config/global-db-migration.test.d.ts.map +1 -0
- package/dist/tests/unit/config/global-db-migration.test.js +117 -0
- package/dist/tests/unit/config/global-db-migration.test.js.map +1 -0
- package/dist/tests/unit/constraint-scorer.test.d.ts +2 -7
- package/dist/tests/unit/constraint-scorer.test.d.ts.map +1 -1
- package/dist/tests/unit/constraint-scorer.test.js +2 -28
- package/dist/tests/unit/constraint-scorer.test.js.map +1 -1
- package/dist/tests/unit/hooks/grok-hook-normalization.test.d.ts +9 -0
- package/dist/tests/unit/hooks/grok-hook-normalization.test.d.ts.map +1 -0
- package/dist/tests/unit/hooks/grok-hook-normalization.test.js +98 -0
- package/dist/tests/unit/hooks/grok-hook-normalization.test.js.map +1 -0
- package/dist/tests/unit/hooks/grok-plan-template-injection.test.d.ts +7 -0
- package/dist/tests/unit/hooks/grok-plan-template-injection.test.d.ts.map +1 -0
- package/dist/tests/unit/hooks/grok-plan-template-injection.test.js +55 -0
- package/dist/tests/unit/hooks/grok-plan-template-injection.test.js.map +1 -0
- package/dist/tests/unit/universal-knex.test.js +9 -0
- package/dist/tests/unit/universal-knex.test.js.map +1 -1
- package/dist/tests/unit/validation/parameter-validation.test.js +0 -24
- package/dist/tests/unit/validation/parameter-validation.test.js.map +1 -1
- package/dist/tests/utils/db-config.d.ts.map +1 -1
- package/dist/tests/utils/db-config.js +0 -9
- package/dist/tests/utils/db-config.js.map +1 -1
- package/dist/tests/utils/db-import.d.ts.map +1 -1
- package/dist/tests/utils/db-import.js +0 -3
- package/dist/tests/utils/db-import.js.map +1 -1
- package/dist/tests/utils/db-schema.d.ts.map +1 -1
- package/dist/tests/utils/db-schema.js +48 -51
- package/dist/tests/utils/db-schema.js.map +1 -1
- package/dist/tests/utils/db-seeding.d.ts.map +1 -1
- package/dist/tests/utils/db-seeding.js +0 -3
- package/dist/tests/utils/db-seeding.js.map +1 -1
- package/dist/tests/utils/index.d.ts +0 -1
- package/dist/tests/utils/index.d.ts.map +1 -1
- package/dist/tests/utils/index.js +0 -2
- package/dist/tests/utils/index.js.map +1 -1
- package/dist/tests/utils/test-helpers.d.ts +6 -76
- package/dist/tests/utils/test-helpers.d.ts.map +1 -1
- package/dist/tests/utils/test-helpers.js +56 -162
- package/dist/tests/utils/test-helpers.js.map +1 -1
- package/dist/tests/utils/test-lifecycle.d.ts +2 -28
- package/dist/tests/utils/test-lifecycle.d.ts.map +1 -1
- package/dist/tests/utils/test-lifecycle.js +2 -31
- package/dist/tests/utils/test-lifecycle.js.map +1 -1
- package/dist/tools/context/index.d.ts +0 -1
- package/dist/tools/context/index.d.ts.map +1 -1
- package/dist/tools/context/index.js +0 -2
- package/dist/tools/context/index.js.map +1 -1
- package/dist/tools/context/types.d.ts +1 -1
- package/dist/tools/context/types.d.ts.map +1 -1
- package/dist/types/actions.d.ts +6 -29
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/actions.js +1 -2
- package/dist/types/actions.js.map +1 -1
- package/dist/types/constraint/params.d.ts +24 -1
- package/dist/types/constraint/params.d.ts.map +1 -1
- package/dist/types/constraint/params.js +3 -0
- package/dist/types/constraint/params.js.map +1 -1
- package/dist/types/constraint/responses.d.ts +18 -1
- package/dist/types/constraint/responses.d.ts.map +1 -1
- package/dist/types/constraint/responses.js +3 -0
- package/dist/types/constraint/responses.js.map +1 -1
- package/dist/types/decision/batch.d.ts +2 -5
- package/dist/types/decision/batch.d.ts.map +1 -1
- package/dist/types/decision/batch.js +3 -3
- package/dist/types/decision/batch.js.map +1 -1
- package/dist/types/decision/params.d.ts +7 -4
- package/dist/types/decision/params.d.ts.map +1 -1
- package/dist/types/decision/responses.d.ts +49 -35
- package/dist/types/decision/responses.d.ts.map +1 -1
- package/dist/types/decision/templates.d.ts +2 -18
- package/dist/types/decision/templates.d.ts.map +1 -1
- package/dist/types/decision/templates.js +3 -3
- package/dist/types/decision/templates.js.map +1 -1
- package/dist/types/enums.d.ts +11 -13
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +5 -13
- package/dist/types/enums.js.map +1 -1
- package/dist/types/import-export.d.ts +7 -30
- package/dist/types/import-export.d.ts.map +1 -1
- package/dist/types/import-export.js +1 -2
- package/dist/types/import-export.js.map +1 -1
- package/dist/types/index.d.ts +18 -22
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -32
- package/dist/types/index.js.map +1 -1
- package/dist/types/master-entities.d.ts +1 -10
- package/dist/types/master-entities.d.ts.map +1 -1
- package/dist/types/master-entities.js +1 -2
- package/dist/types/master-entities.js.map +1 -1
- package/dist/types/transaction-entities.d.ts +2 -21
- package/dist/types/transaction-entities.d.ts.map +1 -1
- package/dist/types/transaction-entities.js +1 -1
- package/dist/types/validation.d.ts +1 -16
- package/dist/types/validation.d.ts.map +1 -1
- package/dist/types/validation.js +1 -2
- package/dist/types/validation.js.map +1 -1
- package/dist/types/view-entities.d.ts +3 -12
- package/dist/types/view-entities.d.ts.map +1 -1
- package/dist/types/view-entities.js +1 -1
- package/dist/types.d.ts +4 -718
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -39
- package/dist/types.js.map +1 -1
- package/dist/utils/parameter-validator.d.ts +2 -2
- package/dist/utils/parameter-validator.d.ts.map +1 -1
- package/dist/utils/parameter-validator.js.map +1 -1
- package/dist/utils/path-normalize.d.ts +23 -0
- package/dist/utils/path-normalize.d.ts.map +1 -0
- package/dist/utils/path-normalize.js +38 -0
- package/dist/utils/path-normalize.js.map +1 -0
- package/dist/utils/project-root.d.ts +6 -3
- package/dist/utils/project-root.d.ts.map +1 -1
- package/dist/utils/project-root.js +11 -3
- package/dist/utils/project-root.js.map +1 -1
- package/dist/watcher/base-watcher.d.ts +0 -4
- package/dist/watcher/base-watcher.d.ts.map +1 -1
- package/dist/watcher/base-watcher.js +11 -22
- package/dist/watcher/base-watcher.js.map +1 -1
- package/docs/CLI_USAGE.md +27 -107
- package/docs/CONFIGURATION.md +10 -5
- package/docs/DATABASE_AUTH.md +3 -3
- package/docs/HOOKS_GUIDE.md +40 -6
- package/docs/MIGRATION_TO_SAAS.md +2 -2
- package/docs/SHARED_DATABASE.md +108 -0
- package/package.json +4 -3
- package/dist/adapters/auth/auth-types.d.ts +0 -30
- package/dist/adapters/auth/auth-types.d.ts.map +0 -1
- package/dist/adapters/auth/auth-types.js +0 -30
- package/dist/adapters/auth/auth-types.js.map +0 -1
- package/dist/cli/db-dump.d.ts +0 -36
- package/dist/cli/db-dump.d.ts.map +0 -1
- package/dist/cli/db-dump.js +0 -384
- package/dist/cli/db-dump.js.map +0 -1
- package/dist/database/config/config-ops.d.ts +0 -42
- package/dist/database/config/config-ops.d.ts.map +0 -1
- package/dist/database/config/config-ops.js +0 -102
- package/dist/database/config/config-ops.js.map +0 -1
- package/dist/formatters/adr-formatter.d.ts +0 -22
- package/dist/formatters/adr-formatter.d.ts.map +0 -1
- package/dist/formatters/adr-formatter.js +0 -127
- package/dist/formatters/adr-formatter.js.map +0 -1
- package/dist/formatters/confluence-formatter.d.ts +0 -26
- package/dist/formatters/confluence-formatter.d.ts.map +0 -1
- package/dist/formatters/confluence-formatter.js +0 -129
- package/dist/formatters/confluence-formatter.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -34
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js +0 -57
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/markdown-formatter.d.ts +0 -16
- package/dist/formatters/markdown-formatter.d.ts.map +0 -1
- package/dist/formatters/markdown-formatter.js +0 -110
- package/dist/formatters/markdown-formatter.js.map +0 -1
- package/dist/formatters/notion-formatter.d.ts +0 -29
- package/dist/formatters/notion-formatter.d.ts.map +0 -1
- package/dist/formatters/notion-formatter.js +0 -177
- package/dist/formatters/notion-formatter.js.map +0 -1
- package/dist/formatters/types.d.ts +0 -31
- package/dist/formatters/types.d.ts.map +0 -1
- package/dist/formatters/types.js +0 -6
- package/dist/formatters/types.js.map +0 -1
- package/dist/tests/database/sql-dump/converters.test.d.ts +0 -7
- package/dist/tests/database/sql-dump/converters.test.d.ts.map +0 -1
- package/dist/tests/database/sql-dump/converters.test.js +0 -314
- package/dist/tests/database/sql-dump/converters.test.js.map +0 -1
- package/dist/tests/database/sql-dump/default-conversions.test.d.ts +0 -8
- package/dist/tests/database/sql-dump/default-conversions.test.d.ts.map +0 -1
- package/dist/tests/database/sql-dump/default-conversions.test.js +0 -141
- package/dist/tests/database/sql-dump/default-conversions.test.js.map +0 -1
- package/dist/tests/database/sql-dump/table-ordering.test.d.ts +0 -27
- package/dist/tests/database/sql-dump/table-ordering.test.d.ts.map +0 -1
- package/dist/tests/database/sql-dump/table-ordering.test.js +0 -284
- package/dist/tests/database/sql-dump/table-ordering.test.js.map +0 -1
- package/dist/tests/database/sql-dump/type-conversion.test.d.ts +0 -8
- package/dist/tests/database/sql-dump/type-conversion.test.d.ts.map +0 -1
- package/dist/tests/database/sql-dump/type-conversion.test.js +0 -361
- package/dist/tests/database/sql-dump/type-conversion.test.js.map +0 -1
- package/dist/tests/docker/cross-database.test.d.ts +0 -21
- package/dist/tests/docker/cross-database.test.d.ts.map +0 -1
- package/dist/tests/docker/cross-database.test.js +0 -308
- package/dist/tests/docker/cross-database.test.js.map +0 -1
- package/dist/tests/docker/dump-import.test.d.ts +0 -15
- package/dist/tests/docker/dump-import.test.d.ts.map +0 -1
- package/dist/tests/docker/dump-import.test.js +0 -424
- package/dist/tests/docker/dump-import.test.js.map +0 -1
- package/dist/tests/docker/fk-constraints.test.d.ts +0 -13
- package/dist/tests/docker/fk-constraints.test.d.ts.map +0 -1
- package/dist/tests/docker/fk-constraints.test.js +0 -381
- package/dist/tests/docker/fk-constraints.test.js.map +0 -1
- package/dist/tests/docker/indexes.test.d.ts +0 -12
- package/dist/tests/docker/indexes.test.d.ts.map +0 -1
- package/dist/tests/docker/indexes.test.js +0 -250
- package/dist/tests/docker/indexes.test.js.map +0 -1
- package/dist/tests/docker/integration.test.d.ts +0 -16
- package/dist/tests/docker/integration.test.d.ts.map +0 -1
- package/dist/tests/docker/integration.test.js +0 -323
- package/dist/tests/docker/integration.test.js.map +0 -1
- package/dist/tests/docker/multi-project-migration.test.d.ts +0 -17
- package/dist/tests/docker/multi-project-migration.test.d.ts.map +0 -1
- package/dist/tests/docker/multi-project-migration.test.js +0 -394
- package/dist/tests/docker/multi-project-migration.test.js.map +0 -1
- package/dist/tests/docker/schema-migration.test.d.ts +0 -8
- package/dist/tests/docker/schema-migration.test.d.ts.map +0 -1
- package/dist/tests/docker/schema-migration.test.js +0 -98
- package/dist/tests/docker/schema-migration.test.js.map +0 -1
- package/dist/tests/integration/e2e-workflow1-debug.test.d.ts +0 -5
- package/dist/tests/integration/e2e-workflow1-debug.test.d.ts.map +0 -1
- package/dist/tests/integration/e2e-workflow1-debug.test.js +0 -85
- package/dist/tests/integration/e2e-workflow1-debug.test.js.map +0 -1
- package/dist/tests/integration/suggest-simple.test.d.ts +0 -5
- package/dist/tests/integration/suggest-simple.test.d.ts.map +0 -1
- package/dist/tests/integration/suggest-simple.test.js +0 -90
- package/dist/tests/integration/suggest-simple.test.js.map +0 -1
- package/dist/tests/migrations/test-all-versions-real.d.ts +0 -8
- package/dist/tests/migrations/test-all-versions-real.d.ts.map +0 -1
- package/dist/tests/migrations/test-all-versions-real.js +0 -236
- package/dist/tests/migrations/test-all-versions-real.js.map +0 -1
- package/dist/tests/migrations/test-all-versions.d.ts +0 -14
- package/dist/tests/migrations/test-all-versions.d.ts.map +0 -1
- package/dist/tests/migrations/test-all-versions.js +0 -519
- package/dist/tests/migrations/test-all-versions.js.map +0 -1
- package/dist/tests/migrations/v4/v4-fresh-install.test.d.ts +0 -7
- package/dist/tests/migrations/v4/v4-fresh-install.test.d.ts.map +0 -1
- package/dist/tests/migrations/v4/v4-fresh-install.test.js +0 -168
- package/dist/tests/migrations/v4/v4-fresh-install.test.js.map +0 -1
- package/dist/tests/migrations/v4/v4-migrate-data.test.d.ts +0 -13
- package/dist/tests/migrations/v4/v4-migrate-data.test.d.ts.map +0 -1
- package/dist/tests/migrations/v4/v4-migrate-data.test.js +0 -264
- package/dist/tests/migrations/v4/v4-migrate-data.test.js.map +0 -1
- package/dist/tests/unit/utils/case-insensitive-validator.test.d.ts +0 -2
- package/dist/tests/unit/utils/case-insensitive-validator.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/case-insensitive-validator.test.js +0 -97
- package/dist/tests/unit/utils/case-insensitive-validator.test.js.map +0 -1
- package/dist/tests/utils/json-export-import.test.d.ts.map +0 -1
- package/dist/tests/utils/json-export-import.test.js.map +0 -1
- package/dist/tests/utils/task-helpers.d.ts +0 -67
- package/dist/tests/utils/task-helpers.d.ts.map +0 -1
- package/dist/tests/utils/task-helpers.js +0 -134
- package/dist/tests/utils/task-helpers.js.map +0 -1
- package/dist/tools/context/actions/export.d.ts +0 -35
- package/dist/tools/context/actions/export.d.ts.map +0 -1
- package/dist/tools/context/actions/export.js +0 -93
- package/dist/tools/context/actions/export.js.map +0 -1
- package/dist/types/file/params.d.ts +0 -40
- package/dist/types/file/params.d.ts.map +0 -1
- package/dist/types/file/params.js +0 -6
- package/dist/types/file/params.js.map +0 -1
- package/dist/types/file/responses.d.ts +0 -2
- package/dist/types/file/responses.d.ts.map +0 -1
- package/dist/types/file/responses.js +0 -2
- package/dist/types/file/responses.js.map +0 -1
- package/dist/types/task/params.d.ts +0 -173
- package/dist/types/task/params.d.ts.map +0 -1
- package/dist/types/task/params.js +0 -8
- package/dist/types/task/params.js.map +0 -1
- package/dist/types/task/responses.d.ts +0 -334
- package/dist/types/task/responses.d.ts.map +0 -1
- package/dist/types/task/responses.js +0 -8
- package/dist/types/task/responses.js.map +0 -1
- package/dist/utils/sql-dump/core/dependency-sort.d.ts +0 -16
- package/dist/utils/sql-dump/core/dependency-sort.d.ts.map +0 -1
- package/dist/utils/sql-dump/core/dependency-sort.js +0 -105
- package/dist/utils/sql-dump/core/dependency-sort.js.map +0 -1
- package/dist/utils/sql-dump/core/generate-dump.d.ts +0 -13
- package/dist/utils/sql-dump/core/generate-dump.d.ts.map +0 -1
- package/dist/utils/sql-dump/core/generate-dump.js +0 -201
- package/dist/utils/sql-dump/core/generate-dump.js.map +0 -1
- package/dist/utils/sql-dump/core/index-export.d.ts +0 -10
- package/dist/utils/sql-dump/core/index-export.d.ts.map +0 -1
- package/dist/utils/sql-dump/core/index-export.js +0 -173
- package/dist/utils/sql-dump/core/index-export.js.map +0 -1
- package/dist/utils/sql-dump/core/sequence-reset.d.ts +0 -6
- package/dist/utils/sql-dump/core/sequence-reset.d.ts.map +0 -1
- package/dist/utils/sql-dump/core/sequence-reset.js +0 -28
- package/dist/utils/sql-dump/core/sequence-reset.js.map +0 -1
- package/dist/utils/sql-dump/core/table-export.d.ts +0 -2
- package/dist/utils/sql-dump/core/table-export.d.ts.map +0 -1
- package/dist/utils/sql-dump/core/table-export.js +0 -4
- package/dist/utils/sql-dump/core/table-export.js.map +0 -1
- package/dist/utils/sql-dump/core/view-export.d.ts +0 -2
- package/dist/utils/sql-dump/core/view-export.d.ts.map +0 -1
- package/dist/utils/sql-dump/core/view-export.js +0 -4
- package/dist/utils/sql-dump/core/view-export.js.map +0 -1
- package/dist/utils/sql-dump/formatters/bulk-insert.d.ts +0 -14
- package/dist/utils/sql-dump/formatters/bulk-insert.d.ts.map +0 -1
- package/dist/utils/sql-dump/formatters/bulk-insert.js +0 -177
- package/dist/utils/sql-dump/formatters/bulk-insert.js.map +0 -1
- package/dist/utils/sql-dump/formatters/identifiers.d.ts +0 -6
- package/dist/utils/sql-dump/formatters/identifiers.d.ts.map +0 -1
- package/dist/utils/sql-dump/formatters/identifiers.js +0 -16
- package/dist/utils/sql-dump/formatters/identifiers.js.map +0 -1
- package/dist/utils/sql-dump/formatters/value-formatter.d.ts +0 -14
- package/dist/utils/sql-dump/formatters/value-formatter.d.ts.map +0 -1
- package/dist/utils/sql-dump/formatters/value-formatter.js +0 -281
- package/dist/utils/sql-dump/formatters/value-formatter.js.map +0 -1
- package/dist/utils/sql-dump/generators/controls.d.ts +0 -10
- package/dist/utils/sql-dump/generators/controls.d.ts.map +0 -1
- package/dist/utils/sql-dump/generators/controls.js +0 -36
- package/dist/utils/sql-dump/generators/controls.js.map +0 -1
- package/dist/utils/sql-dump/generators/headers.d.ts +0 -6
- package/dist/utils/sql-dump/generators/headers.d.ts.map +0 -1
- package/dist/utils/sql-dump/generators/headers.js +0 -19
- package/dist/utils/sql-dump/generators/headers.js.map +0 -1
- package/dist/utils/sql-dump/index.d.ts +0 -14
- package/dist/utils/sql-dump/index.d.ts.map +0 -1
- package/dist/utils/sql-dump/index.js +0 -16
- package/dist/utils/sql-dump/index.js.map +0 -1
- package/dist/utils/sql-dump/schema/indexes.d.ts +0 -20
- package/dist/utils/sql-dump/schema/indexes.d.ts.map +0 -1
- package/dist/utils/sql-dump/schema/indexes.js +0 -108
- package/dist/utils/sql-dump/schema/indexes.js.map +0 -1
- package/dist/utils/sql-dump/schema/primary-keys.d.ts +0 -6
- package/dist/utils/sql-dump/schema/primary-keys.d.ts.map +0 -1
- package/dist/utils/sql-dump/schema/primary-keys.js +0 -41
- package/dist/utils/sql-dump/schema/primary-keys.js.map +0 -1
- package/dist/utils/sql-dump/schema/tables.d.ts +0 -15
- package/dist/utils/sql-dump/schema/tables.d.ts.map +0 -1
- package/dist/utils/sql-dump/schema/tables.js +0 -518
- package/dist/utils/sql-dump/schema/tables.js.map +0 -1
- package/dist/utils/sql-dump/schema/views.d.ts +0 -11
- package/dist/utils/sql-dump/schema/views.d.ts.map +0 -1
- package/dist/utils/sql-dump/schema/views.js +0 -116
- package/dist/utils/sql-dump/schema/views.js.map +0 -1
- package/dist/utils/sql-dump/types.d.ts +0 -10
- package/dist/utils/sql-dump/types.d.ts.map +0 -1
- package/dist/utils/sql-dump/types.js +0 -3
- package/dist/utils/sql-dump/types.js.map +0 -1
- package/dist/utils/sql-dump-converters.d.ts +0 -188
- package/dist/utils/sql-dump-converters.d.ts.map +0 -1
- package/dist/utils/sql-dump-converters.js +0 -315
- package/dist/utils/sql-dump-converters.js.map +0 -1
- package/dist/watcher/gitignore-parser.d.ts +0 -70
- package/dist/watcher/gitignore-parser.d.ts.map +0 -1
- package/dist/watcher/gitignore-parser.js +0 -195
- package/dist/watcher/gitignore-parser.js.map +0 -1
- package/dist/watcher/index.d.ts +0 -9
- package/dist/watcher/index.d.ts.map +0 -1
- package/dist/watcher/index.js +0 -8
- package/dist/watcher/index.js.map +0 -1
- /package/dist/tests/{utils → integration}/json-export-import.test.d.ts +0 -0
- /package/dist/tests/{utils → integration}/json-export-import.test.js +0 -0
|
@@ -1,518 +0,0 @@
|
|
|
1
|
-
// schema/tables.ts - Table detection and CREATE TABLE statement generation
|
|
2
|
-
import { SchemaInspector } from 'knex-schema-inspector';
|
|
3
|
-
import { quoteIdentifier } from '../formatters/identifiers.js';
|
|
4
|
-
import { debugLog } from '../../debug-logger.js';
|
|
5
|
-
/**
|
|
6
|
-
* Convert data type from source format to target format using metadata
|
|
7
|
-
*/
|
|
8
|
-
function convertDataType(columnType, targetFormat, maxLength) {
|
|
9
|
-
const upperType = columnType.toUpperCase();
|
|
10
|
-
if (targetFormat === 'mysql') {
|
|
11
|
-
// MySQL-specific conversions
|
|
12
|
-
if (upperType.includes('SERIAL') || upperType.includes('BIGSERIAL')) {
|
|
13
|
-
return 'BIGINT AUTO_INCREMENT';
|
|
14
|
-
}
|
|
15
|
-
if (upperType.includes('TEXT')) {
|
|
16
|
-
return 'TEXT';
|
|
17
|
-
}
|
|
18
|
-
if (upperType.includes('VARCHAR')) {
|
|
19
|
-
// Use maxLength from metadata
|
|
20
|
-
const length = maxLength && maxLength <= 191 ? maxLength : 191;
|
|
21
|
-
return `VARCHAR(${length})`;
|
|
22
|
-
}
|
|
23
|
-
if (upperType.includes('TIMESTAMP') || upperType.includes('TIMESTAMPTZ')) {
|
|
24
|
-
return 'DATETIME';
|
|
25
|
-
}
|
|
26
|
-
if (upperType.includes('BOOLEAN') || upperType === 'BOOL') {
|
|
27
|
-
return 'TINYINT(1)';
|
|
28
|
-
}
|
|
29
|
-
if (upperType === 'INTEGER' || upperType === 'INT') {
|
|
30
|
-
return 'INT';
|
|
31
|
-
}
|
|
32
|
-
if (upperType.includes('BIGINT')) {
|
|
33
|
-
return 'BIGINT';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else if (targetFormat === 'postgresql') {
|
|
37
|
-
// PostgreSQL-specific conversions
|
|
38
|
-
if (upperType.includes('AUTOINCREMENT') || upperType.includes('AUTO_INCREMENT')) {
|
|
39
|
-
return 'SERIAL';
|
|
40
|
-
}
|
|
41
|
-
if (upperType.includes('DATETIME')) {
|
|
42
|
-
return 'TIMESTAMP';
|
|
43
|
-
}
|
|
44
|
-
if (upperType.includes('TINYINT') || upperType === 'BIT') {
|
|
45
|
-
return 'BOOLEAN';
|
|
46
|
-
}
|
|
47
|
-
if (upperType.includes('TEXT')) {
|
|
48
|
-
return 'TEXT';
|
|
49
|
-
}
|
|
50
|
-
if (upperType.includes('VARCHAR')) {
|
|
51
|
-
const length = maxLength || 255;
|
|
52
|
-
return `VARCHAR(${length})`;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else if (targetFormat === 'sqlite') {
|
|
56
|
-
// SQLite-specific conversions
|
|
57
|
-
if (upperType.includes('SERIAL') || upperType.includes('AUTO_INCREMENT') || upperType.includes('AUTOINCREMENT')) {
|
|
58
|
-
return 'INTEGER';
|
|
59
|
-
}
|
|
60
|
-
if (upperType.includes('VARCHAR') || upperType.includes('TEXT')) {
|
|
61
|
-
return 'TEXT';
|
|
62
|
-
}
|
|
63
|
-
if (upperType.includes('TINYINT') || upperType.includes('BOOLEAN')) {
|
|
64
|
-
return 'INTEGER';
|
|
65
|
-
}
|
|
66
|
-
if (upperType.includes('DATETIME') || upperType.includes('TIMESTAMP')) {
|
|
67
|
-
return 'INTEGER'; // SQLite stores as Unix timestamp
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// Default: return as-is
|
|
71
|
-
return columnType;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Convert default value from SQLite functions to target format
|
|
75
|
-
* Handles: unixepoch() → UNIX_TIMESTAMP() / EXTRACT(epoch FROM NOW())
|
|
76
|
-
* strftime() → DATE_FORMAT() / TO_CHAR()
|
|
77
|
-
*
|
|
78
|
-
* PostgreSQL-specific: Skip nextval() sequences (auto-increment, should use SERIAL)
|
|
79
|
-
*/
|
|
80
|
-
function convertDefaultValue(defaultValue, targetFormat) {
|
|
81
|
-
if (!defaultValue) {
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
const lower = defaultValue.toLowerCase().trim();
|
|
85
|
-
// PostgreSQL: Skip nextval() sequences (SERIAL columns handle auto-increment)
|
|
86
|
-
// Example: nextval('table_id_seq'::regclass)
|
|
87
|
-
if (lower.includes('nextval')) {
|
|
88
|
-
return null; // Skip DEFAULT - column should use SERIAL type instead
|
|
89
|
-
}
|
|
90
|
-
// SQLite unixepoch() conversions
|
|
91
|
-
if (lower.includes('unixepoch()') || lower === 'unixepoch()') {
|
|
92
|
-
if (targetFormat === 'mysql') {
|
|
93
|
-
// MySQL 8.0+: Use CAST to explicitly convert UNIX_TIMESTAMP() to SIGNED INTEGER
|
|
94
|
-
// Wrapped in parentheses for expression syntax
|
|
95
|
-
return '(CAST(UNIX_TIMESTAMP() AS SIGNED))';
|
|
96
|
-
}
|
|
97
|
-
else if (targetFormat === 'postgresql') {
|
|
98
|
-
return 'EXTRACT(epoch FROM NOW())::INTEGER';
|
|
99
|
-
}
|
|
100
|
-
return null; // Remove for SQLite
|
|
101
|
-
}
|
|
102
|
-
// SQLite strftime('%s', 'now') - Unix timestamp (INTEGER)
|
|
103
|
-
// Must check BEFORE generic strftime to handle this specific case
|
|
104
|
-
if (lower.includes("strftime('%s'") || lower.includes('strftime("%s"')) {
|
|
105
|
-
if (targetFormat === 'mysql') {
|
|
106
|
-
// MySQL 8.0+: Use CAST to explicitly convert UNIX_TIMESTAMP() to SIGNED INTEGER
|
|
107
|
-
// Wrapped in parentheses for expression syntax
|
|
108
|
-
return '(CAST(UNIX_TIMESTAMP() AS SIGNED))';
|
|
109
|
-
}
|
|
110
|
-
else if (targetFormat === 'postgresql') {
|
|
111
|
-
return 'EXTRACT(epoch FROM NOW())::INTEGER';
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
// MySQL UNIX_TIMESTAMP() - already MySQL syntax, needs CAST wrapping
|
|
116
|
-
// Match both "unix_timestamp()" and "UNIX_TIMESTAMP()" case-insensitively
|
|
117
|
-
if (lower.includes('unix_timestamp')) {
|
|
118
|
-
if (targetFormat === 'mysql') {
|
|
119
|
-
// MySQL 8.0+: Wrap UNIX_TIMESTAMP() with CAST for type safety
|
|
120
|
-
return '(CAST(UNIX_TIMESTAMP() AS SIGNED))';
|
|
121
|
-
}
|
|
122
|
-
else if (targetFormat === 'postgresql') {
|
|
123
|
-
return 'EXTRACT(epoch FROM NOW())::INTEGER';
|
|
124
|
-
}
|
|
125
|
-
else if (targetFormat === 'sqlite') {
|
|
126
|
-
return 'unixepoch()';
|
|
127
|
-
}
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
// SQLite strftime conversions (datetime formats)
|
|
131
|
-
if (lower.includes('strftime')) {
|
|
132
|
-
if (targetFormat === 'mysql') {
|
|
133
|
-
// strftime('%Y-%m-%d %H:%M:%S', 'now') → NOW()
|
|
134
|
-
return 'NOW()';
|
|
135
|
-
}
|
|
136
|
-
else if (targetFormat === 'postgresql') {
|
|
137
|
-
return 'NOW()';
|
|
138
|
-
}
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
// Remove parentheses for simple values
|
|
142
|
-
let cleanValue = defaultValue;
|
|
143
|
-
if (lower.startsWith('(') && lower.endsWith(')')) {
|
|
144
|
-
cleanValue = defaultValue.substring(1, defaultValue.length - 1);
|
|
145
|
-
}
|
|
146
|
-
// For numeric defaults, normalize floating point values
|
|
147
|
-
// Remove trailing .0 (e.g., 1.0 → 1) to avoid type mismatches
|
|
148
|
-
const trimmed = cleanValue.trim();
|
|
149
|
-
if (/^\d+\.0+$/.test(trimmed)) {
|
|
150
|
-
return trimmed.replace(/\.0+$/, '');
|
|
151
|
-
}
|
|
152
|
-
// Quote string literals if not already quoted and not a number
|
|
153
|
-
if (!/^['"]/.test(trimmed) && !/^-?\d+(\.\d+)?$/.test(trimmed) && !/^(true|false|null|current_timestamp|now\(\)|unix_timestamp\(\))$/i.test(trimmed)) {
|
|
154
|
-
return `'${trimmed}'`;
|
|
155
|
-
}
|
|
156
|
-
return trimmed;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Build column definition from Column metadata
|
|
160
|
-
*/
|
|
161
|
-
function buildColumnDefinition(col, targetFormat) {
|
|
162
|
-
const quotedName = quoteIdentifier(col.name, targetFormat);
|
|
163
|
-
let dataType = convertDataType(col.data_type, targetFormat, col.max_length);
|
|
164
|
-
// MySQL: TEXT columns cannot be used in UNIQUE/PRIMARY KEY constraints without prefix length
|
|
165
|
-
// Convert TEXT to VARCHAR(191) for utf8mb4 compatibility (768 bytes ÷ 4 bytes/char = 191)
|
|
166
|
-
if (targetFormat === 'mysql' && dataType.toUpperCase() === 'TEXT') {
|
|
167
|
-
if (col.is_unique || col.is_primary_key || col.foreign_key_table || col.in_composite_unique) {
|
|
168
|
-
dataType = 'VARCHAR(191)';
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
let def = `${quotedName} ${dataType}`;
|
|
172
|
-
// Handle NOT NULL constraint
|
|
173
|
-
if (col.is_nullable === false) {
|
|
174
|
-
def += ' NOT NULL';
|
|
175
|
-
}
|
|
176
|
-
// Handle DEFAULT value
|
|
177
|
-
if (col.default_value !== null && col.default_value !== undefined) {
|
|
178
|
-
let convertedDefault = convertDefaultValue(String(col.default_value), targetFormat);
|
|
179
|
-
if (convertedDefault !== null && convertedDefault !== '') {
|
|
180
|
-
// MySQL restrictions for DEFAULT values
|
|
181
|
-
const isTextColumn = dataType.toUpperCase().includes('TEXT') || dataType.toUpperCase().includes('BLOB');
|
|
182
|
-
const isFunctionCall = convertedDefault.includes('(') && convertedDefault.includes(')');
|
|
183
|
-
const isIntegerColumn = dataType.toUpperCase().includes('INT');
|
|
184
|
-
const isBooleanColumn = dataType.toUpperCase().includes('BOOLEAN');
|
|
185
|
-
// PostgreSQL: Convert integer defaults to boolean for BOOLEAN columns
|
|
186
|
-
if (targetFormat === 'postgresql' && isBooleanColumn && /^[01]$/.test(convertedDefault)) {
|
|
187
|
-
convertedDefault = convertedDefault === '1' ? 'TRUE' : 'FALSE';
|
|
188
|
-
}
|
|
189
|
-
if (targetFormat === 'mysql') {
|
|
190
|
-
// MySQL doesn't allow DEFAULT on TEXT/BLOB columns
|
|
191
|
-
if (isTextColumn) {
|
|
192
|
-
// Skip DEFAULT - application must handle at runtime
|
|
193
|
-
}
|
|
194
|
-
// MySQL DOES support certain function calls as DEFAULT for INTEGER columns
|
|
195
|
-
// (e.g., UNIX_TIMESTAMP(), CURRENT_TIMESTAMP)
|
|
196
|
-
// Only skip if conversion returned null (meaning function not supported)
|
|
197
|
-
else {
|
|
198
|
-
def += ` DEFAULT ${convertedDefault}`;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
def += ` DEFAULT ${convertedDefault}`;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
// Handle AUTO_INCREMENT for MySQL
|
|
207
|
-
// SQLite source: INTEGER PRIMARY KEY columns are implicitly auto-increment
|
|
208
|
-
const isIntegerPrimaryKey = col.is_primary_key &&
|
|
209
|
-
(col.data_type.toUpperCase().includes('INTEGER') || col.data_type.toUpperCase() === 'INT');
|
|
210
|
-
const isAutoIncrement = col.is_generated || isIntegerPrimaryKey;
|
|
211
|
-
if (targetFormat === 'mysql' && isAutoIncrement && col.generation_expression === null) {
|
|
212
|
-
if (!def.includes('AUTO_INCREMENT')) {
|
|
213
|
-
def += ' AUTO_INCREMENT';
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
// Handle SERIAL for PostgreSQL (when source is MySQL/SQLite with auto-increment)
|
|
217
|
-
// SERIAL = INTEGER + AUTO_INCREMENT sequence
|
|
218
|
-
if (targetFormat === 'postgresql' && isAutoIncrement && col.generation_expression === null) {
|
|
219
|
-
// Replace INT/INTEGER/BIGINT with SERIAL/BIGSERIAL
|
|
220
|
-
if (!def.includes('SERIAL')) {
|
|
221
|
-
if (dataType.toUpperCase() === 'BIGINT') {
|
|
222
|
-
def = def.replace(/BIGINT/i, 'BIGSERIAL');
|
|
223
|
-
}
|
|
224
|
-
else if (dataType.toUpperCase() === 'INT' || dataType.toUpperCase() === 'INTEGER') {
|
|
225
|
-
def = def.replace(/\bINT(EGER)?\b/i, 'SERIAL');
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Handle UNIQUE constraint (skip if already PRIMARY KEY)
|
|
230
|
-
if (col.is_unique && !col.is_primary_key) {
|
|
231
|
-
def += ' UNIQUE';
|
|
232
|
-
}
|
|
233
|
-
return def;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Build FOREIGN KEY definition from ForeignKey metadata
|
|
237
|
-
* Supports both single-column and composite (multi-column) foreign keys
|
|
238
|
-
*/
|
|
239
|
-
function buildForeignKeyDefinition(fk, targetFormat) {
|
|
240
|
-
// Handle both single column (string) and composite (array) foreign keys
|
|
241
|
-
const columns = Array.isArray(fk.column) ? fk.column : [fk.column];
|
|
242
|
-
const foreignColumns = Array.isArray(fk.foreign_key_column) ? fk.foreign_key_column : [fk.foreign_key_column];
|
|
243
|
-
const quotedColumns = columns.map(col => quoteIdentifier(col, targetFormat)).join(', ');
|
|
244
|
-
const quotedForeignTable = quoteIdentifier(fk.foreign_key_table, targetFormat);
|
|
245
|
-
const quotedForeignColumns = foreignColumns.map(col => quoteIdentifier(col, targetFormat)).join(', ');
|
|
246
|
-
let fkDef = `FOREIGN KEY (${quotedColumns}) REFERENCES ${quotedForeignTable}(${quotedForeignColumns})`;
|
|
247
|
-
// Add ON DELETE clause
|
|
248
|
-
if (fk.on_delete && fk.on_delete !== 'NO ACTION') {
|
|
249
|
-
fkDef += ` ON DELETE ${fk.on_delete}`;
|
|
250
|
-
}
|
|
251
|
-
// Add ON UPDATE clause
|
|
252
|
-
if (fk.on_update && fk.on_update !== 'NO ACTION') {
|
|
253
|
-
fkDef += ` ON UPDATE ${fk.on_update}`;
|
|
254
|
-
}
|
|
255
|
-
return fkDef;
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Get all table names from the database (excluding system tables)
|
|
259
|
-
* @param knex Knex instance
|
|
260
|
-
* @param includeKnexTables Include knex_* migration tables
|
|
261
|
-
* @param tablePrefix Filter tables by prefix (default: 'v4_' for v4 schema only)
|
|
262
|
-
*/
|
|
263
|
-
export async function getAllTables(knex, includeKnexTables = false, tablePrefix = 'v4_') {
|
|
264
|
-
const client = knex.client.config.client;
|
|
265
|
-
let tables = [];
|
|
266
|
-
if (client === 'better-sqlite3' || client === 'sqlite3') {
|
|
267
|
-
const knexFilter = includeKnexTables ? '' : "AND name NOT LIKE 'knex_%'";
|
|
268
|
-
const result = await knex.raw(`
|
|
269
|
-
SELECT name FROM sqlite_master
|
|
270
|
-
WHERE type='table'
|
|
271
|
-
AND name NOT LIKE 'sqlite_%'
|
|
272
|
-
${knexFilter}
|
|
273
|
-
ORDER BY name
|
|
274
|
-
`);
|
|
275
|
-
tables = result.map((row) => row.name);
|
|
276
|
-
}
|
|
277
|
-
else if (client === 'mysql' || client === 'mysql2') {
|
|
278
|
-
const result = await knex.raw('SHOW TABLES');
|
|
279
|
-
const tableKey = Object.keys(result[0][0])[0];
|
|
280
|
-
tables = result[0].map((row) => row[tableKey]);
|
|
281
|
-
if (!includeKnexTables) {
|
|
282
|
-
tables = tables.filter((t) => !t.startsWith('knex_'));
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
else if (client === 'pg') {
|
|
286
|
-
const knexFilter = includeKnexTables ? '' : "AND tablename NOT LIKE 'knex_%'";
|
|
287
|
-
const result = await knex.raw(`
|
|
288
|
-
SELECT tablename FROM pg_tables
|
|
289
|
-
WHERE schemaname = 'public'
|
|
290
|
-
${knexFilter}
|
|
291
|
-
ORDER BY tablename
|
|
292
|
-
`);
|
|
293
|
-
tables = result.rows.map((row) => row.tablename);
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
throw new Error(`Unsupported database client: ${client}`);
|
|
297
|
-
}
|
|
298
|
-
// Filter by table prefix (default: v4_ for current schema)
|
|
299
|
-
if (tablePrefix) {
|
|
300
|
-
tables = tables.filter((t) => t.startsWith(tablePrefix));
|
|
301
|
-
}
|
|
302
|
-
return tables;
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Get CREATE TABLE statement for a table using knex-schema-inspector
|
|
306
|
-
* Replaces regex-based SQL conversion with metadata-driven approach
|
|
307
|
-
*/
|
|
308
|
-
export async function getCreateTableStatement(knex, table, targetFormat) {
|
|
309
|
-
const client = knex.client.config.client;
|
|
310
|
-
// Initialize schema inspector (database-agnostic)
|
|
311
|
-
const inspector = SchemaInspector(knex);
|
|
312
|
-
// Get column metadata
|
|
313
|
-
const columns = await inspector.columnInfo(table);
|
|
314
|
-
if (columns.length === 0) {
|
|
315
|
-
throw new Error(`Table ${table} not found or has no columns`);
|
|
316
|
-
}
|
|
317
|
-
// Fix: knex-schema-inspector doesn't detect composite PRIMARY KEYs and UNIQUE constraints properly
|
|
318
|
-
// Manually detect them using database-specific queries
|
|
319
|
-
const compositeUniqueConstraints = []; // Track composite UNIQUE constraints
|
|
320
|
-
let compositePrimaryKey = null; // Track composite PRIMARY KEY
|
|
321
|
-
if (client === 'pg') {
|
|
322
|
-
// PostgreSQL: Query pg_constraint for composite PRIMARY KEY and UNIQUE constraints
|
|
323
|
-
const constraints = await knex.raw(`
|
|
324
|
-
SELECT
|
|
325
|
-
con.conname AS constraint_name,
|
|
326
|
-
con.contype AS constraint_type,
|
|
327
|
-
ARRAY_AGG(att.attname ORDER BY u.attposition) AS columns
|
|
328
|
-
FROM pg_constraint con
|
|
329
|
-
JOIN pg_class rel ON rel.oid = con.conrelid
|
|
330
|
-
JOIN pg_namespace nsp ON nsp.oid = rel.relnamespace
|
|
331
|
-
CROSS JOIN LATERAL UNNEST(con.conkey) WITH ORDINALITY AS u(attnum, attposition)
|
|
332
|
-
JOIN pg_attribute att ON att.attnum = u.attnum AND att.attrelid = con.conrelid
|
|
333
|
-
WHERE rel.relname = ?
|
|
334
|
-
AND nsp.nspname = 'public'
|
|
335
|
-
AND con.contype IN ('p', 'u')
|
|
336
|
-
GROUP BY con.conname, con.contype
|
|
337
|
-
`, [table]);
|
|
338
|
-
for (const constraint of constraints.rows) {
|
|
339
|
-
// PostgreSQL returns arrays as strings like "{col1,col2}" - parse them
|
|
340
|
-
let columnNames;
|
|
341
|
-
if (typeof constraint.columns === 'string') {
|
|
342
|
-
// Parse PostgreSQL array format: "{col1,col2}" → ["col1", "col2"]
|
|
343
|
-
columnNames = constraint.columns
|
|
344
|
-
.replace(/^\{/, '') //Remove leading {
|
|
345
|
-
.replace(/\}$/, '') // Remove trailing }
|
|
346
|
-
.split(',')
|
|
347
|
-
.map((col) => col.trim());
|
|
348
|
-
}
|
|
349
|
-
else if (Array.isArray(constraint.columns)) {
|
|
350
|
-
columnNames = constraint.columns;
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
continue; // Skip invalid format
|
|
354
|
-
}
|
|
355
|
-
if (constraint.constraint_type === 'p' && columnNames.length > 1) {
|
|
356
|
-
// Multi-column PRIMARY KEY
|
|
357
|
-
compositePrimaryKey = columnNames;
|
|
358
|
-
debugLog('DEBUG', `Found composite PRIMARY KEY on ${table}(${columnNames.join(', ')})`);
|
|
359
|
-
}
|
|
360
|
-
else if (constraint.constraint_type === 'u') {
|
|
361
|
-
if (columnNames.length === 1) {
|
|
362
|
-
// Single-column UNIQUE
|
|
363
|
-
const col = columns.find(c => c.name === columnNames[0]);
|
|
364
|
-
if (col && !col.is_primary_key) {
|
|
365
|
-
col.is_unique = true;
|
|
366
|
-
debugLog('DEBUG', `Marked ${table}.${col.name} as UNIQUE`);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
else if (columnNames.length > 1) {
|
|
370
|
-
// Multi-column UNIQUE
|
|
371
|
-
compositeUniqueConstraints.push(columnNames);
|
|
372
|
-
debugLog('DEBUG', `Found composite UNIQUE on ${table}(${columnNames.join(', ')})`);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
else if (client === 'better-sqlite3' || client === 'sqlite3') {
|
|
378
|
-
const indexResult = await knex.raw(`PRAGMA index_list(${table})`);
|
|
379
|
-
// Knex raw() returns an array directly for SQLite
|
|
380
|
-
const indexes = Array.isArray(indexResult) ? indexResult : [];
|
|
381
|
-
for (const index of indexes) {
|
|
382
|
-
// Check for PRIMARY KEY index
|
|
383
|
-
if (index.origin === 'pk' && index.unique === 1) {
|
|
384
|
-
const indexInfoResult = await knex.raw(`PRAGMA index_info(${index.name})`);
|
|
385
|
-
const indexInfo = Array.isArray(indexInfoResult) ? indexInfoResult : [];
|
|
386
|
-
const columnNames = indexInfo.map((idxCol) => idxCol.name);
|
|
387
|
-
if (columnNames.length > 1) {
|
|
388
|
-
// Composite PRIMARY KEY detected
|
|
389
|
-
compositePrimaryKey = columnNames;
|
|
390
|
-
debugLog('DEBUG', `Found composite PRIMARY KEY on ${table}(${columnNames.join(', ')}) from ${index.name}`);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
// Check if this is a UNIQUE index (skip PRIMARY KEY indexes)
|
|
394
|
-
else if (index.unique === 1 && index.origin !== 'pk') {
|
|
395
|
-
// Get columns in this index
|
|
396
|
-
const indexInfoResult = await knex.raw(`PRAGMA index_info(${index.name})`);
|
|
397
|
-
const indexInfo = Array.isArray(indexInfoResult) ? indexInfoResult : [];
|
|
398
|
-
const columnNames = indexInfo.map((idxCol) => idxCol.name);
|
|
399
|
-
if (columnNames.length === 1) {
|
|
400
|
-
// Single-column UNIQUE - mark column as unique
|
|
401
|
-
const col = columns.find(c => c.name === columnNames[0]);
|
|
402
|
-
if (col && !col.is_primary_key) {
|
|
403
|
-
col.is_unique = true;
|
|
404
|
-
debugLog('DEBUG', `Marked ${table}.${col.name} as UNIQUE (single-column from ${index.name})`);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
else if (columnNames.length > 1) {
|
|
408
|
-
// Composite UNIQUE - add to table-level constraints
|
|
409
|
-
compositeUniqueConstraints.push(columnNames);
|
|
410
|
-
debugLog('DEBUG', `Found composite UNIQUE on ${table}(${columnNames.join(', ')}) from ${index.name}`);
|
|
411
|
-
// For MySQL: Convert TEXT to VARCHAR(191) for columns in composite UNIQUE
|
|
412
|
-
if (targetFormat === 'mysql') {
|
|
413
|
-
for (const colName of columnNames) {
|
|
414
|
-
const col = columns.find(c => c.name === colName);
|
|
415
|
-
if (col && !col.is_primary_key) {
|
|
416
|
-
// Mark as part of composite unique (will be converted to VARCHAR later)
|
|
417
|
-
col.in_composite_unique = true;
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
// Build column definitions using buildColumnDefinition()
|
|
426
|
-
const columnDefs = columns.map(col => buildColumnDefinition(col, targetFormat));
|
|
427
|
-
// Add PRIMARY KEY constraint (with MySQL prefix length handling)
|
|
428
|
-
// Use composite PRIMARY KEY if detected, otherwise fall back to column metadata
|
|
429
|
-
const pkColumns = compositePrimaryKey || columns.filter(col => col.is_primary_key).map(col => col.name);
|
|
430
|
-
if (pkColumns.length > 0) {
|
|
431
|
-
// For MySQL: Apply (191) prefix to TEXT/long VARCHAR columns
|
|
432
|
-
if (targetFormat === 'mysql') {
|
|
433
|
-
const processedPkCols = pkColumns.map((colName) => {
|
|
434
|
-
const col = columns.find(c => c.name === colName);
|
|
435
|
-
if (col && (col.data_type.toUpperCase() === 'TEXT' ||
|
|
436
|
-
(col.data_type.toUpperCase().includes('VARCHAR') && col.max_length && col.max_length > 191))) {
|
|
437
|
-
return `${quoteIdentifier(colName, targetFormat)}(191)`;
|
|
438
|
-
}
|
|
439
|
-
return quoteIdentifier(colName, targetFormat);
|
|
440
|
-
}).join(', ');
|
|
441
|
-
columnDefs.push(`PRIMARY KEY (${processedPkCols})`);
|
|
442
|
-
}
|
|
443
|
-
else {
|
|
444
|
-
const quotedPkColumns = pkColumns.map(col => quoteIdentifier(col, targetFormat));
|
|
445
|
-
columnDefs.push(`PRIMARY KEY (${quotedPkColumns.join(', ')})`);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
// Add FOREIGN KEY constraints using buildForeignKeyDefinition()
|
|
449
|
-
let foreignKeys = await inspector.foreignKeys(table);
|
|
450
|
-
// PostgreSQL: Manually query composite foreign keys (knex-schema-inspector misses them)
|
|
451
|
-
if (client === 'pg') {
|
|
452
|
-
const compositeFks = await knex.raw(`
|
|
453
|
-
SELECT
|
|
454
|
-
con.conname AS constraint_name,
|
|
455
|
-
ARRAY_AGG(att.attname ORDER BY u.attposition) AS columns,
|
|
456
|
-
ref_class.relname AS foreign_table,
|
|
457
|
-
ARRAY_AGG(ref_att.attname ORDER BY u.attposition) AS foreign_columns,
|
|
458
|
-
con.confdeltype AS on_delete,
|
|
459
|
-
con.confupdtype AS on_update
|
|
460
|
-
FROM pg_constraint con
|
|
461
|
-
JOIN pg_class rel ON rel.oid = con.conrelid
|
|
462
|
-
JOIN pg_namespace nsp ON nsp.oid = rel.relnamespace
|
|
463
|
-
JOIN pg_class ref_class ON ref_class.oid = con.confrelid
|
|
464
|
-
CROSS JOIN LATERAL UNNEST(con.conkey) WITH ORDINALITY AS u(attnum, attposition)
|
|
465
|
-
JOIN pg_attribute att ON att.attnum = u.attnum AND att.attrelid = con.conrelid
|
|
466
|
-
JOIN pg_attribute ref_att ON ref_att.attnum = con.confkey[u.attposition] AND ref_att.attrelid = con.confrelid
|
|
467
|
-
WHERE rel.relname = ?
|
|
468
|
-
AND nsp.nspname = 'public'
|
|
469
|
-
AND con.contype = 'f'
|
|
470
|
-
GROUP BY con.conname, ref_class.relname, con.confdeltype, con.confupdtype
|
|
471
|
-
`, [table]);
|
|
472
|
-
for (const fk of compositeFks.rows) {
|
|
473
|
-
// Parse PostgreSQL arrays
|
|
474
|
-
const columns = typeof fk.columns === 'string'
|
|
475
|
-
? fk.columns.replace(/^\{/, '').replace(/\}$/, '').split(',').map((s) => s.trim())
|
|
476
|
-
: fk.columns;
|
|
477
|
-
const foreignColumns = typeof fk.foreign_columns === 'string'
|
|
478
|
-
? fk.foreign_columns.replace(/^\{/, '').replace(/\}$/, '').split(',').map((s) => s.trim())
|
|
479
|
-
: fk.foreign_columns;
|
|
480
|
-
// Convert PostgreSQL delete/update action codes to SQL keywords
|
|
481
|
-
const onDelete = fk.on_delete === 'c' ? 'CASCADE' : fk.on_delete === 'r' ? 'RESTRICT' : fk.on_delete === 'n' ? 'SET NULL' : 'NO ACTION';
|
|
482
|
-
const onUpdate = fk.on_update === 'c' ? 'CASCADE' : fk.on_update === 'r' ? 'RESTRICT' : fk.on_update === 'n' ? 'SET NULL' : 'NO ACTION';
|
|
483
|
-
// Create ForeignKey-like object
|
|
484
|
-
const compositeFk = {
|
|
485
|
-
table: table,
|
|
486
|
-
column: columns, // Array for composite FK
|
|
487
|
-
foreign_key_table: fk.foreign_table,
|
|
488
|
-
foreign_key_column: foreignColumns, // Array for composite FK
|
|
489
|
-
on_delete: onDelete,
|
|
490
|
-
on_update: onUpdate,
|
|
491
|
-
constraint_name: fk.constraint_name
|
|
492
|
-
};
|
|
493
|
-
// Check if already exists in foreignKeys (single-column FKs from inspector)
|
|
494
|
-
const isDuplicate = foreignKeys.some((existingFk) => existingFk.constraint_name === compositeFk.constraint_name);
|
|
495
|
-
if (!isDuplicate) {
|
|
496
|
-
foreignKeys.push(compositeFk);
|
|
497
|
-
debugLog('DEBUG', `Found composite FOREIGN KEY on ${table}(${columns.join(', ')}) → ${fk.foreign_table}(${foreignColumns.join(', ')})`);
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
for (const fk of foreignKeys) {
|
|
502
|
-
columnDefs.push(buildForeignKeyDefinition(fk, targetFormat));
|
|
503
|
-
}
|
|
504
|
-
// Add composite UNIQUE constraints (from SQLite multi-column UNIQUE indexes)
|
|
505
|
-
for (const uniqueCols of compositeUniqueConstraints) {
|
|
506
|
-
const quotedCols = uniqueCols.map(col => quoteIdentifier(col, targetFormat)).join(', ');
|
|
507
|
-
columnDefs.push(`UNIQUE (${quotedCols})`);
|
|
508
|
-
}
|
|
509
|
-
// Build CREATE TABLE statement with IF NOT EXISTS for idempotency
|
|
510
|
-
const quotedTable = quoteIdentifier(table, targetFormat);
|
|
511
|
-
const createSql = `CREATE TABLE IF NOT EXISTS ${quotedTable} (\n ${columnDefs.join(',\n ')}\n)`;
|
|
512
|
-
// Add database-specific table options
|
|
513
|
-
if (targetFormat === 'mysql') {
|
|
514
|
-
return createSql + ' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;';
|
|
515
|
-
}
|
|
516
|
-
return createSql + ';';
|
|
517
|
-
}
|
|
518
|
-
//# sourceMappingURL=tables.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Knex } from 'knex';
|
|
2
|
-
import type { DatabaseFormat } from '../types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Get all view names from the database
|
|
5
|
-
*/
|
|
6
|
-
export declare function getAllViews(knex: Knex): Promise<string[]>;
|
|
7
|
-
/**
|
|
8
|
-
* Get CREATE VIEW statement for a view
|
|
9
|
-
*/
|
|
10
|
-
export declare function getCreateViewStatement(knex: Knex, viewName: string, targetFormat: DatabaseFormat): Promise<string>;
|
|
11
|
-
//# sourceMappingURL=views.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/views.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6B/D;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAuFxH"}
|