@pristine-ts/mysql-cli 2.0.16
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/LICENSE +201 -0
- package/dist/lib/cjs/commands/commands.js +25 -0
- package/dist/lib/cjs/commands/commands.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command-options.js +37 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command.js +120 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command-options.js +27 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command.js +104 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command-options.js +27 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command.js +74 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate.command-options.js +41 -0
- package/dist/lib/cjs/commands/mysql-migrate.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate.command.js +86 -0
- package/dist/lib/cjs/commands/mysql-migrate.command.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +18 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/migration-state.enum.js +28 -0
- package/dist/lib/cjs/enums/migration-state.enum.js.map +1 -0
- package/dist/lib/cjs/errors/errors.js +22 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -0
- package/dist/lib/cjs/errors/migration-checksum-mismatch.error.js +24 -0
- package/dist/lib/cjs/errors/migration-checksum-mismatch.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-duplicate-name.error.js +21 -0
- package/dist/lib/cjs/errors/migration-duplicate-name.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-execution.error.js +21 -0
- package/dist/lib/cjs/errors/migration-execution.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-invalid-name.error.js +20 -0
- package/dist/lib/cjs/errors/migration-invalid-name.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-orphaned-record.error.js +22 -0
- package/dist/lib/cjs/errors/migration-orphaned-record.error.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +18 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
- package/dist/lib/cjs/interfaces/mysql-migration.interface.js +3 -0
- package/dist/lib/cjs/interfaces/mysql-migration.interface.js.map +1 -0
- package/dist/lib/cjs/managers/managers.js +22 -0
- package/dist/lib/cjs/managers/managers.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-checksum.manager.js +35 -0
- package/dist/lib/cjs/managers/mysql-migration-checksum.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-record.manager.js +96 -0
- package/dist/lib/cjs/managers/mysql-migration-record.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-runner.manager.js +96 -0
- package/dist/lib/cjs/managers/mysql-migration-runner.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-scaffold.manager.js +217 -0
- package/dist/lib/cjs/managers/mysql-migration-scaffold.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration.manager.js +261 -0
- package/dist/lib/cjs/managers/mysql-migration.manager.js.map +1 -0
- package/dist/lib/cjs/models/migration-apply-entry.model.js +11 -0
- package/dist/lib/cjs/models/migration-apply-entry.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-apply-result.model.js +18 -0
- package/dist/lib/cjs/models/migration-apply-result.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-plan-entry.model.js +11 -0
- package/dist/lib/cjs/models/migration-plan-entry.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-plan.model.js +24 -0
- package/dist/lib/cjs/models/migration-plan.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-record.model.js +12 -0
- package/dist/lib/cjs/models/migration-record.model.js.map +1 -0
- package/dist/lib/cjs/models/models.js +22 -0
- package/dist/lib/cjs/models/models.js.map +1 -0
- package/dist/lib/cjs/mysql-cli.configuration-keys.js +20 -0
- package/dist/lib/cjs/mysql-cli.configuration-keys.js.map +1 -0
- package/dist/lib/cjs/mysql-cli.module.js +63 -0
- package/dist/lib/cjs/mysql-cli.module.js.map +1 -0
- package/dist/lib/cjs/mysql-cli.module.keyname.js +5 -0
- package/dist/lib/cjs/mysql-cli.module.keyname.js.map +1 -0
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/lib/esm/commands/commands.js +9 -0
- package/dist/lib/esm/commands/commands.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command-options.js +33 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command.js +114 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command-options.js +23 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command.js +101 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command-options.js +23 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command.js +71 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate.command-options.js +37 -0
- package/dist/lib/esm/commands/mysql-migrate.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate.command.js +83 -0
- package/dist/lib/esm/commands/mysql-migrate.command.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +2 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/migration-state.enum.js +25 -0
- package/dist/lib/esm/enums/migration-state.enum.js.map +1 -0
- package/dist/lib/esm/errors/errors.js +6 -0
- package/dist/lib/esm/errors/errors.js.map +1 -0
- package/dist/lib/esm/errors/migration-checksum-mismatch.error.js +20 -0
- package/dist/lib/esm/errors/migration-checksum-mismatch.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-duplicate-name.error.js +17 -0
- package/dist/lib/esm/errors/migration-duplicate-name.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-execution.error.js +17 -0
- package/dist/lib/esm/errors/migration-execution.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-invalid-name.error.js +16 -0
- package/dist/lib/esm/errors/migration-invalid-name.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-orphaned-record.error.js +18 -0
- package/dist/lib/esm/errors/migration-orphaned-record.error.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +2 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
- package/dist/lib/esm/interfaces/mysql-migration.interface.js +2 -0
- package/dist/lib/esm/interfaces/mysql-migration.interface.js.map +1 -0
- package/dist/lib/esm/managers/managers.js +6 -0
- package/dist/lib/esm/managers/managers.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-checksum.manager.js +32 -0
- package/dist/lib/esm/managers/mysql-migration-checksum.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-record.manager.js +93 -0
- package/dist/lib/esm/managers/mysql-migration-record.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-runner.manager.js +93 -0
- package/dist/lib/esm/managers/mysql-migration-runner.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-scaffold.manager.js +211 -0
- package/dist/lib/esm/managers/mysql-migration-scaffold.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration.manager.js +258 -0
- package/dist/lib/esm/managers/mysql-migration.manager.js.map +1 -0
- package/dist/lib/esm/models/migration-apply-entry.model.js +7 -0
- package/dist/lib/esm/models/migration-apply-entry.model.js.map +1 -0
- package/dist/lib/esm/models/migration-apply-result.model.js +14 -0
- package/dist/lib/esm/models/migration-apply-result.model.js.map +1 -0
- package/dist/lib/esm/models/migration-plan-entry.model.js +7 -0
- package/dist/lib/esm/models/migration-plan-entry.model.js.map +1 -0
- package/dist/lib/esm/models/migration-plan.model.js +20 -0
- package/dist/lib/esm/models/migration-plan.model.js.map +1 -0
- package/dist/lib/esm/models/migration-record.model.js +8 -0
- package/dist/lib/esm/models/migration-record.model.js.map +1 -0
- package/dist/lib/esm/models/models.js +6 -0
- package/dist/lib/esm/models/models.js.map +1 -0
- package/dist/lib/esm/mysql-cli.configuration-keys.js +17 -0
- package/dist/lib/esm/mysql-cli.configuration-keys.js.map +1 -0
- package/dist/lib/esm/mysql-cli.module.js +46 -0
- package/dist/lib/esm/mysql-cli.module.js.map +1 -0
- package/dist/lib/esm/mysql-cli.module.keyname.js +2 -0
- package/dist/lib/esm/mysql-cli.module.keyname.js.map +1 -0
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/types/commands/commands.d.ts +8 -0
- package/dist/types/commands/mysql-migrate-create.command-options.d.ts +12 -0
- package/dist/types/commands/mysql-migrate-create.command.d.ts +32 -0
- package/dist/types/commands/mysql-migrate-status.command-options.d.ts +8 -0
- package/dist/types/commands/mysql-migrate-status.command.d.ts +25 -0
- package/dist/types/commands/mysql-migrate-verify.command-options.d.ts +8 -0
- package/dist/types/commands/mysql-migrate-verify.command.d.ts +23 -0
- package/dist/types/commands/mysql-migrate.command-options.d.ts +14 -0
- package/dist/types/commands/mysql-migrate.command.d.ts +23 -0
- package/dist/types/enums/enums.d.ts +1 -0
- package/dist/types/enums/migration-state.enum.d.ts +23 -0
- package/dist/types/errors/errors.d.ts +5 -0
- package/dist/types/errors/migration-checksum-mismatch.error.d.ts +14 -0
- package/dist/types/errors/migration-duplicate-name.error.d.ts +11 -0
- package/dist/types/errors/migration-execution.error.d.ts +12 -0
- package/dist/types/errors/migration-invalid-name.error.d.ts +10 -0
- package/dist/types/errors/migration-orphaned-record.error.d.ts +12 -0
- package/dist/types/interfaces/interfaces.d.ts +1 -0
- package/dist/types/interfaces/mysql-migration.interface.d.ts +40 -0
- package/dist/types/managers/managers.d.ts +5 -0
- package/dist/types/managers/mysql-migration-checksum.manager.d.ts +15 -0
- package/dist/types/managers/mysql-migration-record.manager.d.ts +22 -0
- package/dist/types/managers/mysql-migration-runner.manager.d.ts +16 -0
- package/dist/types/managers/mysql-migration-scaffold.manager.d.ts +40 -0
- package/dist/types/managers/mysql-migration.manager.d.ts +41 -0
- package/dist/types/models/migration-apply-entry.model.d.ts +9 -0
- package/dist/types/models/migration-apply-result.model.d.ts +14 -0
- package/dist/types/models/migration-plan-entry.model.d.ts +15 -0
- package/dist/types/models/migration-plan.model.d.ts +14 -0
- package/dist/types/models/migration-record.model.d.ts +12 -0
- package/dist/types/models/models.d.ts +5 -0
- package/dist/types/mysql-cli.configuration-keys.d.ts +29 -0
- package/dist/types/mysql-cli.module.d.ts +10 -0
- package/dist/types/mysql-cli.module.keyname.d.ts +1 -0
- package/package.json +75 -0
- package/readme.md +195 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var MysqlMigrationManager_1;
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.MysqlMigrationManager = void 0;
|
|
26
|
+
const tsyringe_1 = require("tsyringe");
|
|
27
|
+
const common_1 = require("@pristine-ts/common");
|
|
28
|
+
const migration_state_enum_1 = require("../enums/migration-state.enum");
|
|
29
|
+
const migration_plan_model_1 = require("../models/migration-plan.model");
|
|
30
|
+
const migration_plan_entry_model_1 = require("../models/migration-plan-entry.model");
|
|
31
|
+
const migration_apply_result_model_1 = require("../models/migration-apply-result.model");
|
|
32
|
+
const migration_apply_entry_model_1 = require("../models/migration-apply-entry.model");
|
|
33
|
+
const mysql_migration_checksum_manager_1 = require("./mysql-migration-checksum.manager");
|
|
34
|
+
const mysql_migration_record_manager_1 = require("./mysql-migration-record.manager");
|
|
35
|
+
const mysql_migration_runner_manager_1 = require("./mysql-migration-runner.manager");
|
|
36
|
+
const migration_invalid_name_error_1 = require("../errors/migration-invalid-name.error");
|
|
37
|
+
const migration_duplicate_name_error_1 = require("../errors/migration-duplicate-name.error");
|
|
38
|
+
const migration_checksum_mismatch_error_1 = require("../errors/migration-checksum-mismatch.error");
|
|
39
|
+
const migration_orphaned_record_error_1 = require("../errors/migration-orphaned-record.error");
|
|
40
|
+
const migration_execution_error_1 = require("../errors/migration-execution.error");
|
|
41
|
+
/**
|
|
42
|
+
* Public orchestrator for migration operations. The CLI commands and any deploy-time
|
|
43
|
+
* runner should depend on this class — never on `MysqlMigrationRunner` /
|
|
44
|
+
* `MysqlMigrationRecordManager` directly.
|
|
45
|
+
*
|
|
46
|
+
* Discovery is DI-based: every migration registered with
|
|
47
|
+
* `@tag("MysqlMigrationInterface") @injectable()` and reachable through the AppModule's
|
|
48
|
+
* `importServices` graph is injected here via `@injectAll`. There is no filesystem
|
|
49
|
+
* scan at apply time, which means this works identically in a bundled Lambda and on
|
|
50
|
+
* a dev laptop.
|
|
51
|
+
*/
|
|
52
|
+
let MysqlMigrationManager = MysqlMigrationManager_1 = class MysqlMigrationManager {
|
|
53
|
+
constructor(registeredMigrations, mysqlConfigProviders, recordManager, runner, checksumManager, logHandler) {
|
|
54
|
+
this.registeredMigrations = registeredMigrations;
|
|
55
|
+
this.mysqlConfigProviders = mysqlConfigProviders;
|
|
56
|
+
this.recordManager = recordManager;
|
|
57
|
+
this.runner = runner;
|
|
58
|
+
this.checksumManager = checksumManager;
|
|
59
|
+
this.logHandler = logHandler;
|
|
60
|
+
}
|
|
61
|
+
status(configUniqueKeyname) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const tableName = yield this.resolveTableName(configUniqueKeyname);
|
|
64
|
+
yield this.recordManager.ensureTable(configUniqueKeyname, tableName);
|
|
65
|
+
return this.buildPlan(configUniqueKeyname, tableName);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
verify(configUniqueKeyname) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const plan = yield this.status(configUniqueKeyname);
|
|
71
|
+
this.assertNoDrift(plan, configUniqueKeyname);
|
|
72
|
+
return plan;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
apply(configUniqueKeyname, options) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
const dryRun = (options === null || options === void 0 ? void 0 : options.dryRun) === true;
|
|
78
|
+
const force = (options === null || options === void 0 ? void 0 : options.force) === true;
|
|
79
|
+
const tableName = yield this.resolveTableName(configUniqueKeyname);
|
|
80
|
+
yield this.recordManager.ensureTable(configUniqueKeyname, tableName);
|
|
81
|
+
const plan = yield this.buildPlan(configUniqueKeyname, tableName);
|
|
82
|
+
const result = new migration_apply_result_model_1.MigrationApplyResult();
|
|
83
|
+
result.configUniqueKeyname = configUniqueKeyname;
|
|
84
|
+
result.dryRun = dryRun;
|
|
85
|
+
if (force === false) {
|
|
86
|
+
this.assertNoDrift(plan, configUniqueKeyname);
|
|
87
|
+
}
|
|
88
|
+
else if (plan.hasDrift()) {
|
|
89
|
+
this.logHandler.warning("MysqlMigrationManager: proceeding past drift due to --force.", {
|
|
90
|
+
highlights: {
|
|
91
|
+
configUniqueKeyname,
|
|
92
|
+
modified: plan.countByState(migration_state_enum_1.MigrationStateEnum.Modified),
|
|
93
|
+
orphaned: plan.countByState(migration_state_enum_1.MigrationStateEnum.Orphaned),
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const migrationsByName = new Map(this.selectMigrations(configUniqueKeyname).map((m) => [m.name, m]));
|
|
98
|
+
for (const entry of plan.entries) {
|
|
99
|
+
if (entry.state === migration_state_enum_1.MigrationStateEnum.Applied) {
|
|
100
|
+
result.skippedAlreadyApplied.push(entry.name);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (entry.state !== migration_state_enum_1.MigrationStateEnum.Pending) {
|
|
104
|
+
// Modified or Orphaned — only reachable here under --force. Skip; the user is
|
|
105
|
+
// explicitly accepting the drift, but we won't re-run modified migrations or
|
|
106
|
+
// touch orphaned records.
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const migration = migrationsByName.get(entry.name);
|
|
110
|
+
if (migration === undefined) {
|
|
111
|
+
// Defensive: a Pending entry by definition came from registeredMigrations.
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const sql = yield migration.up();
|
|
115
|
+
const checksum = this.checksumManager.compute(sql);
|
|
116
|
+
const applyEntry = new migration_apply_entry_model_1.MigrationApplyEntry();
|
|
117
|
+
applyEntry.name = entry.name;
|
|
118
|
+
try {
|
|
119
|
+
if (dryRun) {
|
|
120
|
+
applyEntry.executionTimeMs = 0;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
applyEntry.executionTimeMs = yield this.runner.execute(configUniqueKeyname, entry.name, sql);
|
|
124
|
+
yield this.recordManager.recordApplied(configUniqueKeyname, tableName, {
|
|
125
|
+
filename: entry.name,
|
|
126
|
+
checksum,
|
|
127
|
+
executionTimeMs: applyEntry.executionTimeMs,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
result.appliedMigrations.push(applyEntry);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
applyEntry.executionTimeMs = 0;
|
|
134
|
+
applyEntry.error = error instanceof migration_execution_error_1.MigrationExecutionError ? error.message : error.message;
|
|
135
|
+
result.failedMigration = applyEntry;
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
resolveConfig(configUniqueKeyname) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
const provider = this.mysqlConfigProviders.find((p) => p.supports(configUniqueKeyname));
|
|
145
|
+
if (provider === undefined) {
|
|
146
|
+
throw new Error(`No MysqlConfigProvider supports the unique keyname "${configUniqueKeyname}".`);
|
|
147
|
+
}
|
|
148
|
+
return provider.getMysqlConfig(configUniqueKeyname);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
resolveTableName(configUniqueKeyname) {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
+
var _a;
|
|
154
|
+
const config = yield this.resolveConfig(configUniqueKeyname);
|
|
155
|
+
return (_a = config.migrationsTableName) !== null && _a !== void 0 ? _a : MysqlMigrationManager_1.DefaultTableName;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
selectMigrations(configUniqueKeyname) {
|
|
159
|
+
const filtered = this.registeredMigrations.filter((migration) => {
|
|
160
|
+
if (migration.configUniqueKeynames === undefined) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
return migration.configUniqueKeynames.includes(configUniqueKeyname);
|
|
164
|
+
});
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
for (const migration of filtered) {
|
|
167
|
+
if (MysqlMigrationManager_1.ValidNamePattern.test(migration.name) === false) {
|
|
168
|
+
throw new migration_invalid_name_error_1.MigrationInvalidNameError(migration.name);
|
|
169
|
+
}
|
|
170
|
+
if (seen.has(migration.name)) {
|
|
171
|
+
throw new migration_duplicate_name_error_1.MigrationDuplicateNameError(migration.name, configUniqueKeyname);
|
|
172
|
+
}
|
|
173
|
+
seen.add(migration.name);
|
|
174
|
+
}
|
|
175
|
+
return [...filtered].sort((a, b) => a.name.localeCompare(b.name));
|
|
176
|
+
}
|
|
177
|
+
buildPlan(configUniqueKeyname, tableName) {
|
|
178
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
179
|
+
const plan = new migration_plan_model_1.MigrationPlan();
|
|
180
|
+
plan.configUniqueKeyname = configUniqueKeyname;
|
|
181
|
+
plan.tableName = tableName;
|
|
182
|
+
const selected = this.selectMigrations(configUniqueKeyname);
|
|
183
|
+
const records = yield this.recordManager.listApplied(configUniqueKeyname, tableName);
|
|
184
|
+
const recordsByName = new Map(records.map((r) => [r.filename, r]));
|
|
185
|
+
const seenNames = new Set();
|
|
186
|
+
for (const migration of selected) {
|
|
187
|
+
const sql = yield migration.up();
|
|
188
|
+
const diskChecksum = this.checksumManager.compute(sql);
|
|
189
|
+
const record = recordsByName.get(migration.name);
|
|
190
|
+
const entry = new migration_plan_entry_model_1.MigrationPlanEntry();
|
|
191
|
+
entry.name = migration.name;
|
|
192
|
+
entry.diskChecksum = diskChecksum;
|
|
193
|
+
if (record === undefined) {
|
|
194
|
+
entry.state = migration_state_enum_1.MigrationStateEnum.Pending;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
entry.appliedChecksum = record.checksum;
|
|
198
|
+
entry.appliedAt = record.appliedAt;
|
|
199
|
+
entry.state = record.checksum === diskChecksum ? migration_state_enum_1.MigrationStateEnum.Applied : migration_state_enum_1.MigrationStateEnum.Modified;
|
|
200
|
+
}
|
|
201
|
+
plan.entries.push(entry);
|
|
202
|
+
seenNames.add(migration.name);
|
|
203
|
+
}
|
|
204
|
+
for (const record of records) {
|
|
205
|
+
if (seenNames.has(record.filename)) {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const entry = new migration_plan_entry_model_1.MigrationPlanEntry();
|
|
209
|
+
entry.name = record.filename;
|
|
210
|
+
entry.state = migration_state_enum_1.MigrationStateEnum.Orphaned;
|
|
211
|
+
entry.appliedChecksum = record.checksum;
|
|
212
|
+
entry.appliedAt = record.appliedAt;
|
|
213
|
+
plan.entries.push(entry);
|
|
214
|
+
}
|
|
215
|
+
plan.entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
216
|
+
return plan;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
assertNoDrift(plan, configUniqueKeyname) {
|
|
220
|
+
var _a, _b;
|
|
221
|
+
for (const entry of plan.entries) {
|
|
222
|
+
if (entry.state === migration_state_enum_1.MigrationStateEnum.Modified) {
|
|
223
|
+
throw new migration_checksum_mismatch_error_1.MigrationChecksumMismatchError(entry.name, configUniqueKeyname, (_a = entry.diskChecksum) !== null && _a !== void 0 ? _a : "", (_b = entry.appliedChecksum) !== null && _b !== void 0 ? _b : "");
|
|
224
|
+
}
|
|
225
|
+
if (entry.state === migration_state_enum_1.MigrationStateEnum.Orphaned) {
|
|
226
|
+
throw new migration_orphaned_record_error_1.MigrationOrphanedRecordError(entry.name, configUniqueKeyname);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
exports.MysqlMigrationManager = MysqlMigrationManager;
|
|
232
|
+
MysqlMigrationManager.DefaultTableName = "pristine_migrations";
|
|
233
|
+
MysqlMigrationManager.ValidNamePattern = /^\d+-[a-z0-9-]+$/;
|
|
234
|
+
__decorate([
|
|
235
|
+
(0, common_1.traced)(),
|
|
236
|
+
__metadata("design:type", Function),
|
|
237
|
+
__metadata("design:paramtypes", [String]),
|
|
238
|
+
__metadata("design:returntype", Promise)
|
|
239
|
+
], MysqlMigrationManager.prototype, "status", null);
|
|
240
|
+
__decorate([
|
|
241
|
+
(0, common_1.traced)(),
|
|
242
|
+
__metadata("design:type", Function),
|
|
243
|
+
__metadata("design:paramtypes", [String]),
|
|
244
|
+
__metadata("design:returntype", Promise)
|
|
245
|
+
], MysqlMigrationManager.prototype, "verify", null);
|
|
246
|
+
__decorate([
|
|
247
|
+
(0, common_1.traced)(),
|
|
248
|
+
__metadata("design:type", Function),
|
|
249
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
250
|
+
__metadata("design:returntype", Promise)
|
|
251
|
+
], MysqlMigrationManager.prototype, "apply", null);
|
|
252
|
+
exports.MysqlMigrationManager = MysqlMigrationManager = MysqlMigrationManager_1 = __decorate([
|
|
253
|
+
(0, tsyringe_1.injectable)(),
|
|
254
|
+
__param(0, (0, tsyringe_1.injectAll)("MysqlMigrationInterface")),
|
|
255
|
+
__param(1, (0, tsyringe_1.injectAll)("MysqlConfigProviderInterface")),
|
|
256
|
+
__param(5, (0, tsyringe_1.inject)("LogHandlerInterface")),
|
|
257
|
+
__metadata("design:paramtypes", [Array, Array, mysql_migration_record_manager_1.MysqlMigrationRecordManager,
|
|
258
|
+
mysql_migration_runner_manager_1.MysqlMigrationRunner,
|
|
259
|
+
mysql_migration_checksum_manager_1.MysqlMigrationChecksumManager, Object])
|
|
260
|
+
], MysqlMigrationManager);
|
|
261
|
+
//# sourceMappingURL=mysql-migration.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migration.manager.js","sourceRoot":"","sources":["../../../../src/managers/mysql-migration.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuD;AAEvD,gDAA2C;AAG3C,wEAAiE;AACjE,yEAA6D;AAC7D,qFAAwE;AACxE,yFAA4E;AAC5E,uFAA0E;AAE1E,yFAAiF;AACjF,qFAA6E;AAC7E,qFAAsE;AACtE,yFAAiF;AACjF,6FAAqF;AACrF,mGAA2F;AAC3F,+FAAuF;AACvF,mFAA4E;AAE5E;;;;;;;;;;GAUG;AAEI,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAIhC,YACyD,oBAA+C,EAC1C,oBAAoD,EAC/F,aAA0C,EAC1C,MAA4B,EAC5B,eAA8C,EACf,UAA+B;QALxB,yBAAoB,GAApB,oBAAoB,CAA2B;QAC1C,yBAAoB,GAApB,oBAAoB,CAAgC;QAC/F,kBAAa,GAAb,aAAa,CAA6B;QAC1C,WAAM,GAAN,MAAM,CAAsB;QAC5B,oBAAe,GAAf,eAAe,CAA+B;QACf,eAAU,GAAV,UAAU,CAAqB;IAEjF,CAAC;IAGY,MAAM,CAAC,mBAA2B;;YAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;KAAA;IAGY,MAAM,CAAC,mBAA2B;;YAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAGY,KAAK,CAAC,mBAA2B,EAAE,OAA+C;;YAC7F,MAAM,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,IAAI,CAAC;YACxC,MAAM,KAAK,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAK,IAAI,CAAC;YAEtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YAErE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG,IAAI,mDAAoB,EAAE,CAAC;YAC1C,MAAM,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YACjD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YAEvB,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,8DAA8D,EAAE;oBACtF,UAAU,EAAE;wBACV,mBAAmB;wBACnB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,yCAAkB,CAAC,QAAQ,CAAC;wBACxD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,yCAAkB,CAAC,QAAQ,CAAC;qBACzD;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAErG,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,OAAO,EAAE,CAAC;oBAC/C,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9C,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,OAAO,EAAE,CAAC;oBAC/C,8EAA8E;oBAC9E,6EAA6E;oBAC7E,0BAA0B;oBAC1B,SAAS;gBACX,CAAC;gBAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,2EAA2E;oBAC3E,SAAS;gBACX,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnD,MAAM,UAAU,GAAG,IAAI,iDAAmB,EAAE,CAAC;gBAC7C,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAE7B,IAAI,CAAC;oBACH,IAAI,MAAM,EAAE,CAAC;wBACX,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBAC7F,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE;4BACrE,QAAQ,EAAE,KAAK,CAAC,IAAI;4BACpB,QAAQ;4BACR,eAAe,EAAE,UAAU,CAAC,eAAe;yBAC5C,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,KAAK,GAAG,KAAK,YAAY,mDAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,KAAe,CAAC,OAAO,CAAC;oBACvG,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC;oBACpC,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEa,aAAa,CAAC,mBAA2B;;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,uDAAuD,mBAAmB,IAAI,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QACtD,CAAC;KAAA;IAEa,gBAAgB,CAAC,mBAA2B;;;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YAC7D,OAAO,MAAA,MAAM,CAAC,mBAAmB,mCAAI,uBAAqB,CAAC,gBAAgB,CAAC;QAC9E,CAAC;KAAA;IAEO,gBAAgB,CAAC,mBAA2B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;YAC9D,IAAI,SAAS,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,SAAS,CAAC,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;YACjC,IAAI,uBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC1E,MAAM,IAAI,wDAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,4DAA2B,CAAC,SAAS,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAEa,SAAS,CAAC,mBAA2B,EAAE,SAAiB;;YACpE,MAAM,IAAI,GAAG,IAAI,oCAAa,EAAE,CAAC;YACjC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YACrF,MAAM,aAAa,GAAG,IAAI,GAAG,CAA0B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YAEpC,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAEjD,MAAM,KAAK,GAAG,IAAI,+CAAkB,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;gBAC5B,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;gBAElC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,KAAK,CAAC,KAAK,GAAG,yCAAkB,CAAC,OAAO,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACxC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBACnC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,yCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAkB,CAAC,QAAQ,CAAC;gBAC5G,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,+CAAkB,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC7B,KAAK,CAAC,KAAK,GAAG,yCAAkB,CAAC,QAAQ,CAAC;gBAC1C,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACxC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEO,aAAa,CAAC,IAAmB,EAAE,mBAA2B;;QACpE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,IAAI,kEAA8B,CACtC,KAAK,CAAC,IAAI,EACV,mBAAmB,EACnB,MAAA,KAAK,CAAC,YAAY,mCAAI,EAAE,EACxB,MAAA,KAAK,CAAC,eAAe,mCAAI,EAAE,CAC5B,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,IAAI,8DAA4B,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;;AAxMU,sDAAqB;AACR,sCAAgB,GAAG,qBAAqB,AAAxB,CAAyB;AACzC,sCAAgB,GAAG,kBAAkB,AAArB,CAAsB;AAajD;IADZ,IAAA,eAAM,GAAE;;;;mDAKR;AAGY;IADZ,IAAA,eAAM,GAAE;;;;mDAKR;AAGY;IADZ,IAAA,eAAM,GAAE;;;;kDAyER;gCArGU,qBAAqB;IADjC,IAAA,qBAAU,GAAE;IAMR,WAAA,IAAA,oBAAS,EAAC,yBAAyB,CAAC,CAAA;IACpC,WAAA,IAAA,oBAAS,EAAC,8BAA8B,CAAC,CAAA;IAIzC,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;mDAHE,4DAA2B;QAClC,qDAAoB;QACX,gEAA6B;GATtD,qBAAqB,CAyMjC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MigrationApplyEntry = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* One row of a `MigrationApplyResult`: the outcome of applying a single migration.
|
|
6
|
+
* `error` is populated only when the migration failed.
|
|
7
|
+
*/
|
|
8
|
+
class MigrationApplyEntry {
|
|
9
|
+
}
|
|
10
|
+
exports.MigrationApplyEntry = MigrationApplyEntry;
|
|
11
|
+
//# sourceMappingURL=migration-apply-entry.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-apply-entry.model.js","sourceRoot":"","sources":["../../../../src/models/migration-apply-entry.model.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,mBAAmB;CAI/B;AAJD,kDAIC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MigrationApplyResult = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Output of `MysqlMigrationManager.apply`. `appliedMigrations` is the in-order list
|
|
6
|
+
* of migrations that ran successfully. `skippedAlreadyApplied` is the list of
|
|
7
|
+
* names that were already in the database (no-op). `failedMigration` is set when
|
|
8
|
+
* the run halted on a failure — subsequent pending migrations were not attempted.
|
|
9
|
+
*/
|
|
10
|
+
class MigrationApplyResult {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.dryRun = false;
|
|
13
|
+
this.appliedMigrations = [];
|
|
14
|
+
this.skippedAlreadyApplied = [];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.MigrationApplyResult = MigrationApplyResult;
|
|
18
|
+
//# sourceMappingURL=migration-apply-result.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-apply-result.model.js","sourceRoot":"","sources":["../../../../src/models/migration-apply-result.model.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,MAAa,oBAAoB;IAAjC;QAES,WAAM,GAAY,KAAK,CAAC;QACxB,sBAAiB,GAA0B,EAAE,CAAC;QAC9C,0BAAqB,GAAa,EAAE,CAAC;IAE9C,CAAC;CAAA;AAND,oDAMC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MigrationPlanEntry = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* One row of a `MigrationPlan`: the union view of a single migration as it appears
|
|
6
|
+
* to both the DI registry and the bookkeeping table. State combines the two views.
|
|
7
|
+
*/
|
|
8
|
+
class MigrationPlanEntry {
|
|
9
|
+
}
|
|
10
|
+
exports.MigrationPlanEntry = MigrationPlanEntry;
|
|
11
|
+
//# sourceMappingURL=migration-plan-entry.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-plan-entry.model.js","sourceRoot":"","sources":["../../../../src/models/migration-plan-entry.model.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,kBAAkB;CAY9B;AAZD,gDAYC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MigrationPlan = void 0;
|
|
4
|
+
const migration_state_enum_1 = require("../enums/migration-state.enum");
|
|
5
|
+
/**
|
|
6
|
+
* Output of `MysqlMigrationManager.status` (and `verify` when no drift exists). The
|
|
7
|
+
* `entries` array is sorted lexicographically by `name`, matching apply order.
|
|
8
|
+
*/
|
|
9
|
+
class MigrationPlan {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.entries = [];
|
|
12
|
+
}
|
|
13
|
+
hasPending() {
|
|
14
|
+
return this.entries.some((entry) => entry.state === migration_state_enum_1.MigrationStateEnum.Pending);
|
|
15
|
+
}
|
|
16
|
+
hasDrift() {
|
|
17
|
+
return this.entries.some((entry) => entry.state === migration_state_enum_1.MigrationStateEnum.Modified || entry.state === migration_state_enum_1.MigrationStateEnum.Orphaned);
|
|
18
|
+
}
|
|
19
|
+
countByState(state) {
|
|
20
|
+
return this.entries.filter((entry) => entry.state === state).length;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.MigrationPlan = MigrationPlan;
|
|
24
|
+
//# sourceMappingURL=migration-plan.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-plan.model.js","sourceRoot":"","sources":["../../../../src/models/migration-plan.model.ts"],"names":[],"mappings":";;;AAAA,wEAAiE;AAGjE;;;GAGG;AACH,MAAa,aAAa;IAA1B;QAGS,YAAO,GAAyB,EAAE,CAAC;IAe5C,CAAC;IAbQ,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,OAAO,CAAC,CAAC;IAClF,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,yCAAkB,CAAC,QAAQ,CACtG,CAAC;IACJ,CAAC;IAEM,YAAY,CAAC,KAAyB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;IACtE,CAAC;CACF;AAlBD,sCAkBC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MigrationRecord = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* One row of the `pristine_migrations` bookkeeping table. Mirrors the schema exactly
|
|
6
|
+
* (snake_case in the database; the manager handles translation when reading rows
|
|
7
|
+
* back via `MysqlClient.executeSql`).
|
|
8
|
+
*/
|
|
9
|
+
class MigrationRecord {
|
|
10
|
+
}
|
|
11
|
+
exports.MigrationRecord = MigrationRecord;
|
|
12
|
+
//# sourceMappingURL=migration-record.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-record.model.js","sourceRoot":"","sources":["../../../../src/models/migration-record.model.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,eAAe;CAM3B;AAND,0CAMC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./migration-apply-entry.model"), exports);
|
|
18
|
+
__exportStar(require("./migration-apply-result.model"), exports);
|
|
19
|
+
__exportStar(require("./migration-plan-entry.model"), exports);
|
|
20
|
+
__exportStar(require("./migration-plan.model"), exports);
|
|
21
|
+
__exportStar(require("./migration-record.model"), exports);
|
|
22
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/models/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,iEAA+C;AAC/C,+DAA6C;AAC7C,yDAAuC;AACvC,2DAAyC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MysqlCliConfigurationKeys = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Typed configuration keys for `@pristine-ts/mysql-cli`. Use these constants with
|
|
6
|
+
* `@injectConfig` for autocomplete + rename safety, instead of typing the parameter
|
|
7
|
+
* name as a string.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import {injectConfig} from "@pristine-ts/common";
|
|
11
|
+
* import {MysqlCliConfigurationKeys} from "@pristine-ts/mysql-cli";
|
|
12
|
+
*
|
|
13
|
+
* constructor(@injectConfig(MysqlCliConfigurationKeys.ScaffoldPath) path: string) {}
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
exports.MysqlCliConfigurationKeys = {
|
|
17
|
+
ScaffoldPath: "pristine.mysql-cli.scaffold.path",
|
|
18
|
+
ScaffoldBarrelPath: "pristine.mysql-cli.scaffold.barrelPath",
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=mysql-cli.configuration-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-cli.configuration-keys.js","sourceRoot":"","sources":["../../../src/mysql-cli.configuration-keys.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACU,QAAA,yBAAyB,GAAG;IACvC,YAAY,EAAE,kCAAkC;IAChD,kBAAkB,EAAE,wCAAwC;CACpD,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MysqlCliModule = void 0;
|
|
18
|
+
const common_1 = require("@pristine-ts/common");
|
|
19
|
+
const cli_1 = require("@pristine-ts/cli");
|
|
20
|
+
const core_1 = require("@pristine-ts/core");
|
|
21
|
+
const file_1 = require("@pristine-ts/file");
|
|
22
|
+
const logging_1 = require("@pristine-ts/logging");
|
|
23
|
+
const mysql_1 = require("@pristine-ts/mysql");
|
|
24
|
+
const mysql_cli_module_keyname_1 = require("./mysql-cli.module.keyname");
|
|
25
|
+
__exportStar(require("./commands/commands"), exports);
|
|
26
|
+
__exportStar(require("./enums/enums"), exports);
|
|
27
|
+
__exportStar(require("./errors/errors"), exports);
|
|
28
|
+
__exportStar(require("./interfaces/interfaces"), exports);
|
|
29
|
+
__exportStar(require("./managers/managers"), exports);
|
|
30
|
+
__exportStar(require("./models/models"), exports);
|
|
31
|
+
__exportStar(require("./mysql-cli.configuration-keys"), exports);
|
|
32
|
+
__exportStar(require("./mysql-cli.module.keyname"), exports);
|
|
33
|
+
exports.MysqlCliModule = {
|
|
34
|
+
keyname: mysql_cli_module_keyname_1.MysqlCliModuleKeyname,
|
|
35
|
+
importModules: [
|
|
36
|
+
common_1.CommonModule,
|
|
37
|
+
core_1.CoreModule,
|
|
38
|
+
cli_1.CliModule,
|
|
39
|
+
file_1.FileModule,
|
|
40
|
+
logging_1.LoggingModule,
|
|
41
|
+
mysql_1.MysqlModule,
|
|
42
|
+
],
|
|
43
|
+
configurationDefinitions: [
|
|
44
|
+
{
|
|
45
|
+
// The directory `mysql:create` writes new migration files into. Resolved against
|
|
46
|
+
// `process.cwd()` at command time. Override per-project in pristine.config.ts.
|
|
47
|
+
parameterName: mysql_cli_module_keyname_1.MysqlCliModuleKeyname + ".scaffold.path",
|
|
48
|
+
isRequired: false,
|
|
49
|
+
defaultValue: "src/sql-migrations",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
// When set to a non-empty path, `mysql:create` auto-edits the file at this
|
|
53
|
+
// path to splice in the new import and class reference between marker
|
|
54
|
+
// comments. Empty string (the default) means "not configured" — the command
|
|
55
|
+
// prints manual registration instructions instead. Single field = single
|
|
56
|
+
// signal — no separate enable flag.
|
|
57
|
+
parameterName: mysql_cli_module_keyname_1.MysqlCliModuleKeyname + ".scaffold.barrelPath",
|
|
58
|
+
isRequired: false,
|
|
59
|
+
defaultValue: "",
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=mysql-cli.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-cli.module.js","sourceRoot":"","sources":["../../../src/mysql-cli.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAAkE;AAClE,0CAA2C;AAC3C,4CAA6C;AAC7C,4CAA6C;AAC7C,kDAAmD;AACnD,8CAA+C;AAC/C,yEAAiE;AAEjE,sDAAoC;AACpC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,sDAAoC;AACpC,kDAAgC;AAChC,iEAA+C;AAC/C,6DAA2C;AAE9B,QAAA,cAAc,GAAoB;IAC7C,OAAO,EAAE,gDAAqB;IAC9B,aAAa,EAAE;QACb,qBAAY;QACZ,iBAAU;QACV,eAAS;QACT,iBAAU;QACV,uBAAa;QACb,mBAAW;KACZ;IACD,wBAAwB,EAAE;QACxB;YACE,iFAAiF;YACjF,+EAA+E;YAC/E,aAAa,EAAE,gDAAqB,GAAG,gBAAgB;YACvD,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,oBAAoB;SACnC;QACD;YACE,2EAA2E;YAC3E,sEAAsE;YACtE,4EAA4E;YAC5E,yEAAyE;YACzE,oCAAoC;YACpC,aAAa,EAAE,gDAAqB,GAAG,sBAAsB;YAC7D,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,EAAE;SACjB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-cli.module.keyname.js","sourceRoot":"","sources":["../../../src/mysql-cli.module.keyname.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAW,oBAAoB,CAAC"}
|