@deterministic-code/migraters 0.0.2 → 0.0.3
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/README.md +149 -1
- package/bundle.yaml +20 -28
- package/cli.yaml +24 -12
- package/csharp/Abstractions/IConnectionResolver.cs +6 -0
- package/csharp/Abstractions/IMigrateCommand.cs +7 -0
- package/csharp/Abstractions/IMigrater.cs +20 -0
- package/csharp/Abstractions/ISqlDialect.cs +23 -0
- package/csharp/Abstractions/ISqlDialectFactory.cs +7 -0
- package/csharp/Abstractions/SqlDialect.cs +78 -0
- package/csharp/Abstractions/SqlDialectFactory.cs +24 -0
- package/csharp/Dialects/Mysql/MigrateMysql.csproj +14 -0
- package/csharp/Dialects/Mysql/MysqlCreateDatabase.cs +21 -0
- package/csharp/Dialects/Mysql/MysqlDialect.cs +44 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/MigrateCore.dll +0 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/MigrateCore.pdb +0 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/MigrateMysql.deps.json +213 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/MigrateMysql.dll +0 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/MigrateMysql.pdb +0 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/cli.yaml +276 -0
- package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/help/down.txt +3 -5
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/templates/help/init.txt +15 -0
- package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/help/setup.txt +4 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/templates/messages/down/confirm-prompt.txt +1 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/templates/messages/down/confirm-token-mismatch.txt +1 -0
- package/csharp/Dialects/Mysql/bin/Debug/net9.0/templates/messages/down/confirm-tty-required.txt +1 -0
- package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/down/destructive-header.txt +0 -1
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateM.E580FE7A.Up2Date +0 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.AssemblyInfo.cs +22 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.AssemblyInfoInputs.cache +1 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.GeneratedMSBuildEditorConfig.editorconfig +18 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.GlobalUsings.g.cs +8 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.assets.cache +0 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.csproj.AssemblyReference.cache +0 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.csproj.CoreCompileInputs.cache +1 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.csproj.FileListAbsolute.txt +63 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.dll +0 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.pdb +0 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/MigrateMysql.sourcelink.json +1 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/ref/MigrateMysql.dll +0 -0
- package/csharp/Dialects/Mysql/obj/Debug/net9.0/refint/MigrateMysql.dll +0 -0
- package/csharp/Dialects/Mysql/obj/MigrateMysql.csproj.nuget.dgspec.json +172 -0
- package/csharp/Dialects/Mysql/obj/MigrateMysql.csproj.nuget.g.props +15 -0
- package/csharp/Dialects/Mysql/obj/MigrateMysql.csproj.nuget.g.targets +6 -0
- package/csharp/Dialects/Mysql/obj/project.assets.json +5081 -0
- package/csharp/Dialects/Mysql/obj/project.nuget.cache +94 -0
- package/csharp/Dialects/Oracle/MigrateOracle.csproj +14 -0
- package/csharp/Dialects/Oracle/OracleDialect.cs +30 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/MigrateCore.dll +0 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/MigrateCore.pdb +0 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/MigrateOracle.deps.json +343 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/MigrateOracle.dll +0 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/MigrateOracle.pdb +0 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/cli.yaml +276 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/help/create.txt +16 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/help/down.txt +40 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/help/init.txt +15 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/help/setup.txt +45 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/help/up.txt +43 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/checksum-drift-line.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/checksum-drift.txt +11 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/down/confirm-mismatch.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/down/confirm-prompt.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/down/confirm-stdin-failed.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/down/confirm-token-mismatch.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/down/confirm-tty-required.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/down/destructive-header.txt +2 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/invalid-name.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/migrate-path-not-dir.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/missing-connection.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/missing-name-hint.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/missing-name.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/missing-provider-hint.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/missing-provider.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/missing-value-for-flag.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/rollback-no-down-sibling.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/rollback-no-rollback-sibling.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/rollback-not-in-path.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/sqlite-prerequisite.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/unknown-arg.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/errors/unsupported-provider.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/setup-complete.txt +9 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/status/applied.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/status/created.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/status/no-more-pending.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/status/no-pending.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/status/no-rollback.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/messages/status/rolled-back.txt +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/scaffold/down.sql +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/scaffold/up.sql +1 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/mysql/migrate_logs.sql +11 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/mysql/migrates.sql +7 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/oracle/migrate_logs.sql +14 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/oracle/migrates.sql +10 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/postgres/migrate_logs.sql +11 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/postgres/migrates.sql +7 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/sqlite/migrate_logs.sql +11 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/sqlite/migrates.sql +7 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/sqlserver/migrate_logs.sql +12 -0
- package/csharp/Dialects/Oracle/bin/Debug/net9.0/templates/sql/sqlserver/migrates.sql +8 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateO.BD46121C.Up2Date +0 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.AssemblyInfo.cs +22 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.AssemblyInfoInputs.cache +1 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.GeneratedMSBuildEditorConfig.editorconfig +18 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.GlobalUsings.g.cs +8 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.assets.cache +0 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.csproj.AssemblyReference.cache +0 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.csproj.CoreCompileInputs.cache +1 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.csproj.FileListAbsolute.txt +63 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.dll +0 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.pdb +0 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/MigrateOracle.sourcelink.json +1 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/ref/MigrateOracle.dll +0 -0
- package/csharp/Dialects/Oracle/obj/Debug/net9.0/refint/MigrateOracle.dll +0 -0
- package/csharp/Dialects/Oracle/obj/MigrateOracle.csproj.nuget.dgspec.json +172 -0
- package/csharp/Dialects/Oracle/obj/MigrateOracle.csproj.nuget.g.props +15 -0
- package/csharp/Dialects/Oracle/obj/MigrateOracle.csproj.nuget.g.targets +2 -0
- package/csharp/Dialects/Oracle/obj/project.assets.json +5414 -0
- package/csharp/Dialects/Oracle/obj/project.nuget.cache +101 -0
- package/csharp/Dialects/Postgres/MigratePostgres.csproj +14 -0
- package/csharp/Dialects/Postgres/PostgresCreateDatabase.cs +31 -0
- package/csharp/Dialects/Postgres/PostgresDialect.cs +43 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/MigrateCore.dll +0 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/MigrateCore.pdb +0 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/MigratePostgres.deps.json +212 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/MigratePostgres.dll +0 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/MigratePostgres.pdb +0 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/cli.yaml +276 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/help/create.txt +16 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/help/down.txt +40 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/help/init.txt +15 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/help/setup.txt +45 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/help/up.txt +43 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/checksum-drift-line.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/checksum-drift.txt +11 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/down/confirm-mismatch.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/down/confirm-prompt.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/down/confirm-stdin-failed.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/down/confirm-token-mismatch.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/down/confirm-tty-required.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/down/destructive-header.txt +2 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/invalid-name.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/migrate-path-not-dir.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/missing-connection.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/missing-name-hint.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/missing-name.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/missing-provider-hint.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/missing-provider.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/missing-value-for-flag.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/rollback-no-down-sibling.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/rollback-no-rollback-sibling.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/rollback-not-in-path.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/sqlite-prerequisite.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/unknown-arg.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/errors/unsupported-provider.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/setup-complete.txt +9 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/status/applied.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/status/created.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/status/no-more-pending.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/status/no-pending.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/status/no-rollback.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/messages/status/rolled-back.txt +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/scaffold/down.sql +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/scaffold/up.sql +1 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/mysql/migrate_logs.sql +11 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/mysql/migrates.sql +7 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/oracle/migrate_logs.sql +14 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/oracle/migrates.sql +10 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/postgres/migrate_logs.sql +11 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/postgres/migrates.sql +7 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/sqlite/migrate_logs.sql +11 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/sqlite/migrates.sql +7 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/sqlserver/migrate_logs.sql +12 -0
- package/csharp/Dialects/Postgres/bin/Debug/net9.0/templates/sql/sqlserver/migrates.sql +8 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigrateP.DF842641.Up2Date +0 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.AssemblyInfo.cs +22 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.AssemblyInfoInputs.cache +1 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.GeneratedMSBuildEditorConfig.editorconfig +18 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.GlobalUsings.g.cs +8 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.assets.cache +0 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.csproj.AssemblyReference.cache +0 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.csproj.CoreCompileInputs.cache +1 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.csproj.FileListAbsolute.txt +63 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.dll +0 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.pdb +0 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/MigratePostgres.sourcelink.json +1 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/ref/MigratePostgres.dll +0 -0
- package/csharp/Dialects/Postgres/obj/Debug/net9.0/refint/MigratePostgres.dll +0 -0
- package/csharp/Dialects/Postgres/obj/MigratePostgres.csproj.nuget.dgspec.json +172 -0
- package/csharp/Dialects/Postgres/obj/MigratePostgres.csproj.nuget.g.props +15 -0
- package/csharp/Dialects/Postgres/obj/MigratePostgres.csproj.nuget.g.targets +6 -0
- package/csharp/Dialects/Postgres/obj/project.assets.json +5068 -0
- package/csharp/Dialects/Postgres/obj/project.nuget.cache +94 -0
- package/csharp/Dialects/SqlServer/MigrateSqlServer.csproj +14 -0
- package/csharp/Dialects/SqlServer/SqlServerCreateDatabase.cs +21 -0
- package/csharp/Dialects/SqlServer/SqlServerDialect.cs +21 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/MigrateCore.dll +0 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/MigrateCore.pdb +0 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/MigrateSqlServer.deps.json +727 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/MigrateSqlServer.dll +0 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/MigrateSqlServer.pdb +0 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/cli.yaml +276 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/help/create.txt +16 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/help/down.txt +40 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/help/init.txt +15 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/help/setup.txt +45 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/help/up.txt +43 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/checksum-drift-line.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/checksum-drift.txt +11 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/down/confirm-mismatch.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/down/confirm-prompt.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/down/confirm-stdin-failed.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/down/confirm-token-mismatch.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/down/confirm-tty-required.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/down/destructive-header.txt +2 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/invalid-name.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/migrate-path-not-dir.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/missing-connection.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/missing-name-hint.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/missing-name.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/missing-provider-hint.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/missing-provider.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/missing-value-for-flag.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/rollback-no-down-sibling.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/rollback-no-rollback-sibling.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/rollback-not-in-path.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/sqlite-prerequisite.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/unknown-arg.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/errors/unsupported-provider.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/setup-complete.txt +9 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/status/applied.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/status/created.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/status/no-more-pending.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/status/no-pending.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/status/no-rollback.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/messages/status/rolled-back.txt +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/scaffold/down.sql +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/scaffold/up.sql +1 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/mysql/migrate_logs.sql +11 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/mysql/migrates.sql +7 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/oracle/migrate_logs.sql +14 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/oracle/migrates.sql +10 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/postgres/migrate_logs.sql +11 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/postgres/migrates.sql +7 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/sqlite/migrate_logs.sql +11 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/sqlite/migrates.sql +7 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/sqlserver/migrate_logs.sql +12 -0
- package/csharp/Dialects/SqlServer/bin/Debug/net9.0/templates/sql/sqlserver/migrates.sql +8 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateS.6604771C.Up2Date +0 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.AssemblyInfo.cs +22 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.AssemblyInfoInputs.cache +1 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.GeneratedMSBuildEditorConfig.editorconfig +18 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.GlobalUsings.g.cs +8 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.assets.cache +0 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.csproj.AssemblyReference.cache +0 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.csproj.CoreCompileInputs.cache +1 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.csproj.FileListAbsolute.txt +63 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.dll +0 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.pdb +0 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/MigrateSqlServer.sourcelink.json +1 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/ref/MigrateSqlServer.dll +0 -0
- package/csharp/Dialects/SqlServer/obj/Debug/net9.0/refint/MigrateSqlServer.dll +0 -0
- package/csharp/Dialects/SqlServer/obj/MigrateSqlServer.csproj.nuget.dgspec.json +172 -0
- package/csharp/Dialects/SqlServer/obj/MigrateSqlServer.csproj.nuget.g.props +15 -0
- package/csharp/Dialects/SqlServer/obj/MigrateSqlServer.csproj.nuget.g.targets +7 -0
- package/csharp/Dialects/SqlServer/obj/project.assets.json +6391 -0
- package/csharp/Dialects/SqlServer/obj/project.nuget.cache +122 -0
- package/csharp/Dialects/Sqlite/MigrateSqlite.csproj +14 -0
- package/csharp/Dialects/Sqlite/SqliteDialect.cs +77 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/MigrateCore.dll +0 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/MigrateCore.pdb +0 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/MigrateSqlite.deps.json +376 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/MigrateSqlite.dll +0 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/MigrateSqlite.pdb +0 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/cli.yaml +276 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/help/create.txt +16 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/help/down.txt +40 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/help/init.txt +15 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/help/setup.txt +45 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/help/up.txt +43 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/checksum-drift-line.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/checksum-drift.txt +11 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/down/confirm-mismatch.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/down/confirm-prompt.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/down/confirm-stdin-failed.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/down/confirm-token-mismatch.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/down/confirm-tty-required.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/down/destructive-header.txt +2 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/invalid-name.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/migrate-path-not-dir.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/missing-connection.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/missing-name-hint.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/missing-name.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/missing-provider-hint.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/missing-provider.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/missing-value-for-flag.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/rollback-no-down-sibling.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/rollback-no-rollback-sibling.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/rollback-not-in-path.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/sqlite-prerequisite.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/unknown-arg.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/errors/unsupported-provider.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/setup-complete.txt +9 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/status/applied.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/status/created.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/status/no-more-pending.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/status/no-pending.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/status/no-rollback.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/messages/status/rolled-back.txt +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/scaffold/down.sql +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/scaffold/up.sql +1 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/mysql/migrate_logs.sql +11 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/mysql/migrates.sql +7 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/oracle/migrate_logs.sql +14 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/oracle/migrates.sql +10 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/postgres/migrate_logs.sql +11 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/postgres/migrates.sql +7 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/sqlite/migrate_logs.sql +11 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/sqlite/migrates.sql +7 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/sqlserver/migrate_logs.sql +12 -0
- package/csharp/Dialects/Sqlite/bin/Debug/net9.0/templates/sql/sqlserver/migrates.sql +8 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateS.4867C581.Up2Date +0 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.AssemblyInfo.cs +22 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.AssemblyInfoInputs.cache +1 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.GeneratedMSBuildEditorConfig.editorconfig +18 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.GlobalUsings.g.cs +8 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.assets.cache +0 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.csproj.AssemblyReference.cache +0 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.csproj.CoreCompileInputs.cache +1 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.csproj.FileListAbsolute.txt +63 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.dll +0 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.pdb +0 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/MigrateSqlite.sourcelink.json +1 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/ref/MigrateSqlite.dll +0 -0
- package/csharp/Dialects/Sqlite/obj/Debug/net9.0/refint/MigrateSqlite.dll +0 -0
- package/csharp/Dialects/Sqlite/obj/MigrateSqlite.csproj.nuget.dgspec.json +172 -0
- package/csharp/Dialects/Sqlite/obj/MigrateSqlite.csproj.nuget.g.props +15 -0
- package/csharp/Dialects/Sqlite/obj/MigrateSqlite.csproj.nuget.g.targets +6 -0
- package/csharp/Dialects/Sqlite/obj/project.assets.json +5263 -0
- package/csharp/Dialects/Sqlite/obj/project.nuget.cache +99 -0
- package/csharp/GlobalUsings.cs +6 -0
- package/csharp/Infrastructure/Checksum.cs +18 -0
- package/csharp/Infrastructure/CliSpec.cs +228 -0
- package/csharp/Infrastructure/ConnectionResolver.cs +9 -0
- package/csharp/Infrastructure/ConnectionStringUrl.cs +47 -0
- package/csharp/Infrastructure/CreateDatabase.cs +7 -0
- package/csharp/Infrastructure/DbExecute.cs +81 -0
- package/csharp/Infrastructure/HelpTemplates.cs +47 -0
- package/csharp/Infrastructure/MigrateCli.cs +159 -0
- package/csharp/Infrastructure/MigrateLog.cs +54 -0
- package/csharp/Infrastructure/Migrater.cs +157 -0
- package/csharp/Infrastructure/Migrations.cs +105 -0
- package/csharp/Infrastructure/SqlTemplates.cs +10 -0
- package/csharp/MigrateCreate.cs +114 -0
- package/csharp/MigrateDown.cs +147 -0
- package/csharp/MigrateRunner.Core.csproj +66 -0
- package/csharp/MigrateRunner.csproj +63 -0
- package/csharp/MigrateRunnerServices.cs +55 -0
- package/csharp/MigrateSetup.cs +145 -0
- package/csharp/MigrateUp.cs +122 -0
- package/csharp/Program.cs +40 -0
- package/{dist → orchestrator/dist}/cli-spec.d.ts +1 -1
- package/{dist → orchestrator/dist}/cli-spec.js +10 -2
- package/orchestrator/dist/config.d.ts +13 -0
- package/orchestrator/dist/config.js +48 -0
- package/orchestrator/dist/dialects.d.ts +2 -0
- package/orchestrator/dist/dialects.js +25 -0
- package/orchestrator/dist/dispatch.d.ts +9 -0
- package/orchestrator/dist/dispatch.js +36 -0
- package/{dist → orchestrator/dist}/help.d.ts +0 -1
- package/orchestrator/dist/help.js +36 -0
- package/orchestrator/dist/languages.d.ts +4 -0
- package/orchestrator/dist/languages.js +12 -0
- package/orchestrator/dist/manifests.d.ts +8 -0
- package/orchestrator/dist/manifests.js +53 -0
- package/orchestrator/dist/migrate-create.js +3 -0
- package/orchestrator/dist/migrate-down.js +3 -0
- package/orchestrator/dist/migrate-init.js +37 -0
- package/orchestrator/dist/migrate-setup.js +3 -0
- package/orchestrator/dist/migrate-up.js +3 -0
- package/orchestrator/dist/parse-init.d.ts +12 -0
- package/orchestrator/dist/parse-init.js +56 -0
- package/orchestrator/dist/repo.d.ts +2 -0
- package/orchestrator/dist/repo.js +19 -0
- package/orchestrator/dist/run-init.d.ts +2 -0
- package/orchestrator/dist/run-init.js +66 -0
- package/orchestrator/dist/run.d.ts +3 -0
- package/orchestrator/dist/run.js +16 -0
- package/orchestrator/prepare.js +21 -0
- package/orchestrator/tsconfig.json +19 -0
- package/package.json +49 -62
- package/rust/Cargo.lock +393 -0
- package/rust/Cargo.toml +29 -0
- package/rust/api/Cargo.toml +8 -0
- package/rust/api/src/lib.rs +231 -0
- package/rust/dialects/mysql/Cargo.toml +11 -0
- package/rust/dialects/mysql/src/lib.rs +231 -0
- package/rust/dialects/oracle/Cargo.toml +11 -0
- package/rust/dialects/oracle/src/lib.rs +245 -0
- package/rust/dialects/postgres/Cargo.toml +11 -0
- package/rust/dialects/postgres/src/lib.rs +235 -0
- package/rust/dialects/sqlite/Cargo.toml +11 -0
- package/rust/dialects/sqlite/src/lib.rs +286 -0
- package/rust/dialects/sqlserver/Cargo.toml +12 -0
- package/rust/dialects/sqlserver/src/lib.rs +235 -0
- package/rust/rustfmt.toml +2 -0
- package/rust/src/abstractions/factory.rs +17 -0
- package/rust/src/abstractions/mod.rs +5 -0
- package/rust/src/abstractions/sql_dialect.rs +1 -0
- package/rust/src/argv.rs +15 -0
- package/rust/src/attached_dialects.rs +2 -0
- package/rust/src/bin/migrate_create.rs +97 -0
- package/rust/src/bin/migrate_down.rs +151 -0
- package/rust/src/bin/migrate_setup.rs +153 -0
- package/rust/src/bin/migrate_up.rs +126 -0
- package/rust/src/checksum.rs +55 -0
- package/rust/src/cli_spec.rs +249 -0
- package/rust/src/dialects/mod.rs +4 -0
- package/rust/src/help.rs +10 -0
- package/rust/src/infrastructure/connection_resolver.rs +8 -0
- package/rust/src/infrastructure/create_database.rs +15 -0
- package/rust/src/infrastructure/mod.rs +9 -0
- package/rust/src/infrastructure/pool.rs +79 -0
- package/rust/src/infrastructure/split_on_go.rs +48 -0
- package/rust/src/lib.rs +115 -0
- package/rust/src/messages.rs +102 -0
- package/rust/src/migrater.rs +224 -0
- package/rust/src/migrations.rs +151 -0
- package/rust/src/provider.rs +57 -0
- package/shared/templates/help/create.txt +16 -0
- package/shared/templates/help/down.txt +40 -0
- package/shared/templates/help/init.txt +15 -0
- package/shared/templates/help/setup.txt +45 -0
- package/shared/templates/help/up.txt +43 -0
- package/shared/templates/messages/checksum-drift-line.txt +1 -0
- package/shared/templates/messages/checksum-drift.txt +11 -0
- package/shared/templates/messages/down/confirm-mismatch.txt +1 -0
- package/shared/templates/messages/down/confirm-prompt.txt +1 -0
- package/shared/templates/messages/down/confirm-stdin-failed.txt +1 -0
- package/shared/templates/messages/down/confirm-token-mismatch.txt +1 -0
- package/shared/templates/messages/down/confirm-tty-required.txt +1 -0
- package/shared/templates/messages/down/destructive-header.txt +2 -0
- package/shared/templates/messages/errors/invalid-name.txt +1 -0
- package/shared/templates/messages/errors/migrate-path-not-dir.txt +1 -0
- package/shared/templates/messages/errors/missing-connection.txt +1 -0
- package/shared/templates/messages/errors/missing-name-hint.txt +1 -0
- package/shared/templates/messages/errors/missing-name.txt +1 -0
- package/shared/templates/messages/errors/missing-provider-hint.txt +1 -0
- package/shared/templates/messages/errors/missing-provider.txt +1 -0
- package/shared/templates/messages/errors/missing-value-for-flag.txt +1 -0
- package/shared/templates/messages/errors/rollback-no-down-sibling.txt +1 -0
- package/shared/templates/messages/errors/rollback-no-rollback-sibling.txt +1 -0
- package/shared/templates/messages/errors/rollback-not-in-path.txt +1 -0
- package/shared/templates/messages/errors/sqlite-prerequisite.txt +1 -0
- package/shared/templates/messages/errors/unknown-arg.txt +1 -0
- package/shared/templates/messages/errors/unsupported-provider.txt +1 -0
- package/shared/templates/messages/setup-complete.txt +9 -0
- package/shared/templates/messages/status/applied.txt +1 -0
- package/shared/templates/messages/status/created.txt +1 -0
- package/shared/templates/messages/status/no-more-pending.txt +1 -0
- package/shared/templates/messages/status/no-pending.txt +1 -0
- package/shared/templates/messages/status/no-rollback.txt +1 -0
- package/shared/templates/messages/status/rolled-back.txt +1 -0
- package/shared/templates/scaffold/down.sql +1 -0
- package/shared/templates/scaffold/up.sql +1 -0
- package/shared/templates/sql/mysql/migrate_logs.sql +11 -0
- package/shared/templates/sql/mysql/migrates.sql +7 -0
- package/shared/templates/sql/oracle/migrate_logs.sql +14 -0
- package/shared/templates/sql/oracle/migrates.sql +10 -0
- package/shared/templates/sql/postgres/migrate_logs.sql +11 -0
- package/shared/templates/sql/postgres/migrates.sql +7 -0
- package/shared/templates/sql/sqlite/migrate_logs.sql +11 -0
- package/shared/templates/sql/sqlite/migrates.sql +7 -0
- package/shared/templates/sql/sqlserver/migrate_logs.sql +12 -0
- package/shared/templates/sql/sqlserver/migrates.sql +8 -0
- package/typescript/bundle.yaml +254 -0
- package/typescript/dialects/mysql/package.json +12 -0
- package/typescript/dialects/mysql/src/index.ts +4 -0
- package/typescript/dialects/mysql/src/mysql-dialect.test.ts +99 -0
- package/typescript/dialects/mysql/src/mysql-dialect.ts +75 -0
- package/typescript/dialects/oracle/package.json +13 -0
- package/typescript/dialects/oracle/src/index.ts +4 -0
- package/typescript/dialects/oracle/src/oracle-dialect.test.ts +118 -0
- package/typescript/dialects/oracle/src/oracle-dialect.ts +91 -0
- package/typescript/dialects/postgres/package.json +13 -0
- package/typescript/dialects/postgres/src/index.ts +4 -0
- package/typescript/dialects/postgres/src/postgres-dialect.test.ts +98 -0
- package/typescript/dialects/postgres/src/postgres-dialect.ts +82 -0
- package/typescript/dialects/sqlite/package.json +13 -0
- package/typescript/dialects/sqlite/src/index.ts +4 -0
- package/typescript/dialects/sqlite/src/sqlite-dialect.rollback.test.ts +30 -0
- package/typescript/dialects/sqlite/src/sqlite-dialect.test.ts +77 -0
- package/typescript/dialects/sqlite/src/sqlite-dialect.ts +96 -0
- package/typescript/dialects/sqlserver/package.json +13 -0
- package/typescript/dialects/sqlserver/src/index.ts +4 -0
- package/typescript/dialects/sqlserver/src/sqlserver-dialect.test.ts +109 -0
- package/typescript/dialects/sqlserver/src/sqlserver-dialect.ts +103 -0
- package/typescript/package.json +46 -0
- package/typescript/src/abstractions/migrater.ts +13 -0
- package/typescript/src/abstractions/sql-dialect-base.ts +38 -0
- package/typescript/src/abstractions/sql-dialect-factory.ts +29 -0
- package/typescript/src/abstractions/sql-dialect.ts +18 -0
- package/typescript/src/bin/migrate-create.ts +80 -0
- package/typescript/src/bin/migrate-down.ts +141 -0
- package/typescript/src/bin/migrate-setup.ts +106 -0
- package/typescript/src/bin/migrate-up.ts +111 -0
- package/typescript/src/cli-contract.ts +25 -0
- package/typescript/src/cli-spec.ts +73 -0
- package/typescript/src/cli.ts +52 -0
- package/typescript/src/create-database.test.ts +18 -0
- package/typescript/src/create-database.ts +7 -0
- package/typescript/src/create-sequence.ts +17 -0
- package/typescript/src/datasource-migrate.ts +314 -0
- package/typescript/src/generate-help.test.ts +33 -0
- package/typescript/src/generate-help.ts +173 -0
- package/typescript/src/help.test.ts +48 -0
- package/typescript/src/help.ts +12 -0
- package/typescript/src/index.ts +23 -0
- package/typescript/src/infrastructure/connection-resolver.ts +18 -0
- package/typescript/src/infrastructure/default-factory.test.ts +30 -0
- package/typescript/src/infrastructure/default-factory.ts +41 -0
- package/typescript/src/infrastructure/interop-default.test.ts +9 -0
- package/typescript/src/infrastructure/interop-default.ts +2 -0
- package/typescript/src/infrastructure/message-templates.ts +30 -0
- package/typescript/src/infrastructure/mysql-text-protocol.ts +7 -0
- package/typescript/src/infrastructure/split-on-go.ts +19 -0
- package/typescript/src/infrastructure/sql-templates.ts +10 -0
- package/typescript/src/infrastructure/templates-root.ts +16 -0
- package/typescript/src/init-select.test.ts +34 -0
- package/typescript/src/init-select.ts +77 -0
- package/typescript/src/migrater.ts +92 -0
- package/{dist/migration-client.d.ts → typescript/src/migration-client.ts} +12 -12
- package/typescript/src/path-exists.ts +10 -0
- package/typescript/src/setup-sql.test.ts +16 -0
- package/typescript/src/sql.ts +17 -0
- package/typescript/tsconfig.build.json +20 -0
- package/dist/abstractions/migrater.d.ts +0 -28
- package/dist/abstractions/migrater.js +0 -1
- package/dist/abstractions/sql-dialect-base.d.ts +0 -16
- package/dist/abstractions/sql-dialect-base.js +0 -19
- package/dist/abstractions/sql-dialect-factory.d.ts +0 -8
- package/dist/abstractions/sql-dialect-factory.js +0 -22
- package/dist/abstractions/sql-dialect.d.ts +0 -16
- package/dist/abstractions/sql-dialect.js +0 -1
- package/dist/bin/migrate-create.js +0 -71
- package/dist/bin/migrate-down.js +0 -135
- package/dist/bin/migrate-init.js +0 -77
- package/dist/bin/migrate-setup.js +0 -87
- package/dist/bin/migrate-up.js +0 -97
- package/dist/cli-contract.d.ts +0 -6
- package/dist/cli-contract.js +0 -19
- package/dist/cli.d.ts +0 -9
- package/dist/cli.js +0 -41
- package/dist/create-sequence.d.ts +0 -4
- package/dist/create-sequence.js +0 -16
- package/dist/datasource-migrate.d.ts +0 -31
- package/dist/datasource-migrate.js +0 -206
- package/dist/dialects/mysql-dialect.d.ts +0 -12
- package/dist/dialects/mysql-dialect.js +0 -56
- package/dist/dialects/oracle-dialect.d.ts +0 -18
- package/dist/dialects/oracle-dialect.js +0 -76
- package/dist/dialects/postgres-dialect.d.ts +0 -11
- package/dist/dialects/postgres-dialect.js +0 -58
- package/dist/dialects/sqlite-dialect.d.ts +0 -13
- package/dist/dialects/sqlite-dialect.js +0 -96
- package/dist/dialects/sqlserver-dialect.d.ts +0 -12
- package/dist/dialects/sqlserver-dialect.js +0 -73
- package/dist/help.js +0 -10
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -6
- package/dist/infrastructure/connection-resolver.d.ts +0 -7
- package/dist/infrastructure/connection-resolver.js +0 -19
- package/dist/infrastructure/default-factory.d.ts +0 -4
- package/dist/infrastructure/default-factory.js +0 -15
- package/dist/infrastructure/interop-default.d.ts +0 -3
- package/dist/infrastructure/interop-default.js +0 -1
- package/dist/infrastructure/message-templates.d.ts +0 -3
- package/dist/infrastructure/message-templates.js +0 -18
- package/dist/infrastructure/split-on-go.d.ts +0 -2
- package/dist/infrastructure/split-on-go.js +0 -20
- package/dist/infrastructure/sql-templates.d.ts +0 -2
- package/dist/infrastructure/sql-templates.js +0 -4
- package/dist/infrastructure/templates-root.d.ts +0 -2
- package/dist/infrastructure/templates-root.js +0 -11
- package/dist/init-select.d.ts +0 -12
- package/dist/init-select.js +0 -52
- package/dist/migrater.d.ts +0 -12
- package/dist/migrater.js +0 -84
- package/dist/migration-client.js +0 -1
- package/dist/path-exists.d.ts +0 -1
- package/dist/path-exists.js +0 -10
- package/dist/sql.d.ts +0 -3
- package/dist/sql.js +0 -15
- package/dist/templates/help/init.txt +0 -13
- package/dist/templates/messages/down/confirm-prompt.txt +0 -1
- package/dist/templates/messages/down/confirm-token-mismatch.txt +0 -1
- package/dist/templates/messages/down/confirm-tty-required.txt +0 -1
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/help/create.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/help/up.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/checksum-drift-line.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/checksum-drift.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/down/confirm-mismatch.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/down/confirm-stdin-failed.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/invalid-name.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/migrate-path-not-dir.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/missing-connection.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/missing-name-hint.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/missing-name.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/missing-provider-hint.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/missing-provider.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/missing-value-for-flag.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/rollback-no-down-sibling.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/rollback-no-rollback-sibling.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/rollback-not-in-path.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/sqlite-prerequisite.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/unknown-arg.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/errors/unsupported-provider.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/setup-complete.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/status/applied.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/status/created.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/status/no-more-pending.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/status/no-pending.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/status/no-rollback.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/messages/status/rolled-back.txt +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/scaffold/down.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/scaffold/up.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/mysql/migrate_logs.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/mysql/migrates.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/oracle/migrate_logs.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/oracle/migrates.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/postgres/migrate_logs.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/postgres/migrates.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/sqlite/migrate_logs.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/sqlite/migrates.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/sqlserver/migrate_logs.sql +0 -0
- /package/{dist → csharp/Dialects/Mysql/bin/Debug/net9.0}/templates/sql/sqlserver/migrates.sql +0 -0
- /package/{dist/bin → orchestrator/dist}/migrate-create.d.ts +0 -0
- /package/{dist/bin → orchestrator/dist}/migrate-down.d.ts +0 -0
- /package/{dist/bin → orchestrator/dist}/migrate-init.d.ts +0 -0
- /package/{dist/bin → orchestrator/dist}/migrate-setup.d.ts +0 -0
- /package/{dist/bin → orchestrator/dist}/migrate-up.d.ts +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
|
+
import { parse } from 'yaml';
|
|
5
|
+
|
|
6
|
+
type HelpArg = {
|
|
7
|
+
flag: string;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
required: boolean;
|
|
10
|
+
help: string;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type HelpCommand = {
|
|
14
|
+
verb: string;
|
|
15
|
+
summary: string;
|
|
16
|
+
examples: string;
|
|
17
|
+
show_connection_env?: boolean;
|
|
18
|
+
args: HelpArg[];
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
type HelpSpec = {
|
|
22
|
+
providers: string[];
|
|
23
|
+
connection_environment: Record<string, string[]>;
|
|
24
|
+
commands: HelpCommand[];
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const REPO_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
28
|
+
const CLI_YAML = join(REPO_ROOT, 'cli.yaml');
|
|
29
|
+
const HELP_DIR = join(REPO_ROOT, 'shared', 'templates', 'help');
|
|
30
|
+
|
|
31
|
+
const requireString = (value: unknown, path: string): string => {
|
|
32
|
+
if (typeof value !== 'string' || value.trim() === '') {
|
|
33
|
+
throw new Error(`cli.yaml: ${path} must be a non-empty string`);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const parseHelpSpec = (raw: unknown): HelpSpec => {
|
|
39
|
+
if (raw === null || typeof raw !== 'object') {
|
|
40
|
+
throw new Error('cli.yaml: root must be a mapping');
|
|
41
|
+
}
|
|
42
|
+
const doc = raw as Record<string, unknown>;
|
|
43
|
+
if (!Array.isArray(doc.providers) || doc.providers.some((p) => typeof p !== 'string')) {
|
|
44
|
+
throw new Error('cli.yaml: providers must be a string list');
|
|
45
|
+
}
|
|
46
|
+
const envRaw = doc.connection_environment;
|
|
47
|
+
if (envRaw === null || typeof envRaw !== 'object' || Array.isArray(envRaw)) {
|
|
48
|
+
throw new Error('cli.yaml: connection_environment must be a mapping');
|
|
49
|
+
}
|
|
50
|
+
const connection_environment: Record<string, string[]> = {};
|
|
51
|
+
for (const [dialect, vars] of Object.entries(envRaw)) {
|
|
52
|
+
if (!Array.isArray(vars) || vars.some((v) => typeof v !== 'string')) {
|
|
53
|
+
throw new Error(`cli.yaml: connection_environment.${dialect} must be a string list`);
|
|
54
|
+
}
|
|
55
|
+
connection_environment[dialect] = vars;
|
|
56
|
+
}
|
|
57
|
+
if (!Array.isArray(doc.commands)) {
|
|
58
|
+
throw new Error('cli.yaml: commands must be a list');
|
|
59
|
+
}
|
|
60
|
+
const commands = doc.commands.map((item, i) => {
|
|
61
|
+
if (item === null || typeof item !== 'object') {
|
|
62
|
+
throw new Error(`cli.yaml: commands[${i}] must be a mapping`);
|
|
63
|
+
}
|
|
64
|
+
const row = item as Record<string, unknown>;
|
|
65
|
+
const verb = requireString(row.verb, `commands[${i}].verb`);
|
|
66
|
+
if (!Array.isArray(row.args)) {
|
|
67
|
+
throw new Error(`cli.yaml: commands.${verb}.args must be a list`);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
verb,
|
|
71
|
+
summary: requireString(row.summary, `commands.${verb}.summary`),
|
|
72
|
+
examples: requireString(row.examples, `commands.${verb}.examples`),
|
|
73
|
+
show_connection_env: row.show_connection_env === true,
|
|
74
|
+
args: row.args.map((arg, j) => {
|
|
75
|
+
if (arg === null || typeof arg !== 'object') {
|
|
76
|
+
throw new Error(`cli.yaml: commands.${verb}.args[${j}] must be a mapping`);
|
|
77
|
+
}
|
|
78
|
+
const a = arg as Record<string, unknown>;
|
|
79
|
+
return {
|
|
80
|
+
flag: requireString(a.flag, `commands.${verb}.args[${j}].flag`),
|
|
81
|
+
placeholder: typeof a.placeholder === 'string' ? a.placeholder : undefined,
|
|
82
|
+
required: a.required === true,
|
|
83
|
+
help: requireString(a.help, `commands.${verb}.args[${j}].help`),
|
|
84
|
+
};
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
providers: doc.providers as string[],
|
|
90
|
+
connection_environment,
|
|
91
|
+
commands,
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const wrapArgHelp = (flag: string, help: string, flagWidth: number): string => {
|
|
96
|
+
const lines = help.replace(/\s+$/, '').split('\n');
|
|
97
|
+
const indent = ` ${flag.padEnd(flagWidth)} `;
|
|
98
|
+
const cont = ' '.repeat(indent.length);
|
|
99
|
+
return [indent + lines[0], ...lines.slice(1).map((line) => cont + line.trimStart())].join('\n');
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const renderFlags = (args: HelpArg[]): string => {
|
|
103
|
+
const flagWidth = Math.max(...args.map((a) => a.flag.length));
|
|
104
|
+
return args.map((a) => wrapArgHelp(a.flag, a.help, flagWidth)).join('\n');
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const renderConnectionEnv = (spec: HelpSpec): string => {
|
|
108
|
+
const nameWidth = Math.max(...spec.providers.map((p) => p.length));
|
|
109
|
+
const lines = spec.providers.map((name) => {
|
|
110
|
+
const vars = spec.connection_environment[name];
|
|
111
|
+
if (!vars) {
|
|
112
|
+
throw new Error(`cli.yaml: connection_environment missing ${name}`);
|
|
113
|
+
}
|
|
114
|
+
return ` ${name.padEnd(nameWidth)} ${vars.join(', ')}`;
|
|
115
|
+
});
|
|
116
|
+
return [
|
|
117
|
+
'Per-dialect env vars consulted when --connection is omitted:',
|
|
118
|
+
...lines,
|
|
119
|
+
].join('\n');
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const indentBlock = (text: string): string =>
|
|
123
|
+
text
|
|
124
|
+
.split('\n')
|
|
125
|
+
.map((line) => (line.length === 0 ? '' : ` ${line}`))
|
|
126
|
+
.join('\n');
|
|
127
|
+
|
|
128
|
+
export const renderHelpTemplate = (spec: HelpSpec, command: HelpCommand): string => {
|
|
129
|
+
const parts = [
|
|
130
|
+
'{{usage}}',
|
|
131
|
+
'',
|
|
132
|
+
command.summary.replace(/\s+$/, ''),
|
|
133
|
+
'',
|
|
134
|
+
renderFlags(command.args),
|
|
135
|
+
'',
|
|
136
|
+
'Examples:',
|
|
137
|
+
indentBlock(command.examples.replace(/\s+$/, '')),
|
|
138
|
+
];
|
|
139
|
+
if (command.show_connection_env) {
|
|
140
|
+
parts.push('', renderConnectionEnv(spec));
|
|
141
|
+
}
|
|
142
|
+
return `${parts.join('\n')}\n`;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
export const renderHelpTemplates = (raw: unknown): Record<string, string> => {
|
|
146
|
+
const spec = parseHelpSpec(raw);
|
|
147
|
+
return Object.fromEntries(spec.commands.map((c) => [c.verb, renderHelpTemplate(spec, c)]));
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export const generateHelpFiles = async (): Promise<string[]> => {
|
|
151
|
+
const files = renderHelpTemplates(parse(await readFile(CLI_YAML, 'utf8')));
|
|
152
|
+
const written: string[] = [];
|
|
153
|
+
const packagedDir = join(dirname(fileURLToPath(import.meta.url)), '..');
|
|
154
|
+
const packagedCli = join(packagedDir, 'cli.yaml');
|
|
155
|
+
await writeFile(packagedCli, await readFile(CLI_YAML, 'utf8'));
|
|
156
|
+
written.push(packagedCli);
|
|
157
|
+
const packagedBundle = join(packagedDir, 'bundle.yaml');
|
|
158
|
+
await writeFile(packagedBundle, await readFile(join(REPO_ROOT, 'bundle.yaml'), 'utf8'));
|
|
159
|
+
written.push(packagedBundle);
|
|
160
|
+
for (const [verb, text] of Object.entries(files)) {
|
|
161
|
+
const path = join(HELP_DIR, `${verb}.txt`);
|
|
162
|
+
await writeFile(path, text);
|
|
163
|
+
written.push(path);
|
|
164
|
+
}
|
|
165
|
+
return written;
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
|
|
169
|
+
const written = await generateHelpFiles();
|
|
170
|
+
for (const path of written) {
|
|
171
|
+
console.log(path);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import {
|
|
3
|
+
fillHelpTemplate,
|
|
4
|
+
migrateCommand,
|
|
5
|
+
verbFromCommand,
|
|
6
|
+
type MigrateVerb,
|
|
7
|
+
} from './cli-contract.ts';
|
|
8
|
+
import { loadHelp, loadProgramUsage } from './help.ts';
|
|
9
|
+
|
|
10
|
+
const VERBS: MigrateVerb[] = ['setup', 'up', 'down', 'create'];
|
|
11
|
+
|
|
12
|
+
describe('unified help loader', () => {
|
|
13
|
+
it('maps migrate-<verb> onto the shared template file', () => {
|
|
14
|
+
expect(verbFromCommand('migrate-create')).toBe('create');
|
|
15
|
+
expect(migrateCommand('create')).toBe('migrate-create');
|
|
16
|
+
expect(() => verbFromCommand('MigrateRunner')).toThrow(/Unknown migrate command/);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('fills {{command}} and {{usage}} from cli.yaml', () => {
|
|
20
|
+
const filled = fillHelpTemplate('{{usage}}\n {{command}} --name x\n', 'migrate-create');
|
|
21
|
+
expect(filled.startsWith('Usage: migrate-create --provider')).toBe(true);
|
|
22
|
+
expect(filled).toContain('migrate-create --name x');
|
|
23
|
+
expect(filled).not.toContain('{{');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('loads program usage with the same migrate-<verb> Usage lines', async () => {
|
|
27
|
+
const text = await loadProgramUsage();
|
|
28
|
+
for (const verb of VERBS) {
|
|
29
|
+
expect(text).toContain(`Usage: ${migrateCommand(verb)} --provider`);
|
|
30
|
+
}
|
|
31
|
+
expect(text).toContain('Usage: migrate-init');
|
|
32
|
+
expect(text).not.toContain('{{command}}');
|
|
33
|
+
expect(text).not.toContain('MigrateRunner');
|
|
34
|
+
expect(text).not.toMatch(/^Usage: (create|up|down|setup) /m);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('loads the same filled help the rust and csharp runners produce', async () => {
|
|
38
|
+
for (const verb of VERBS) {
|
|
39
|
+
const command = migrateCommand(verb);
|
|
40
|
+
const text = await loadHelp(command);
|
|
41
|
+
expect(text.startsWith(`Usage: ${command} --provider`)).toBe(true);
|
|
42
|
+
expect(text).toContain(`${command} --provider sqlite`);
|
|
43
|
+
expect(text).not.toContain('{{command}}');
|
|
44
|
+
expect(text).not.toMatch(/^Usage: (create|up|down|setup) /m);
|
|
45
|
+
expect(text).not.toMatch(/^\s+(create|up|down|setup) --provider/m);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { fillHelpTemplate, programUsageText, verbFromCommand } from './cli-contract.ts';
|
|
4
|
+
import { templatesRoot } from './infrastructure/templates-root.ts';
|
|
5
|
+
|
|
6
|
+
export const loadHelp = async (command: string): Promise<string> => {
|
|
7
|
+
const verb = verbFromCommand(command);
|
|
8
|
+
const text = await readFile(join(templatesRoot(), 'help', `${verb}.txt`), 'utf8');
|
|
9
|
+
return fillHelpTemplate(text, command);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const loadProgramUsage = async (): Promise<string> => programUsageText();
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export * from './datasource-migrate.ts';
|
|
2
|
+
export type {
|
|
3
|
+
CreateArg,
|
|
4
|
+
CreateResponse,
|
|
5
|
+
DownArg,
|
|
6
|
+
IMigrater,
|
|
7
|
+
SetupArg,
|
|
8
|
+
UpArg,
|
|
9
|
+
} from './abstractions/migrater.ts';
|
|
10
|
+
export { getMigrater, Migrater } from './migrater.ts';
|
|
11
|
+
export {
|
|
12
|
+
fillHelpTemplate,
|
|
13
|
+
migrateCommand,
|
|
14
|
+
verbFromCommand,
|
|
15
|
+
type MigrateVerb,
|
|
16
|
+
} from './cli-contract.ts';
|
|
17
|
+
export { loadHelp, loadProgramUsage } from './help.ts';
|
|
18
|
+
export {
|
|
19
|
+
fillTemplate,
|
|
20
|
+
loadMessage,
|
|
21
|
+
loadScaffold,
|
|
22
|
+
} from './infrastructure/message-templates.ts';
|
|
23
|
+
export { normalizeDialect, pathExists, type SqlDialect } from './sql.ts';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ISqlDialect } from '../abstractions/sql-dialect.ts';
|
|
2
|
+
|
|
3
|
+
export class ConnectionResolver {
|
|
4
|
+
constructor(private readonly env: NodeJS.ProcessEnv = process.env) {}
|
|
5
|
+
|
|
6
|
+
fromEnvironment(dialect: ISqlDialect): string | null {
|
|
7
|
+
for (const name of dialect.connectionEnvironmentVariables) {
|
|
8
|
+
const value = this.env[name];
|
|
9
|
+
if (value) return value;
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
resolve(dialect: ISqlDialect, fromFlag: string | null): string | null {
|
|
15
|
+
if (fromFlag) return fromFlag;
|
|
16
|
+
return this.fromEnvironment(dialect);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { defaultDialectFactory } from './default-factory.ts';
|
|
3
|
+
|
|
4
|
+
describe('defaultDialectFactory', () => {
|
|
5
|
+
it('registers every dialect name and alias', () => {
|
|
6
|
+
const names = defaultDialectFactory.all().map((d) => d.name);
|
|
7
|
+
for (const name of names) {
|
|
8
|
+
expect(['sqlite', 'postgres', 'mysql', 'sqlserver', 'oracle']).toContain(name);
|
|
9
|
+
}
|
|
10
|
+
if (names.includes('sqlite')) {
|
|
11
|
+
expect(defaultDialectFactory.get('sqlite3').name).toBe('sqlite');
|
|
12
|
+
}
|
|
13
|
+
if (names.includes('postgres')) {
|
|
14
|
+
expect(defaultDialectFactory.get('postgresql').name).toBe('postgres');
|
|
15
|
+
}
|
|
16
|
+
if (names.includes('mysql')) {
|
|
17
|
+
expect(defaultDialectFactory.get('mariadb').name).toBe('mysql');
|
|
18
|
+
}
|
|
19
|
+
if (names.includes('sqlserver')) {
|
|
20
|
+
expect(defaultDialectFactory.get('mssql').name).toBe('sqlserver');
|
|
21
|
+
expect(defaultDialectFactory.get('mssqlserver').name).toBe('sqlserver');
|
|
22
|
+
expect(defaultDialectFactory.get('ms-sql-server').name).toBe('sqlserver');
|
|
23
|
+
}
|
|
24
|
+
if (names.includes('oracle')) {
|
|
25
|
+
expect(defaultDialectFactory.get('ora').name).toBe('oracle');
|
|
26
|
+
}
|
|
27
|
+
expect(defaultDialectFactory.tryGet('nope')).toBeUndefined();
|
|
28
|
+
expect(() => defaultDialectFactory.get('nope')).toThrow(/Unknown SQL dialect/);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
|
+
import { SqlDialectFactory } from '../abstractions/sql-dialect-factory.ts';
|
|
5
|
+
import type { ISqlDialect } from '../abstractions/sql-dialect.ts';
|
|
6
|
+
import { ConnectionResolver } from './connection-resolver.ts';
|
|
7
|
+
|
|
8
|
+
const DIALECT_PACKAGES = [
|
|
9
|
+
'sqlite',
|
|
10
|
+
'postgres',
|
|
11
|
+
'mysql',
|
|
12
|
+
'sqlserver',
|
|
13
|
+
'oracle',
|
|
14
|
+
] as const;
|
|
15
|
+
|
|
16
|
+
const dialectEntry = (name: string): string => {
|
|
17
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
18
|
+
const ext = import.meta.url.endsWith('.ts') ? '.ts' : '.js';
|
|
19
|
+
return join(here, '..', '..', 'dialects', name, 'src', `index${ext}`);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const loadInstalledDialects = async (): Promise<ISqlDialect[]> => {
|
|
23
|
+
const loaded: ISqlDialect[] = [];
|
|
24
|
+
for (const name of DIALECT_PACKAGES) {
|
|
25
|
+
const file = dialectEntry(name);
|
|
26
|
+
if (!existsSync(file)) continue;
|
|
27
|
+
try {
|
|
28
|
+
const mod = (await import(pathToFileURL(file).href)) as { createDialect?: () => ISqlDialect };
|
|
29
|
+
if (typeof mod.createDialect === 'function') {
|
|
30
|
+
loaded.push(mod.createDialect());
|
|
31
|
+
}
|
|
32
|
+
} catch {
|
|
33
|
+
// Dialect is compiled and drivers are installed by migrate-init.
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return loaded;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const defaultDialectFactory = new SqlDialectFactory(await loadInstalledDialects());
|
|
40
|
+
|
|
41
|
+
export const connectionResolver = new ConnectionResolver();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { interopDefault } from './interop-default.ts';
|
|
3
|
+
|
|
4
|
+
describe('interopDefault', () => {
|
|
5
|
+
it('prefers default when present and falls back to the module namespace', () => {
|
|
6
|
+
expect(interopDefault({ default: { connect: 1 } })).toEqual({ connect: 1 });
|
|
7
|
+
expect(interopDefault({ connect: 2 })).toEqual({ connect: 2 });
|
|
8
|
+
});
|
|
9
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { templatesRoot } from './templates-root.ts';
|
|
4
|
+
|
|
5
|
+
export const fillTemplate = (text: string, vars: Record<string, string>): string => {
|
|
6
|
+
let out = text;
|
|
7
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
8
|
+
out = out.replaceAll(`{{${key}}}`, value);
|
|
9
|
+
}
|
|
10
|
+
return out;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const loadMessage = async (
|
|
14
|
+
relativePath: string,
|
|
15
|
+
vars: Record<string, string> = {},
|
|
16
|
+
): Promise<string> => {
|
|
17
|
+
const text = await readFile(
|
|
18
|
+
join(templatesRoot(), 'messages', `${relativePath}.txt`),
|
|
19
|
+
'utf8',
|
|
20
|
+
);
|
|
21
|
+
return fillTemplate(text, vars);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const loadScaffold = async (
|
|
25
|
+
name: 'up' | 'down',
|
|
26
|
+
vars: Record<string, string>,
|
|
27
|
+
): Promise<string> => {
|
|
28
|
+
const text = await readFile(join(templatesRoot(), 'scaffold', `${name}.sql`), 'utf8');
|
|
29
|
+
return fillTemplate(text, vars);
|
|
30
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** why: DDL statements (DROP/CREATE PROCEDURE) reject prepared-statement protocol (MySQL 1295) */
|
|
2
|
+
export async function applyMysqlDdlViaTextProtocol(
|
|
3
|
+
conn: { query: (sql: string) => Promise<unknown> },
|
|
4
|
+
sql: string,
|
|
5
|
+
): Promise<void> {
|
|
6
|
+
await conn.query(sql);
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const GO_LINE = /^\s*GO\s*$/i;
|
|
2
|
+
|
|
3
|
+
/** Split migration SQL on whole-line GO batch separators. */
|
|
4
|
+
export function splitOnGo(text: string): string[] {
|
|
5
|
+
const batches: string[] = [];
|
|
6
|
+
let buf = '';
|
|
7
|
+
for (const line of text.replace(/\r\n/g, '\n').split('\n')) {
|
|
8
|
+
if (GO_LINE.test(line)) {
|
|
9
|
+
const s = buf.trim();
|
|
10
|
+
if (s.length > 0) batches.push(s);
|
|
11
|
+
buf = '';
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
buf = buf.length > 0 ? `${buf}\n${line}` : line;
|
|
15
|
+
}
|
|
16
|
+
const tail = buf.trim();
|
|
17
|
+
if (tail.length > 0) batches.push(tail);
|
|
18
|
+
return batches;
|
|
19
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import type { SqlDialect } from '../sql.ts';
|
|
4
|
+
import { templatesRoot } from './templates-root.ts';
|
|
5
|
+
|
|
6
|
+
export const readSqlTemplate = async (
|
|
7
|
+
dialect: SqlDialect,
|
|
8
|
+
name: 'migrates' | 'migrate_logs',
|
|
9
|
+
): Promise<string> =>
|
|
10
|
+
(await readFile(join(templatesRoot(), 'sql', dialect, `${name}.sql`), 'utf8')).trim();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { dirname, join } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
|
|
4
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
|
|
6
|
+
/** Repo `shared/templates`; after build, `dist/templates` (copied from shared). */
|
|
7
|
+
export const templatesRoot = (): string => {
|
|
8
|
+
const normalized = HERE.replaceAll('\\', '/');
|
|
9
|
+
if (normalized.endsWith('/dist/src/infrastructure') || normalized.endsWith('/dist.tmp/src/infrastructure')) {
|
|
10
|
+
return join(HERE, '..', '..', 'templates');
|
|
11
|
+
}
|
|
12
|
+
if (normalized.endsWith('/dist/infrastructure')) {
|
|
13
|
+
return join(HERE, '..', 'templates');
|
|
14
|
+
}
|
|
15
|
+
return join(HERE, '..', '..', '..', 'shared', 'templates');
|
|
16
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { loadSelectedPackages, resolveInitDialects } from './init-select.ts';
|
|
3
|
+
|
|
4
|
+
describe('init dialect selection', () => {
|
|
5
|
+
it('accepts aliases and keeps cli.yaml order', () => {
|
|
6
|
+
expect(resolveInitDialects(['ora', 'pg'], false)).toEqual(['postgres', 'oracle']);
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it('restores every provider for --all', () => {
|
|
10
|
+
expect(resolveInitDialects([], true)).toEqual([
|
|
11
|
+
'sqlite',
|
|
12
|
+
'postgres',
|
|
13
|
+
'mysql',
|
|
14
|
+
'sqlserver',
|
|
15
|
+
'oracle',
|
|
16
|
+
]);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('reads typescript packages from bundle.yaml', async () => {
|
|
20
|
+
const selected = await loadSelectedPackages(['sqlite', 'postgres']);
|
|
21
|
+
expect(selected.packages.map((p) => p.name).sort()).toEqual(['better-sqlite3', 'pg']);
|
|
22
|
+
expect(selected.allDriverPackages).toEqual(
|
|
23
|
+
expect.arrayContaining(['better-sqlite3', 'pg', 'mysql2', 'mssql', 'oracledb']),
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('reads csharp packages and versions from bundle.yaml', async () => {
|
|
28
|
+
const selected = await loadSelectedPackages(['sqlite', 'sqlserver'], 'csharp');
|
|
29
|
+
expect(selected.packages).toEqual([
|
|
30
|
+
{ name: 'Microsoft.Data.Sqlite', version: '9.0.0' },
|
|
31
|
+
{ name: 'Microsoft.Data.SqlClient', version: '6.0.2' },
|
|
32
|
+
]);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { parse } from 'yaml';
|
|
6
|
+
import { cliSpec } from './cli-spec.ts';
|
|
7
|
+
|
|
8
|
+
export type SelectedDialects = {
|
|
9
|
+
names: string[];
|
|
10
|
+
packages: { name: string }[];
|
|
11
|
+
allDriverPackages: string[];
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const stripKey = (raw: string): string => raw.replace(/[\s_-]/g, '').toLowerCase();
|
|
15
|
+
|
|
16
|
+
export const normalizeInitProvider = (raw: string): string | undefined => {
|
|
17
|
+
const key = stripKey(raw);
|
|
18
|
+
const direct = cliSpec.providers.find((p) => stripKey(p) === key);
|
|
19
|
+
if (direct) return direct;
|
|
20
|
+
return cliSpec.provider_aliases[key];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const resolveInitDialects = (raw: string[], all: boolean): string[] => {
|
|
24
|
+
if (all) return [...cliSpec.providers];
|
|
25
|
+
if (raw.length === 0) {
|
|
26
|
+
throw new Error('pass --dialect <provider> at least once, or --all');
|
|
27
|
+
}
|
|
28
|
+
const selected = new Set<string>();
|
|
29
|
+
for (const value of raw) {
|
|
30
|
+
const name = normalizeInitProvider(value);
|
|
31
|
+
if (!name) {
|
|
32
|
+
throw new Error(`unsupported provider: ${value}`);
|
|
33
|
+
}
|
|
34
|
+
selected.add(name);
|
|
35
|
+
}
|
|
36
|
+
return cliSpec.providers.filter((name) => selected.has(name));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export type BundlePackage = {
|
|
40
|
+
name: string;
|
|
41
|
+
version?: string;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
type BundleDialect = {
|
|
45
|
+
packages?: BundlePackage[];
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
type BundleDoc = {
|
|
49
|
+
languages?: Record<string, { dialects?: Record<string, BundleDialect> }>;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export const bundleYamlPath = (): string => {
|
|
53
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
54
|
+
const candidates = [
|
|
55
|
+
join(here, '..', 'bundle.yaml'),
|
|
56
|
+
join(here, '..', '..', 'bundle.yaml'),
|
|
57
|
+
join(process.cwd(), 'bundle.yaml'),
|
|
58
|
+
];
|
|
59
|
+
const found = candidates.find((candidate) => existsSync(candidate));
|
|
60
|
+
if (!found) {
|
|
61
|
+
throw new Error('bundle.yaml not found');
|
|
62
|
+
}
|
|
63
|
+
return found;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const loadSelectedPackages = async (
|
|
67
|
+
dialects: string[],
|
|
68
|
+
language = 'typescript',
|
|
69
|
+
): Promise<SelectedDialects> => {
|
|
70
|
+
const raw = parse(await readFile(bundleYamlPath(), 'utf8')) as BundleDoc;
|
|
71
|
+
const byName = raw.languages?.[language]?.dialects ?? {};
|
|
72
|
+
const allDriverPackages = [
|
|
73
|
+
...new Set(Object.values(byName).flatMap((d) => (d.packages ?? []).map((p) => p.name))),
|
|
74
|
+
];
|
|
75
|
+
const packages = dialects.flatMap((name) => byName[name]?.packages ?? []);
|
|
76
|
+
return { names: dialects, packages, allDriverPackages };
|
|
77
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { mkdir, readdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import type {
|
|
3
|
+
CreateArg,
|
|
4
|
+
CreateResponse,
|
|
5
|
+
DownArg,
|
|
6
|
+
IMigrater,
|
|
7
|
+
SetupArg,
|
|
8
|
+
UpArg,
|
|
9
|
+
} from './abstractions/migrater.ts';
|
|
10
|
+
import type { ISqlDialect } from './abstractions/sql-dialect.ts';
|
|
11
|
+
import { isMigrationName, nextSequence, pad4 } from './create-sequence.ts';
|
|
12
|
+
import { applyOneDown, applyOneUp, discoverMigrations } from './datasource-migrate.ts';
|
|
13
|
+
import { defaultDialectFactory } from './infrastructure/default-factory.ts';
|
|
14
|
+
import { fillTemplate, loadMessage, loadScaffold } from './infrastructure/message-templates.ts';
|
|
15
|
+
|
|
16
|
+
const invalidNameTpl = await loadMessage('errors/invalid-name');
|
|
17
|
+
|
|
18
|
+
export class Migrater implements IMigrater {
|
|
19
|
+
constructor(private readonly dialect: ISqlDialect) {}
|
|
20
|
+
|
|
21
|
+
get name(): string {
|
|
22
|
+
return this.dialect.name;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async setup({ connection, migrationsPath }: SetupArg): Promise<void> {
|
|
26
|
+
await this.dialect.prepareSetup(connection);
|
|
27
|
+
const client = await this.dialect.createClient(connection);
|
|
28
|
+
try {
|
|
29
|
+
await client.exec(this.dialect.migratesDdl);
|
|
30
|
+
await client.exec(this.dialect.migrateLogsDdl);
|
|
31
|
+
await mkdir(migrationsPath, { recursive: true });
|
|
32
|
+
} finally {
|
|
33
|
+
await client.close();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async up({ connection, migrationsPath, one = false }: UpArg): Promise<string[]> {
|
|
38
|
+
const client = await this.dialect.createClient(connection);
|
|
39
|
+
try {
|
|
40
|
+
const migrations = await discoverMigrations({
|
|
41
|
+
migratePath: migrationsPath,
|
|
42
|
+
dialect: this.dialect.name,
|
|
43
|
+
});
|
|
44
|
+
const applied: string[] = [];
|
|
45
|
+
for (;;) {
|
|
46
|
+
const result = await applyOneUp({ client, migrations });
|
|
47
|
+
if (!result.applied || result.name == null) break;
|
|
48
|
+
applied.push(result.name);
|
|
49
|
+
if (one) break;
|
|
50
|
+
}
|
|
51
|
+
return applied;
|
|
52
|
+
} finally {
|
|
53
|
+
await client.close();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async down({ connection, migrationsPath }: DownArg): Promise<string | null> {
|
|
58
|
+
const client = await this.dialect.createClient(connection);
|
|
59
|
+
try {
|
|
60
|
+
const migrations = await discoverMigrations({
|
|
61
|
+
migratePath: migrationsPath,
|
|
62
|
+
dialect: this.dialect.name,
|
|
63
|
+
});
|
|
64
|
+
const result = await applyOneDown({ client, migrations });
|
|
65
|
+
return result.rolledBack ? result.name : null;
|
|
66
|
+
} finally {
|
|
67
|
+
await client.close();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async create({ name, migrationsPath }: CreateArg): Promise<CreateResponse> {
|
|
72
|
+
if (!isMigrationName(name)) {
|
|
73
|
+
throw new Error(fillTemplate(invalidNameTpl, { name }));
|
|
74
|
+
}
|
|
75
|
+
await mkdir(migrationsPath, { recursive: true });
|
|
76
|
+
let entries: string[] = [];
|
|
77
|
+
try {
|
|
78
|
+
entries = await readdir(migrationsPath);
|
|
79
|
+
} catch (err) {
|
|
80
|
+
if (!(err instanceof Error && 'code' in err && err.code === 'ENOENT')) throw err;
|
|
81
|
+
}
|
|
82
|
+
const seq = pad4(nextSequence(entries));
|
|
83
|
+
const upName = `${seq}_${name}_up.sql`;
|
|
84
|
+
const downName = `${seq}_${name}_down.sql`;
|
|
85
|
+
await writeFile(`${migrationsPath}/${upName}`, await loadScaffold('up', { name }));
|
|
86
|
+
await writeFile(`${migrationsPath}/${downName}`, await loadScaffold('down', { name }));
|
|
87
|
+
return { upName, downName };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const getMigrater = (provider: string): IMigrater =>
|
|
92
|
+
new Migrater(defaultDialectFactory.get(provider));
|