@veloxts/cli 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts +17 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +219 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/migrate.d.ts +8 -3
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +17 -123
- package/dist/commands/migrate.js.map +1 -1
- package/dist/generators/base.d.ts +76 -0
- package/dist/generators/base.d.ts.map +1 -0
- package/dist/generators/base.js +271 -0
- package/dist/generators/base.js.map +1 -0
- package/dist/generators/generators/index.d.ts +17 -0
- package/dist/generators/generators/index.d.ts.map +1 -0
- package/dist/generators/generators/index.js +43 -0
- package/dist/generators/generators/index.js.map +1 -0
- package/dist/generators/generators/migration.d.ts +43 -0
- package/dist/generators/generators/migration.d.ts.map +1 -0
- package/dist/generators/generators/migration.js +121 -0
- package/dist/generators/generators/migration.js.map +1 -0
- package/dist/generators/generators/model.d.ts +38 -0
- package/dist/generators/generators/model.d.ts.map +1 -0
- package/dist/generators/generators/model.js +108 -0
- package/dist/generators/generators/model.js.map +1 -0
- package/dist/generators/generators/procedure.d.ts +37 -0
- package/dist/generators/generators/procedure.d.ts.map +1 -0
- package/dist/generators/generators/procedure.js +99 -0
- package/dist/generators/generators/procedure.js.map +1 -0
- package/dist/generators/generators/resource.d.ts +29 -0
- package/dist/generators/generators/resource.d.ts.map +1 -0
- package/dist/generators/generators/resource.js +124 -0
- package/dist/generators/generators/resource.js.map +1 -0
- package/dist/generators/generators/schema.d.ts +28 -0
- package/dist/generators/generators/schema.d.ts.map +1 -0
- package/dist/generators/generators/schema.js +83 -0
- package/dist/generators/generators/schema.js.map +1 -0
- package/dist/generators/generators/test.d.ts +28 -0
- package/dist/generators/generators/test.d.ts.map +1 -0
- package/dist/generators/generators/test.js +96 -0
- package/dist/generators/generators/test.js.map +1 -0
- package/dist/generators/index.d.ts +16 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +16 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/registry.d.ts +97 -0
- package/dist/generators/registry.d.ts.map +1 -0
- package/dist/generators/registry.js +253 -0
- package/dist/generators/registry.js.map +1 -0
- package/dist/generators/templates/migration.d.ts +23 -0
- package/dist/generators/templates/migration.d.ts.map +1 -0
- package/dist/generators/templates/migration.js +389 -0
- package/dist/generators/templates/migration.js.map +1 -0
- package/dist/generators/templates/model.d.ts +37 -0
- package/dist/generators/templates/model.d.ts.map +1 -0
- package/dist/generators/templates/model.js +374 -0
- package/dist/generators/templates/model.js.map +1 -0
- package/dist/generators/templates/procedure.d.ts +25 -0
- package/dist/generators/templates/procedure.d.ts.map +1 -0
- package/dist/generators/templates/procedure.js +274 -0
- package/dist/generators/templates/procedure.js.map +1 -0
- package/dist/generators/templates/resource.d.ts +34 -0
- package/dist/generators/templates/resource.d.ts.map +1 -0
- package/dist/generators/templates/resource.js +550 -0
- package/dist/generators/templates/resource.js.map +1 -0
- package/dist/generators/templates/schema.d.ts +33 -0
- package/dist/generators/templates/schema.d.ts.map +1 -0
- package/dist/generators/templates/schema.js +248 -0
- package/dist/generators/templates/schema.js.map +1 -0
- package/dist/generators/templates/test.d.ts +31 -0
- package/dist/generators/templates/test.d.ts.map +1 -0
- package/dist/generators/templates/test.js +882 -0
- package/dist/generators/templates/test.js.map +1 -0
- package/dist/generators/types.d.ts +211 -0
- package/dist/generators/types.d.ts.map +1 -0
- package/dist/generators/types.js +54 -0
- package/dist/generators/types.js.map +1 -0
- package/dist/generators/utils/filesystem.d.ts +68 -0
- package/dist/generators/utils/filesystem.d.ts.map +1 -0
- package/dist/generators/utils/filesystem.js +217 -0
- package/dist/generators/utils/filesystem.js.map +1 -0
- package/dist/generators/utils/naming.d.ts +122 -0
- package/dist/generators/utils/naming.d.ts.map +1 -0
- package/dist/generators/utils/naming.js +198 -0
- package/dist/generators/utils/naming.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations/commands/fresh.d.ts +11 -0
- package/dist/migrations/commands/fresh.d.ts.map +1 -0
- package/dist/migrations/commands/fresh.js +164 -0
- package/dist/migrations/commands/fresh.js.map +1 -0
- package/dist/migrations/commands/index.d.ts +11 -0
- package/dist/migrations/commands/index.d.ts.map +1 -0
- package/dist/migrations/commands/index.js +11 -0
- package/dist/migrations/commands/index.js.map +1 -0
- package/dist/migrations/commands/reset.d.ts +11 -0
- package/dist/migrations/commands/reset.d.ts.map +1 -0
- package/dist/migrations/commands/reset.js +258 -0
- package/dist/migrations/commands/reset.js.map +1 -0
- package/dist/migrations/commands/rollback.d.ts +11 -0
- package/dist/migrations/commands/rollback.d.ts.map +1 -0
- package/dist/migrations/commands/rollback.js +241 -0
- package/dist/migrations/commands/rollback.js.map +1 -0
- package/dist/migrations/commands/run.d.ts +11 -0
- package/dist/migrations/commands/run.d.ts.map +1 -0
- package/dist/migrations/commands/run.js +183 -0
- package/dist/migrations/commands/run.js.map +1 -0
- package/dist/migrations/commands/status.d.ts +11 -0
- package/dist/migrations/commands/status.d.ts.map +1 -0
- package/dist/migrations/commands/status.js +154 -0
- package/dist/migrations/commands/status.js.map +1 -0
- package/dist/migrations/errors.d.ts +74 -0
- package/dist/migrations/errors.d.ts.map +1 -0
- package/dist/migrations/errors.js +155 -0
- package/dist/migrations/errors.js.map +1 -0
- package/dist/migrations/index.d.ts +13 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +17 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/loader.d.ts +44 -0
- package/dist/migrations/loader.d.ts.map +1 -0
- package/dist/migrations/loader.js +181 -0
- package/dist/migrations/loader.js.map +1 -0
- package/dist/migrations/prisma-wrapper.d.ts +60 -0
- package/dist/migrations/prisma-wrapper.d.ts.map +1 -0
- package/dist/migrations/prisma-wrapper.js +184 -0
- package/dist/migrations/prisma-wrapper.js.map +1 -0
- package/dist/migrations/rollback-runner.d.ts +40 -0
- package/dist/migrations/rollback-runner.d.ts.map +1 -0
- package/dist/migrations/rollback-runner.js +191 -0
- package/dist/migrations/rollback-runner.js.map +1 -0
- package/dist/migrations/types.d.ts +214 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations/types.js +19 -0
- package/dist/migrations/types.js.map +1 -0
- package/package.json +29 -8
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* migrate:reset Command
|
|
3
|
+
*
|
|
4
|
+
* Rollback all migrations then re-run them using our down.sql files.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import * as p from '@clack/prompts';
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
import { error, info, success, warning } from '../../utils/output.js';
|
|
11
|
+
import { fileExists } from '../../utils/paths.js';
|
|
12
|
+
import { MigrationError } from '../errors.js';
|
|
13
|
+
import { loadMigrations, migrationsDirExists } from '../loader.js';
|
|
14
|
+
import { parseMigrateStatusOutput, prismaDbSeed, prismaMigrateDeploy, prismaMigrateStatus, } from '../prisma-wrapper.js';
|
|
15
|
+
import { rollbackAll } from '../rollback-runner.js';
|
|
16
|
+
import { createPrismaClient, } from '../types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Create the migrate:reset command
|
|
19
|
+
*/
|
|
20
|
+
export function createMigrateResetCommand() {
|
|
21
|
+
return new Command('reset')
|
|
22
|
+
.description('Rollback all migrations then re-run')
|
|
23
|
+
.option('--seed', 'Run seeders after migrations')
|
|
24
|
+
.option('--force', 'Skip confirmation prompt')
|
|
25
|
+
.option('--json', 'Output as JSON')
|
|
26
|
+
.action(async (options) => {
|
|
27
|
+
await runMigrateReset(options);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run migrate:reset
|
|
32
|
+
*/
|
|
33
|
+
async function runMigrateReset(options) {
|
|
34
|
+
const cwd = process.cwd();
|
|
35
|
+
const s = p.spinner();
|
|
36
|
+
let prisma = null;
|
|
37
|
+
try {
|
|
38
|
+
// Check if Prisma schema exists
|
|
39
|
+
const schemaPath = path.join(cwd, 'prisma', 'schema.prisma');
|
|
40
|
+
if (!fileExists(schemaPath)) {
|
|
41
|
+
if (options.json) {
|
|
42
|
+
console.log(JSON.stringify({ error: 'Prisma schema not found' }));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
error('Prisma schema not found.');
|
|
46
|
+
console.log(` ${pc.dim('Expected: prisma/schema.prisma')}`);
|
|
47
|
+
}
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
// Check migrations directory
|
|
51
|
+
const hasDir = await migrationsDirExists(cwd);
|
|
52
|
+
if (!hasDir) {
|
|
53
|
+
if (options.json) {
|
|
54
|
+
console.log(JSON.stringify({ error: 'No migrations found' }));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
info('No migrations to reset.');
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Load migration files
|
|
62
|
+
const files = await loadMigrations(cwd);
|
|
63
|
+
// Get applied migrations from Prisma status
|
|
64
|
+
const statusResult = await prismaMigrateStatus(cwd);
|
|
65
|
+
const parsed = parseMigrateStatusOutput(statusResult.output);
|
|
66
|
+
// Find applied migrations with rollback capability
|
|
67
|
+
const appliedFiles = [];
|
|
68
|
+
for (const appliedName of [...parsed.applied].reverse()) {
|
|
69
|
+
const file = files.find((f) => f.name === appliedName);
|
|
70
|
+
if (file) {
|
|
71
|
+
appliedFiles.push(file);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Check if all applied migrations have rollback support
|
|
75
|
+
const withoutRollback = appliedFiles.filter((m) => !m.hasRollback);
|
|
76
|
+
if (withoutRollback.length > 0) {
|
|
77
|
+
if (options.json) {
|
|
78
|
+
console.log(JSON.stringify({
|
|
79
|
+
error: 'Cannot reset - missing rollback files',
|
|
80
|
+
migrations: withoutRollback.map((m) => m.name),
|
|
81
|
+
suggestion: 'Use "velox migrate:fresh" to drop all tables instead',
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
error('Cannot reset - missing down.sql files:');
|
|
86
|
+
for (const m of withoutRollback) {
|
|
87
|
+
console.log(` ${pc.dim('→')} ${m.name}`);
|
|
88
|
+
}
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log(` ${pc.dim('Use: velox migrate:fresh to drop all tables instead')}`);
|
|
91
|
+
}
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
// Show warning
|
|
95
|
+
if (!options.json) {
|
|
96
|
+
console.log('');
|
|
97
|
+
warning(`This will rollback ${appliedFiles.length} migration${appliedFiles.length > 1 ? 's' : ''} then re-run them.`);
|
|
98
|
+
console.log('');
|
|
99
|
+
}
|
|
100
|
+
// Confirm unless --force
|
|
101
|
+
if (!options.force && !options.json) {
|
|
102
|
+
const confirm = await p.confirm({
|
|
103
|
+
message: 'Are you sure you want to reset all migrations?',
|
|
104
|
+
});
|
|
105
|
+
if (p.isCancel(confirm) || !confirm) {
|
|
106
|
+
console.log('');
|
|
107
|
+
info('Operation cancelled.');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Initialize Prisma client dynamically (avoids compile-time dependency on generated types)
|
|
112
|
+
prisma = await createPrismaClient();
|
|
113
|
+
// Step 1: Rollback all migrations
|
|
114
|
+
if (!options.json) {
|
|
115
|
+
console.log('');
|
|
116
|
+
s.start(`Rolling back ${appliedFiles.length} migration${appliedFiles.length > 1 ? 's' : ''}...`);
|
|
117
|
+
}
|
|
118
|
+
const rollbackResult = await rollbackAll(prisma, appliedFiles);
|
|
119
|
+
if (rollbackResult.failed > 0) {
|
|
120
|
+
if (!options.json) {
|
|
121
|
+
s.stop('Rollback failed');
|
|
122
|
+
}
|
|
123
|
+
if (options.json) {
|
|
124
|
+
console.log(JSON.stringify({
|
|
125
|
+
success: false,
|
|
126
|
+
phase: 'rollback',
|
|
127
|
+
error: 'Rollback failed',
|
|
128
|
+
results: rollbackResult.results,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log('');
|
|
133
|
+
error('Rollback failed. Database may be in an inconsistent state.');
|
|
134
|
+
for (const r of rollbackResult.results.filter((r) => !r.success)) {
|
|
135
|
+
console.log(` ${pc.red('✗')} ${r.migration}: ${r.error}`);
|
|
136
|
+
}
|
|
137
|
+
console.log('');
|
|
138
|
+
}
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
if (!options.json) {
|
|
142
|
+
s.stop(`Rolled back ${rollbackResult.successful} migration${rollbackResult.successful > 1 ? 's' : ''}`);
|
|
143
|
+
}
|
|
144
|
+
// Step 2: Re-run migrations
|
|
145
|
+
if (!options.json) {
|
|
146
|
+
console.log('');
|
|
147
|
+
s.start('Re-running all migrations...');
|
|
148
|
+
}
|
|
149
|
+
// Disconnect prisma before running migrate deploy (it opens its own connection)
|
|
150
|
+
await prisma.$disconnect();
|
|
151
|
+
prisma = null;
|
|
152
|
+
const deployResult = await prismaMigrateDeploy(cwd);
|
|
153
|
+
if (!deployResult.success) {
|
|
154
|
+
if (!options.json) {
|
|
155
|
+
s.stop('Migration failed');
|
|
156
|
+
}
|
|
157
|
+
if (options.json) {
|
|
158
|
+
console.log(JSON.stringify({
|
|
159
|
+
success: false,
|
|
160
|
+
phase: 'deploy',
|
|
161
|
+
error: deployResult.error,
|
|
162
|
+
rollbackSuccessful: rollbackResult.successful,
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.log('');
|
|
167
|
+
error('Migration failed after rollback. Database may be in an inconsistent state.');
|
|
168
|
+
if (deployResult.error) {
|
|
169
|
+
console.log(` ${pc.dim(deployResult.error)}`);
|
|
170
|
+
}
|
|
171
|
+
console.log('');
|
|
172
|
+
}
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
if (!options.json) {
|
|
176
|
+
s.stop('Migrations applied');
|
|
177
|
+
}
|
|
178
|
+
// Step 3: Run seeders if requested
|
|
179
|
+
if (options.seed) {
|
|
180
|
+
if (!options.json) {
|
|
181
|
+
console.log('');
|
|
182
|
+
s.start('Running seeders...');
|
|
183
|
+
}
|
|
184
|
+
const seedResult = await prismaDbSeed(cwd);
|
|
185
|
+
if (!seedResult.success) {
|
|
186
|
+
if (!options.json) {
|
|
187
|
+
s.stop('Seeding failed');
|
|
188
|
+
}
|
|
189
|
+
if (options.json) {
|
|
190
|
+
console.log(JSON.stringify({
|
|
191
|
+
success: true,
|
|
192
|
+
message: 'Reset complete but seeding failed',
|
|
193
|
+
seedError: seedResult.error,
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log('');
|
|
198
|
+
warning('Reset complete but seeding failed.');
|
|
199
|
+
if (seedResult.error) {
|
|
200
|
+
console.log(` ${pc.dim(seedResult.error)}`);
|
|
201
|
+
}
|
|
202
|
+
console.log('');
|
|
203
|
+
}
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (!options.json) {
|
|
207
|
+
s.stop('Seeding complete');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Success output
|
|
211
|
+
if (options.json) {
|
|
212
|
+
console.log(JSON.stringify({
|
|
213
|
+
success: true,
|
|
214
|
+
message: options.seed
|
|
215
|
+
? 'Database reset and seeded successfully'
|
|
216
|
+
: 'Database reset successfully',
|
|
217
|
+
rollbackCount: rollbackResult.successful,
|
|
218
|
+
}));
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
console.log('');
|
|
222
|
+
success(options.seed ? 'Database reset and seeded successfully!' : 'Database reset successfully!');
|
|
223
|
+
console.log('');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
s.stop('Operation failed');
|
|
228
|
+
if (options.json) {
|
|
229
|
+
if (err instanceof MigrationError) {
|
|
230
|
+
console.log(JSON.stringify({ error: err.toJSON() }));
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.log(JSON.stringify({ error: err instanceof Error ? err.message : String(err) }));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.log('');
|
|
238
|
+
if (err instanceof MigrationError) {
|
|
239
|
+
error(err.message);
|
|
240
|
+
if (err.fix) {
|
|
241
|
+
console.log(` ${pc.dim('Fix:')} ${err.fix}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
error(err instanceof Error ? err.message : String(err));
|
|
246
|
+
}
|
|
247
|
+
console.log('');
|
|
248
|
+
}
|
|
249
|
+
process.exit(1);
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
// Disconnect Prisma client if still connected
|
|
253
|
+
if (prisma) {
|
|
254
|
+
await prisma.$disconnect();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=reset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/migrations/commands/reset.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,kBAAkB,GAInB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;SAChD,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;QAC7C,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,OAA4B;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAEtB,IAAI,MAAM,GAA4B,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAClC,CAAC;YACD,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAExC,4CAA4C;QAC5C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,wBAAwB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE7D,mDAAmD;QACnD,MAAM,YAAY,GAAoB,EAAE,CAAC;QACzC,KAAK,MAAM,WAAW,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE,CAAC;gBACT,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,uCAAuC;oBAC9C,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9C,UAAU,EAAE,sDAAsD;iBACnE,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAChD,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,qDAAqD,CAAC,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,eAAe;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CACL,sBAAsB,YAAY,CAAC,MAAM,aAAa,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAC7G,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAC9B,OAAO,EAAE,gDAAgD;aAC1D,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QAED,2FAA2F;QAC3F,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAEpC,kCAAkC;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC,KAAK,CACL,gBAAgB,YAAY,CAAC,MAAM,aAAa,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE/D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,iBAAiB;oBACxB,OAAO,EAAE,cAAc,CAAC,OAAO;iBAChC,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACpE,KAAK,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC,CAAC,IAAI,CACJ,eAAe,cAAc,CAAC,UAAU,aAAa,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChG,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC1C,CAAC;QAED,gFAAgF;QAChF,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,GAAG,IAAI,CAAC;QAEd,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,kBAAkB,EAAE,cAAc,CAAC,UAAU;iBAC9C,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,KAAK,CAAC,4EAA4E,CAAC,CAAC;gBACpF,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/B,CAAC;QAED,mCAAmC;QACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YAE3C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC3B,CAAC;gBAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;wBACb,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,mCAAmC;wBAC5C,SAAS,EAAE,UAAU,CAAC,KAAK;qBAC5B,CAAC,CACH,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,oCAAoC,CAAC,CAAC;oBAC9C,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC/C,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;oBACnB,CAAC,CAAC,wCAAwC;oBAC1C,CAAC,CAAC,6BAA6B;gBACjC,aAAa,EAAE,cAAc,CAAC,UAAU;aACzC,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,8BAA8B,CAC1F,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACnB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,8CAA8C;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* migrate:rollback Command
|
|
3
|
+
*
|
|
4
|
+
* Rollback migrations using down.sql files.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Create the migrate:rollback command
|
|
9
|
+
*/
|
|
10
|
+
export declare function createMigrateRollbackCommand(): Command;
|
|
11
|
+
//# sourceMappingURL=rollback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../../src/migrations/commands/rollback.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAWtD"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* migrate:rollback Command
|
|
3
|
+
*
|
|
4
|
+
* Rollback migrations using down.sql files.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import * as p from '@clack/prompts';
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
import { error, info, success, warning } from '../../utils/output.js';
|
|
11
|
+
import { fileExists } from '../../utils/paths.js';
|
|
12
|
+
import { MigrationError } from '../errors.js';
|
|
13
|
+
import { loadMigrations, migrationsDirExists } from '../loader.js';
|
|
14
|
+
import { parseMigrateStatusOutput, prismaMigrateStatus } from '../prisma-wrapper.js';
|
|
15
|
+
import { rollbackMultiple } from '../rollback-runner.js';
|
|
16
|
+
import { createPrismaClient, } from '../types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Create the migrate:rollback command
|
|
19
|
+
*/
|
|
20
|
+
export function createMigrateRollbackCommand() {
|
|
21
|
+
return new Command('rollback')
|
|
22
|
+
.description('Rollback migrations')
|
|
23
|
+
.option('--step <n>', 'Rollback N migrations (default: 1)', parseInt, 1)
|
|
24
|
+
.option('--all', 'Rollback all migrations')
|
|
25
|
+
.option('--force', 'Skip confirmation prompt')
|
|
26
|
+
.option('--dry-run', 'Show what would be rolled back')
|
|
27
|
+
.option('--json', 'Output as JSON')
|
|
28
|
+
.action(async (options) => {
|
|
29
|
+
await runMigrateRollback(options);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Run migrate:rollback
|
|
34
|
+
*/
|
|
35
|
+
async function runMigrateRollback(options) {
|
|
36
|
+
const cwd = process.cwd();
|
|
37
|
+
const s = p.spinner();
|
|
38
|
+
let prisma = null;
|
|
39
|
+
try {
|
|
40
|
+
// Check if Prisma schema exists
|
|
41
|
+
const schemaPath = path.join(cwd, 'prisma', 'schema.prisma');
|
|
42
|
+
if (!fileExists(schemaPath)) {
|
|
43
|
+
if (options.json) {
|
|
44
|
+
console.log(JSON.stringify({ error: 'Prisma schema not found' }));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
error('Prisma schema not found.');
|
|
48
|
+
console.log(` ${pc.dim('Expected: prisma/schema.prisma')}`);
|
|
49
|
+
}
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
// Check migrations directory
|
|
53
|
+
const hasDir = await migrationsDirExists(cwd);
|
|
54
|
+
if (!hasDir) {
|
|
55
|
+
if (options.json) {
|
|
56
|
+
console.log(JSON.stringify({ error: 'No migrations found' }));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
info('No migrations to rollback.');
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Load migration files
|
|
64
|
+
const files = await loadMigrations(cwd);
|
|
65
|
+
// Get applied migrations from Prisma status
|
|
66
|
+
const statusResult = await prismaMigrateStatus(cwd);
|
|
67
|
+
const parsed = parseMigrateStatusOutput(statusResult.output);
|
|
68
|
+
if (parsed.applied.length === 0) {
|
|
69
|
+
if (options.json) {
|
|
70
|
+
console.log(JSON.stringify({ error: 'No migrations have been applied' }));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
info('No migrations have been applied yet.');
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Find migrations to rollback (in reverse order - most recent first)
|
|
78
|
+
const appliedFiles = [];
|
|
79
|
+
for (const appliedName of [...parsed.applied].reverse()) {
|
|
80
|
+
const file = files.find((f) => f.name === appliedName);
|
|
81
|
+
if (file) {
|
|
82
|
+
appliedFiles.push(file);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Determine how many to rollback
|
|
86
|
+
const count = options.all ? appliedFiles.length : (options.step ?? 1);
|
|
87
|
+
const toRollback = appliedFiles.slice(0, count);
|
|
88
|
+
if (toRollback.length === 0) {
|
|
89
|
+
if (options.json) {
|
|
90
|
+
console.log(JSON.stringify({ error: 'No migrations to rollback' }));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
info('No migrations to rollback.');
|
|
94
|
+
}
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// Check if all migrations have rollback support
|
|
98
|
+
const withoutRollback = toRollback.filter((m) => !m.hasRollback);
|
|
99
|
+
if (withoutRollback.length > 0) {
|
|
100
|
+
if (options.json) {
|
|
101
|
+
console.log(JSON.stringify({
|
|
102
|
+
error: 'Missing rollback files',
|
|
103
|
+
migrations: withoutRollback.map((m) => m.name),
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
error('Cannot rollback - missing down.sql files:');
|
|
108
|
+
for (const m of withoutRollback) {
|
|
109
|
+
console.log(` ${pc.dim('→')} ${m.name}`);
|
|
110
|
+
}
|
|
111
|
+
console.log('');
|
|
112
|
+
console.log(` ${pc.dim('Fix: Create down.sql in the migration folder')}`);
|
|
113
|
+
console.log(` ${pc.dim('Or use: velox migrate:fresh to reset completely')}`);
|
|
114
|
+
}
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
// Show what will be rolled back
|
|
118
|
+
if (!options.json && !options.dryRun) {
|
|
119
|
+
console.log('');
|
|
120
|
+
warning(`Rolling back ${toRollback.length} migration${toRollback.length > 1 ? 's' : ''}`);
|
|
121
|
+
console.log('');
|
|
122
|
+
for (const m of toRollback) {
|
|
123
|
+
console.log(` ${pc.dim('→')} ${m.name}`);
|
|
124
|
+
}
|
|
125
|
+
console.log('');
|
|
126
|
+
}
|
|
127
|
+
// Dry run
|
|
128
|
+
if (options.dryRun) {
|
|
129
|
+
if (options.json) {
|
|
130
|
+
console.log(JSON.stringify({
|
|
131
|
+
dryRun: true,
|
|
132
|
+
wouldRollback: toRollback.map((m) => m.name),
|
|
133
|
+
count: toRollback.length,
|
|
134
|
+
}, null, 2));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
warning('Dry run mode - no changes made.');
|
|
138
|
+
console.log(` ${pc.dim('Remove --dry-run to execute rollback.')}`);
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Confirm unless --force
|
|
143
|
+
if (!options.force && !options.json) {
|
|
144
|
+
const confirm = await p.confirm({
|
|
145
|
+
message: `Are you sure you want to rollback ${toRollback.length} migration${toRollback.length > 1 ? 's' : ''}?`,
|
|
146
|
+
});
|
|
147
|
+
if (p.isCancel(confirm) || !confirm) {
|
|
148
|
+
console.log('');
|
|
149
|
+
info('Rollback cancelled.');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Execute rollback
|
|
154
|
+
if (!options.json) {
|
|
155
|
+
console.log('');
|
|
156
|
+
s.start('Rolling back migrations...');
|
|
157
|
+
}
|
|
158
|
+
// Initialize Prisma client dynamically (avoids compile-time dependency on generated types)
|
|
159
|
+
prisma = await createPrismaClient();
|
|
160
|
+
const result = await rollbackMultiple(prisma, toRollback, {
|
|
161
|
+
dryRun: options.dryRun,
|
|
162
|
+
});
|
|
163
|
+
if (!options.json) {
|
|
164
|
+
s.stop(result.failed > 0 ? 'Rollback completed with errors' : 'Rollback complete');
|
|
165
|
+
}
|
|
166
|
+
// Output results
|
|
167
|
+
if (options.json) {
|
|
168
|
+
console.log(JSON.stringify({
|
|
169
|
+
success: result.failed === 0,
|
|
170
|
+
rolledBack: result.results.filter((r) => r.success).map((r) => r.migration),
|
|
171
|
+
failed: result.results
|
|
172
|
+
.filter((r) => !r.success)
|
|
173
|
+
.map((r) => ({
|
|
174
|
+
migration: r.migration,
|
|
175
|
+
error: r.error,
|
|
176
|
+
})),
|
|
177
|
+
total: result.total,
|
|
178
|
+
successful: result.successful,
|
|
179
|
+
duration: result.duration,
|
|
180
|
+
}, null, 2));
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.log('');
|
|
184
|
+
// Show individual results
|
|
185
|
+
for (const r of result.results) {
|
|
186
|
+
if (r.success) {
|
|
187
|
+
console.log(` ${pc.green('✓')} ${r.migration} ${pc.dim(`(${r.duration}ms)`)}`);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log(` ${pc.red('✗')} ${r.migration}`);
|
|
191
|
+
if (r.error) {
|
|
192
|
+
console.log(` ${pc.red(r.error)}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
console.log('');
|
|
197
|
+
if (result.failed > 0) {
|
|
198
|
+
error(`Rollback completed with ${result.failed} error${result.failed > 1 ? 's' : ''}`);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
success(`Rolled back ${result.successful} migration${result.successful > 1 ? 's' : ''}`);
|
|
202
|
+
}
|
|
203
|
+
console.log('');
|
|
204
|
+
}
|
|
205
|
+
if (result.failed > 0) {
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
s.stop('Rollback failed');
|
|
211
|
+
if (options.json) {
|
|
212
|
+
if (err instanceof MigrationError) {
|
|
213
|
+
console.log(JSON.stringify({ error: err.toJSON() }));
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
console.log(JSON.stringify({ error: err instanceof Error ? err.message : String(err) }));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.log('');
|
|
221
|
+
if (err instanceof MigrationError) {
|
|
222
|
+
error(err.message);
|
|
223
|
+
if (err.fix) {
|
|
224
|
+
console.log(` ${pc.dim('Fix:')} ${err.fix}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
error(err instanceof Error ? err.message : String(err));
|
|
229
|
+
}
|
|
230
|
+
console.log('');
|
|
231
|
+
}
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
// Disconnect Prisma client
|
|
236
|
+
if (prisma) {
|
|
237
|
+
await prisma.$disconnect();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=rollback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/migrations/commands/rollback.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,kBAAkB,GAInB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,YAAY,EAAE,oCAAoC,EAAE,QAAQ,EAAE,CAAC,CAAC;SACvE,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC;SAC1C,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAA+B,EAAE,EAAE;QAChD,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAA+B;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAEtB,IAAI,MAAM,GAA4B,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAExC,4CAA4C;QAC5C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,wBAAwB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE7D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,MAAM,YAAY,GAAoB,EAAE,CAAC;QACzC,KAAK,MAAM,WAAW,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE,CAAC;gBACT,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEhD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,wBAAwB;oBAC/B,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC/C,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACnD,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,gBAAgB,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;oBACE,MAAM,EAAE,IAAI;oBACZ,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5C,KAAK,EAAE,UAAU,CAAC,MAAM;iBACzB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,iCAAiC,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAC9B,OAAO,EAAE,qCAAqC,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;aAChH,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACxC,CAAC;QAED,2FAA2F;QAC3F,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE;YACxD,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACrF,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC5B,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3E,MAAM,EAAE,MAAM,CAAC,OAAO;qBACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;qBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACX,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAC,CAAC;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,0BAA0B;YAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC/C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,2BAA2B,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,eAAe,MAAM,CAAC,UAAU,aAAa,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3F,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACnB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,2BAA2B;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/migrations/commands/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAUjD"}
|