fragment-ts 1.0.7 → 1.0.9
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/commands/init.command.d.ts.map +1 -1
- package/dist/cli/commands/init.command.js +4 -0
- package/dist/cli/commands/init.command.js.map +1 -1
- package/dist/cli/commands/migrate.command.d.ts +1 -1
- package/dist/cli/commands/migrate.command.d.ts.map +1 -1
- package/dist/cli/commands/migrate.command.js +89 -72
- package/dist/cli/commands/migrate.command.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/init.command.ts +9 -5
- package/src/cli/commands/migrate.command.ts +104 -80
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;WAe1B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;mBAsF/C,wBAAwB;mBAyCxB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;WAe1B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;mBAsF/C,wBAAwB;mBAyCxB,iBAAiB;mBA6FjB,gBAAgB;mBA+BhB,yBAAyB;mBAoBzB,sBAAsB;mBAmBtB,qBAAqB;mBA2BrB,iBAAiB;CA8CvC"}
|
|
@@ -171,6 +171,10 @@ class InitCommand {
|
|
|
171
171
|
dev: "fragment serve",
|
|
172
172
|
build: "fragment build",
|
|
173
173
|
test: "fragment test",
|
|
174
|
+
"migrate:create": "fragment migrate:create",
|
|
175
|
+
"migrate:generate": "fragment migrate:generate",
|
|
176
|
+
"migrate:run": "fragment migrate:run",
|
|
177
|
+
"migrate:revert": "fragment migrate:revert",
|
|
174
178
|
},
|
|
175
179
|
dependencies: {
|
|
176
180
|
fragment: "^1.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;mBAoFlB,iBAAiB;mBA6EjB,eAAe;mBA2Bf,aAAa;mBAab,eAAe;mBAaf,iBAAiB;mBAcjB,UAAU;mBAKV,UAAU;mBAaV,UAAU;mBAaV,QAAQ;mBA0BR,UAAU;CAuBhC"}
|
|
@@ -45,70 +45,69 @@ const typeorm_module_1 = require("../../typeorm/typeorm-module");
|
|
|
45
45
|
class MigrateCommand {
|
|
46
46
|
static register(program) {
|
|
47
47
|
program
|
|
48
|
-
.command(
|
|
49
|
-
.description(
|
|
48
|
+
.command("migrate")
|
|
49
|
+
.description("Run all pending migrations")
|
|
50
50
|
.action(async () => {
|
|
51
51
|
await this.runMigrations();
|
|
52
52
|
});
|
|
53
53
|
program
|
|
54
|
-
.command(
|
|
55
|
-
.description(
|
|
54
|
+
.command("migrate:create <name>")
|
|
55
|
+
.description("Create an empty migration")
|
|
56
56
|
.action(async (name) => {
|
|
57
57
|
await this.createMigration(name);
|
|
58
58
|
});
|
|
59
59
|
program
|
|
60
|
-
.command(
|
|
61
|
-
.description(
|
|
62
|
-
.
|
|
63
|
-
.option('--name <name>', 'Migration name')
|
|
60
|
+
.command("migrate:generate [nameOrPath]")
|
|
61
|
+
.description("Generate migration from schema changes")
|
|
62
|
+
.option("--name <name>", "Migration name")
|
|
64
63
|
.action(async (nameOrPath, options) => {
|
|
65
64
|
await this.generateMigration(nameOrPath, options);
|
|
66
65
|
});
|
|
67
66
|
program
|
|
68
|
-
.command(
|
|
69
|
-
.description(
|
|
67
|
+
.command("migrate:run")
|
|
68
|
+
.description("Run pending migrations")
|
|
70
69
|
.action(async () => {
|
|
71
70
|
await this.runMigrations();
|
|
72
71
|
});
|
|
73
72
|
program
|
|
74
|
-
.command(
|
|
75
|
-
.description(
|
|
73
|
+
.command("migrate:revert")
|
|
74
|
+
.description("Revert the last migration")
|
|
76
75
|
.action(async () => {
|
|
77
76
|
await this.revertMigration();
|
|
78
77
|
});
|
|
79
78
|
program
|
|
80
|
-
.command(
|
|
81
|
-
.description(
|
|
79
|
+
.command("migrate:refresh")
|
|
80
|
+
.description("Rollback all migrations and re-run them")
|
|
82
81
|
.action(async () => {
|
|
83
82
|
await this.refreshMigrations();
|
|
84
83
|
});
|
|
85
84
|
program
|
|
86
|
-
.command(
|
|
87
|
-
.description(
|
|
85
|
+
.command("migrate:status")
|
|
86
|
+
.description("Show migration status")
|
|
88
87
|
.action(async () => {
|
|
89
88
|
await this.showStatus();
|
|
90
89
|
});
|
|
91
90
|
program
|
|
92
|
-
.command(
|
|
93
|
-
.description(
|
|
91
|
+
.command("schema:sync")
|
|
92
|
+
.description("Synchronize database schema")
|
|
94
93
|
.action(async () => {
|
|
95
94
|
await this.syncSchema();
|
|
96
95
|
});
|
|
97
96
|
program
|
|
98
|
-
.command(
|
|
99
|
-
.description(
|
|
97
|
+
.command("schema:drop")
|
|
98
|
+
.description("Drop database schema")
|
|
100
99
|
.action(async () => {
|
|
101
100
|
await this.dropSchema();
|
|
102
101
|
});
|
|
103
102
|
program
|
|
104
|
-
.command(
|
|
105
|
-
.description(
|
|
103
|
+
.command("seed")
|
|
104
|
+
.description("Run database seeds")
|
|
106
105
|
.action(async () => {
|
|
107
106
|
await this.runSeeds();
|
|
108
107
|
});
|
|
109
108
|
program
|
|
110
|
-
.command(
|
|
111
|
-
.description(
|
|
109
|
+
.command("seed:create <name>")
|
|
110
|
+
.description("Create a new seed file")
|
|
112
111
|
.action(async (name) => {
|
|
113
112
|
await this.createSeed(name);
|
|
114
113
|
});
|
|
@@ -117,39 +116,57 @@ class MigrateCommand {
|
|
|
117
116
|
// MIGRATION GENERATE
|
|
118
117
|
// -----------------------------------------
|
|
119
118
|
static async generateMigration(nameOrPath, options) {
|
|
120
|
-
const spinner = (0, ora_1.default)(
|
|
119
|
+
const spinner = (0, ora_1.default)("Generating migration...").start();
|
|
121
120
|
try {
|
|
122
|
-
const
|
|
123
|
-
if (!
|
|
124
|
-
throw new Error(`DataSource
|
|
121
|
+
const dataSource = await typeorm_module_1.TypeORMModule.initialize();
|
|
122
|
+
if (!dataSource) {
|
|
123
|
+
throw new Error(`No DataSource found. Make sure you export a default DataSource instance.`);
|
|
125
124
|
}
|
|
125
|
+
// 3️⃣ Initialize the DataSource
|
|
126
|
+
if (!dataSource.isInitialized) {
|
|
127
|
+
await dataSource.initialize();
|
|
128
|
+
}
|
|
129
|
+
// 4️⃣ Generate schema change SQL
|
|
130
|
+
const schemaBuilder = dataSource.driver.createSchemaBuilder();
|
|
131
|
+
const sqlLog = await schemaBuilder.log();
|
|
132
|
+
// 5️⃣ Check if there are any changes
|
|
133
|
+
if (sqlLog.upQueries.length === 0 && sqlLog.downQueries.length === 0) {
|
|
134
|
+
spinner.info("No schema changes detected. Migration not generated.");
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// 6️⃣ Determine migration name
|
|
138
|
+
const migrationName = options.name || (nameOrPath ? path.basename(nameOrPath) : "Migration");
|
|
126
139
|
const timestamp = Date.now();
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
140
|
+
// 7️⃣ Set migrations directory
|
|
141
|
+
const migrationsDir = path.join(process.cwd(), "src", "migrations");
|
|
142
|
+
// 8️⃣ Build SQL for up/down
|
|
143
|
+
const upSql = sqlLog.upQueries
|
|
144
|
+
.map((q) => `await queryRunner.query(\`${q.query}\`);`)
|
|
145
|
+
.join("\n");
|
|
146
|
+
const downSql = sqlLog.downQueries
|
|
147
|
+
.map((q) => `await queryRunner.query(\`${q.query}\`);`)
|
|
148
|
+
.join("\n");
|
|
149
|
+
// 9️⃣ Write the migration file
|
|
133
150
|
const fileName = `${timestamp}-${migrationName}.ts`;
|
|
134
151
|
const filePath = path.join(migrationsDir, fileName);
|
|
135
152
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
136
153
|
|
|
137
|
-
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
154
|
+
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
155
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
156
|
+
${upSql}
|
|
157
|
+
}
|
|
141
158
|
|
|
142
|
-
|
|
143
|
-
|
|
159
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
160
|
+
${downSql}
|
|
161
|
+
}
|
|
144
162
|
}
|
|
145
|
-
|
|
146
|
-
`;
|
|
163
|
+
`;
|
|
147
164
|
await fs.ensureDir(path.dirname(filePath));
|
|
148
165
|
await fs.writeFile(filePath, content);
|
|
149
|
-
spinner.succeed(`Migration generated: ${filePath}`);
|
|
166
|
+
spinner.succeed(`Migration generated successfully: ${filePath}`);
|
|
150
167
|
}
|
|
151
168
|
catch (error) {
|
|
152
|
-
spinner.fail(
|
|
169
|
+
spinner.fail("Migration generation failed");
|
|
153
170
|
console.error(chalk_1.default.red(error));
|
|
154
171
|
}
|
|
155
172
|
}
|
|
@@ -157,11 +174,11 @@ export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
|
157
174
|
// EXISTING METHODS
|
|
158
175
|
// -----------------------------------------
|
|
159
176
|
static async createMigration(name) {
|
|
160
|
-
const spinner = (0, ora_1.default)(
|
|
177
|
+
const spinner = (0, ora_1.default)("Creating migration...").start();
|
|
161
178
|
try {
|
|
162
179
|
const timestamp = Date.now();
|
|
163
180
|
const fileName = `${timestamp}-${name}.ts`;
|
|
164
|
-
const filePath = path.join(process.cwd(),
|
|
181
|
+
const filePath = path.join(process.cwd(), "src", "migrations", fileName);
|
|
165
182
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
166
183
|
|
|
167
184
|
export class ${name}${timestamp} implements MigrationInterface {
|
|
@@ -175,83 +192,83 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
175
192
|
spinner.succeed(`Migration created: ${fileName}`);
|
|
176
193
|
}
|
|
177
194
|
catch (error) {
|
|
178
|
-
spinner.fail(
|
|
195
|
+
spinner.fail("Failed to create migration");
|
|
179
196
|
console.error(chalk_1.default.red(error));
|
|
180
197
|
}
|
|
181
198
|
}
|
|
182
199
|
static async runMigrations() {
|
|
183
|
-
const spinner = (0, ora_1.default)(
|
|
200
|
+
const spinner = (0, ora_1.default)("Running migrations...").start();
|
|
184
201
|
try {
|
|
185
202
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
186
203
|
await typeorm_module_1.TypeORMModule.runMigrations();
|
|
187
|
-
spinner.succeed(
|
|
204
|
+
spinner.succeed("Migrations completed successfully");
|
|
188
205
|
}
|
|
189
206
|
catch (error) {
|
|
190
|
-
spinner.fail(
|
|
207
|
+
spinner.fail("Migration failed");
|
|
191
208
|
console.error(chalk_1.default.red(error));
|
|
192
209
|
}
|
|
193
210
|
}
|
|
194
211
|
static async revertMigration() {
|
|
195
|
-
const spinner = (0, ora_1.default)(
|
|
212
|
+
const spinner = (0, ora_1.default)("Reverting migration...").start();
|
|
196
213
|
try {
|
|
197
214
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
198
215
|
await typeorm_module_1.TypeORMModule.revertMigration();
|
|
199
|
-
spinner.succeed(
|
|
216
|
+
spinner.succeed("Migration reverted successfully");
|
|
200
217
|
}
|
|
201
218
|
catch (error) {
|
|
202
|
-
spinner.fail(
|
|
219
|
+
spinner.fail("Revert failed");
|
|
203
220
|
console.error(chalk_1.default.red(error));
|
|
204
221
|
}
|
|
205
222
|
}
|
|
206
223
|
static async refreshMigrations() {
|
|
207
|
-
const spinner = (0, ora_1.default)(
|
|
224
|
+
const spinner = (0, ora_1.default)("Refreshing migrations...").start();
|
|
208
225
|
try {
|
|
209
226
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
210
227
|
await typeorm_module_1.TypeORMModule.dropSchema();
|
|
211
228
|
await typeorm_module_1.TypeORMModule.runMigrations();
|
|
212
|
-
spinner.succeed(
|
|
229
|
+
spinner.succeed("Migrations refreshed successfully");
|
|
213
230
|
}
|
|
214
231
|
catch (error) {
|
|
215
|
-
spinner.fail(
|
|
232
|
+
spinner.fail("Refresh failed");
|
|
216
233
|
console.error(chalk_1.default.red(error));
|
|
217
234
|
}
|
|
218
235
|
}
|
|
219
236
|
static async showStatus() {
|
|
220
|
-
console.log(chalk_1.default.blue(
|
|
221
|
-
console.log(
|
|
237
|
+
console.log(chalk_1.default.blue("Migration Status:"));
|
|
238
|
+
console.log(" Implement status checking using TypeORM QueryRunner");
|
|
222
239
|
}
|
|
223
240
|
static async syncSchema() {
|
|
224
|
-
const spinner = (0, ora_1.default)(
|
|
241
|
+
const spinner = (0, ora_1.default)("Synchronizing schema...").start();
|
|
225
242
|
try {
|
|
226
243
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
227
244
|
await typeorm_module_1.TypeORMModule.syncSchema();
|
|
228
|
-
spinner.succeed(
|
|
245
|
+
spinner.succeed("Schema synchronized");
|
|
229
246
|
}
|
|
230
247
|
catch (error) {
|
|
231
|
-
spinner.fail(
|
|
248
|
+
spinner.fail("Sync failed");
|
|
232
249
|
console.error(chalk_1.default.red(error));
|
|
233
250
|
}
|
|
234
251
|
}
|
|
235
252
|
static async dropSchema() {
|
|
236
|
-
const spinner = (0, ora_1.default)(
|
|
253
|
+
const spinner = (0, ora_1.default)("Dropping schema...").start();
|
|
237
254
|
try {
|
|
238
255
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
239
256
|
await typeorm_module_1.TypeORMModule.dropSchema();
|
|
240
|
-
spinner.succeed(
|
|
257
|
+
spinner.succeed("Schema dropped");
|
|
241
258
|
}
|
|
242
259
|
catch (error) {
|
|
243
|
-
spinner.fail(
|
|
260
|
+
spinner.fail("Drop failed");
|
|
244
261
|
console.error(chalk_1.default.red(error));
|
|
245
262
|
}
|
|
246
263
|
}
|
|
247
264
|
static async runSeeds() {
|
|
248
|
-
const spinner = (0, ora_1.default)(
|
|
265
|
+
const spinner = (0, ora_1.default)("Running seeds...").start();
|
|
249
266
|
try {
|
|
250
|
-
const seedsDir = path.join(process.cwd(),
|
|
267
|
+
const seedsDir = path.join(process.cwd(), "dist", "seeds");
|
|
251
268
|
if (fs.existsSync(seedsDir)) {
|
|
252
269
|
const files = fs.readdirSync(seedsDir);
|
|
253
270
|
for (const file of files) {
|
|
254
|
-
if (file.endsWith(
|
|
271
|
+
if (file.endsWith(".js")) {
|
|
255
272
|
const seedModule = require(path.join(seedsDir, file));
|
|
256
273
|
if (seedModule.default?.run) {
|
|
257
274
|
await seedModule.default.run();
|
|
@@ -259,18 +276,18 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
259
276
|
}
|
|
260
277
|
}
|
|
261
278
|
}
|
|
262
|
-
spinner.succeed(
|
|
279
|
+
spinner.succeed("Seeds completed successfully");
|
|
263
280
|
}
|
|
264
281
|
catch (error) {
|
|
265
|
-
spinner.fail(
|
|
282
|
+
spinner.fail("Seed failed");
|
|
266
283
|
console.error(chalk_1.default.red(error));
|
|
267
284
|
}
|
|
268
285
|
}
|
|
269
286
|
static async createSeed(name) {
|
|
270
|
-
const spinner = (0, ora_1.default)(
|
|
287
|
+
const spinner = (0, ora_1.default)("Creating seed...").start();
|
|
271
288
|
try {
|
|
272
289
|
const fileName = `${name}.seed.ts`;
|
|
273
|
-
const filePath = path.join(process.cwd(),
|
|
290
|
+
const filePath = path.join(process.cwd(), "src", "seeds", fileName);
|
|
274
291
|
const content = `export default class ${name}Seed {
|
|
275
292
|
static async run() {
|
|
276
293
|
console.log('Running ${name} seed...');
|
|
@@ -282,7 +299,7 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
282
299
|
spinner.succeed(`Seed created: ${fileName}`);
|
|
283
300
|
}
|
|
284
301
|
catch (error) {
|
|
285
|
-
spinner.fail(
|
|
302
|
+
spinner.fail("Failed to create seed");
|
|
286
303
|
console.error(chalk_1.default.red(error));
|
|
287
304
|
}
|
|
288
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.command.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA+B;AAC/B,2CAA6B;AAC7B,kDAA0B;AAC1B,8CAAsB;AACtB,iEAA6D;
|
|
1
|
+
{"version":3,"file":"migrate.command.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.command.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -163,6 +163,10 @@ export class InitCommand {
|
|
|
163
163
|
dev: "fragment serve",
|
|
164
164
|
build: "fragment build",
|
|
165
165
|
test: "fragment test",
|
|
166
|
+
"migrate:create": "fragment migrate:create",
|
|
167
|
+
"migrate:generate": "fragment migrate:generate",
|
|
168
|
+
"migrate:run": "fragment migrate:run",
|
|
169
|
+
"migrate:revert": "fragment migrate:revert",
|
|
166
170
|
},
|
|
167
171
|
dependencies: {
|
|
168
172
|
fragment: "^1.0.0",
|
|
@@ -200,7 +204,7 @@ export class InitCommand {
|
|
|
200
204
|
});
|
|
201
205
|
|
|
202
206
|
const fragmentConfig: any = {};
|
|
203
|
-
|
|
207
|
+
|
|
204
208
|
if (features.includes("database")) {
|
|
205
209
|
// Default SQLite config with env interpolation
|
|
206
210
|
fragmentConfig.database = {
|
|
@@ -213,23 +217,23 @@ export class InitCommand {
|
|
|
213
217
|
subscribers: [],
|
|
214
218
|
};
|
|
215
219
|
}
|
|
216
|
-
|
|
220
|
+
|
|
217
221
|
// Write fragment.json
|
|
218
222
|
await fs.writeJSON(
|
|
219
223
|
path.join(projectPath, "fragment.json"),
|
|
220
224
|
fragmentConfig,
|
|
221
225
|
{ spaces: 2 },
|
|
222
226
|
);
|
|
223
|
-
|
|
227
|
+
|
|
224
228
|
// .env file with defaults
|
|
225
229
|
const envContent = `NODE_ENV=development
|
|
226
230
|
PORT=3000
|
|
227
231
|
JWT_SECRET=${process.env.JWT_SECRET ?? "your-secret-key-change-this"}
|
|
228
232
|
${features.includes("database") ? "DATABASE_FILE=database.sqlite" : ""}
|
|
229
233
|
`;
|
|
230
|
-
|
|
234
|
+
|
|
231
235
|
await fs.writeFile(path.join(projectPath, ".env"), envContent);
|
|
232
|
-
|
|
236
|
+
|
|
233
237
|
// .gitignore
|
|
234
238
|
await fs.writeFile(
|
|
235
239
|
path.join(projectPath, ".gitignore"),
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import { Command } from
|
|
2
|
-
import * as fs from
|
|
3
|
-
import * as path from
|
|
4
|
-
import chalk from
|
|
5
|
-
import ora from
|
|
6
|
-
import { TypeORMModule } from
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import * as fs from "fs-extra";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import ora from "ora";
|
|
6
|
+
import { TypeORMModule } from "../../typeorm/typeorm-module";
|
|
7
|
+
import { DataSource } from "typeorm";
|
|
7
8
|
|
|
8
9
|
export class MigrateCommand {
|
|
9
10
|
static register(program: Command): void {
|
|
10
11
|
program
|
|
11
|
-
.command(
|
|
12
|
-
.description(
|
|
12
|
+
.command("migrate")
|
|
13
|
+
.description("Run all pending migrations")
|
|
13
14
|
.action(async () => {
|
|
14
15
|
await this.runMigrations();
|
|
15
16
|
});
|
|
16
17
|
|
|
17
18
|
program
|
|
18
|
-
.command(
|
|
19
|
-
.description(
|
|
19
|
+
.command("migrate:create <name>")
|
|
20
|
+
.description("Create an empty migration")
|
|
20
21
|
.action(async (name) => {
|
|
21
22
|
await this.createMigration(name);
|
|
22
23
|
});
|
|
23
24
|
|
|
24
25
|
program
|
|
25
|
-
.command(
|
|
26
|
-
.description(
|
|
27
|
-
.
|
|
28
|
-
.option('--name <name>', 'Migration name')
|
|
26
|
+
.command("migrate:generate [nameOrPath]")
|
|
27
|
+
.description("Generate migration from schema changes")
|
|
28
|
+
.option("--name <name>", "Migration name")
|
|
29
29
|
.action(async (nameOrPath, options) => {
|
|
30
30
|
await this.generateMigration(nameOrPath, options);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
program
|
|
34
|
-
.command(
|
|
35
|
-
.description(
|
|
34
|
+
.command("migrate:run")
|
|
35
|
+
.description("Run pending migrations")
|
|
36
36
|
.action(async () => {
|
|
37
37
|
await this.runMigrations();
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
program
|
|
41
|
-
.command(
|
|
42
|
-
.description(
|
|
41
|
+
.command("migrate:revert")
|
|
42
|
+
.description("Revert the last migration")
|
|
43
43
|
.action(async () => {
|
|
44
44
|
await this.revertMigration();
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
program
|
|
48
|
-
.command(
|
|
49
|
-
.description(
|
|
48
|
+
.command("migrate:refresh")
|
|
49
|
+
.description("Rollback all migrations and re-run them")
|
|
50
50
|
.action(async () => {
|
|
51
51
|
await this.refreshMigrations();
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
program
|
|
55
|
-
.command(
|
|
56
|
-
.description(
|
|
55
|
+
.command("migrate:status")
|
|
56
|
+
.description("Show migration status")
|
|
57
57
|
.action(async () => {
|
|
58
58
|
await this.showStatus();
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
program
|
|
62
|
-
.command(
|
|
63
|
-
.description(
|
|
62
|
+
.command("schema:sync")
|
|
63
|
+
.description("Synchronize database schema")
|
|
64
64
|
.action(async () => {
|
|
65
65
|
await this.syncSchema();
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
program
|
|
69
|
-
.command(
|
|
70
|
-
.description(
|
|
69
|
+
.command("schema:drop")
|
|
70
|
+
.description("Drop database schema")
|
|
71
71
|
.action(async () => {
|
|
72
72
|
await this.dropSchema();
|
|
73
73
|
});
|
|
74
74
|
|
|
75
75
|
program
|
|
76
|
-
.command(
|
|
77
|
-
.description(
|
|
76
|
+
.command("seed")
|
|
77
|
+
.description("Run database seeds")
|
|
78
78
|
.action(async () => {
|
|
79
79
|
await this.runSeeds();
|
|
80
80
|
});
|
|
81
81
|
|
|
82
82
|
program
|
|
83
|
-
.command(
|
|
84
|
-
.description(
|
|
83
|
+
.command("seed:create <name>")
|
|
84
|
+
.description("Create a new seed file")
|
|
85
85
|
.action(async (name) => {
|
|
86
86
|
await this.createSeed(name);
|
|
87
87
|
});
|
|
@@ -93,49 +93,73 @@ export class MigrateCommand {
|
|
|
93
93
|
|
|
94
94
|
private static async generateMigration(
|
|
95
95
|
nameOrPath: string | undefined,
|
|
96
|
-
options: {
|
|
96
|
+
options: { name?: string },
|
|
97
97
|
): Promise<void> {
|
|
98
|
-
const spinner = ora(
|
|
98
|
+
const spinner = ora("Generating migration...").start();
|
|
99
99
|
|
|
100
100
|
try {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
const dataSource: DataSource = await TypeORMModule.initialize();
|
|
102
|
+
|
|
103
|
+
if (!dataSource) {
|
|
104
|
+
throw new Error(
|
|
105
|
+
`No DataSource found. Make sure you export a default DataSource instance.`,
|
|
106
|
+
);
|
|
104
107
|
}
|
|
105
108
|
|
|
106
|
-
|
|
109
|
+
// 3️⃣ Initialize the DataSource
|
|
110
|
+
if (!dataSource.isInitialized) {
|
|
111
|
+
await dataSource.initialize();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 4️⃣ Generate schema change SQL
|
|
115
|
+
const schemaBuilder = dataSource.driver.createSchemaBuilder();
|
|
116
|
+
const sqlLog = await schemaBuilder.log();
|
|
117
|
+
|
|
118
|
+
// 5️⃣ Check if there are any changes
|
|
119
|
+
if (sqlLog.upQueries.length === 0 && sqlLog.downQueries.length === 0) {
|
|
120
|
+
spinner.info("No schema changes detected. Migration not generated.");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 6️⃣ Determine migration name
|
|
107
125
|
const migrationName =
|
|
108
|
-
options.name ||
|
|
109
|
-
|
|
126
|
+
options.name || (nameOrPath ? path.basename(nameOrPath) : "Migration");
|
|
127
|
+
const timestamp = Date.now();
|
|
110
128
|
|
|
111
|
-
|
|
129
|
+
// 7️⃣ Set migrations directory
|
|
130
|
+
const migrationsDir = path.join(process.cwd(), "src", "migrations");
|
|
112
131
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
132
|
+
// 8️⃣ Build SQL for up/down
|
|
133
|
+
const upSql = sqlLog.upQueries
|
|
134
|
+
.map((q) => `await queryRunner.query(\`${q.query}\`);`)
|
|
135
|
+
.join("\n");
|
|
136
|
+
const downSql = sqlLog.downQueries
|
|
137
|
+
.map((q) => `await queryRunner.query(\`${q.query}\`);`)
|
|
138
|
+
.join("\n");
|
|
116
139
|
|
|
140
|
+
// 9️⃣ Write the migration file
|
|
117
141
|
const fileName = `${timestamp}-${migrationName}.ts`;
|
|
118
142
|
const filePath = path.join(migrationsDir, fileName);
|
|
119
143
|
|
|
120
144
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
121
145
|
|
|
122
|
-
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
146
|
+
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
147
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
148
|
+
${upSql}
|
|
149
|
+
}
|
|
126
150
|
|
|
127
|
-
|
|
128
|
-
|
|
151
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
152
|
+
${downSql}
|
|
153
|
+
}
|
|
129
154
|
}
|
|
130
|
-
|
|
131
|
-
`;
|
|
155
|
+
`;
|
|
132
156
|
|
|
133
157
|
await fs.ensureDir(path.dirname(filePath));
|
|
134
158
|
await fs.writeFile(filePath, content);
|
|
135
159
|
|
|
136
|
-
spinner.succeed(`Migration generated: ${filePath}`);
|
|
160
|
+
spinner.succeed(`Migration generated successfully: ${filePath}`);
|
|
137
161
|
} catch (error) {
|
|
138
|
-
spinner.fail(
|
|
162
|
+
spinner.fail("Migration generation failed");
|
|
139
163
|
console.error(chalk.red(error));
|
|
140
164
|
}
|
|
141
165
|
}
|
|
@@ -145,12 +169,12 @@ export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
|
145
169
|
// -----------------------------------------
|
|
146
170
|
|
|
147
171
|
private static async createMigration(name: string): Promise<void> {
|
|
148
|
-
const spinner = ora(
|
|
172
|
+
const spinner = ora("Creating migration...").start();
|
|
149
173
|
|
|
150
174
|
try {
|
|
151
175
|
const timestamp = Date.now();
|
|
152
176
|
const fileName = `${timestamp}-${name}.ts`;
|
|
153
|
-
const filePath = path.join(process.cwd(),
|
|
177
|
+
const filePath = path.join(process.cwd(), "src", "migrations", fileName);
|
|
154
178
|
|
|
155
179
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
156
180
|
|
|
@@ -166,93 +190,93 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
166
190
|
|
|
167
191
|
spinner.succeed(`Migration created: ${fileName}`);
|
|
168
192
|
} catch (error) {
|
|
169
|
-
spinner.fail(
|
|
193
|
+
spinner.fail("Failed to create migration");
|
|
170
194
|
console.error(chalk.red(error));
|
|
171
195
|
}
|
|
172
196
|
}
|
|
173
197
|
|
|
174
198
|
private static async runMigrations(): Promise<void> {
|
|
175
|
-
const spinner = ora(
|
|
199
|
+
const spinner = ora("Running migrations...").start();
|
|
176
200
|
|
|
177
201
|
try {
|
|
178
202
|
await TypeORMModule.initialize();
|
|
179
203
|
await TypeORMModule.runMigrations();
|
|
180
|
-
spinner.succeed(
|
|
204
|
+
spinner.succeed("Migrations completed successfully");
|
|
181
205
|
} catch (error) {
|
|
182
|
-
spinner.fail(
|
|
206
|
+
spinner.fail("Migration failed");
|
|
183
207
|
console.error(chalk.red(error));
|
|
184
208
|
}
|
|
185
209
|
}
|
|
186
210
|
|
|
187
211
|
private static async revertMigration(): Promise<void> {
|
|
188
|
-
const spinner = ora(
|
|
212
|
+
const spinner = ora("Reverting migration...").start();
|
|
189
213
|
|
|
190
214
|
try {
|
|
191
215
|
await TypeORMModule.initialize();
|
|
192
216
|
await TypeORMModule.revertMigration();
|
|
193
|
-
spinner.succeed(
|
|
217
|
+
spinner.succeed("Migration reverted successfully");
|
|
194
218
|
} catch (error) {
|
|
195
|
-
spinner.fail(
|
|
219
|
+
spinner.fail("Revert failed");
|
|
196
220
|
console.error(chalk.red(error));
|
|
197
221
|
}
|
|
198
222
|
}
|
|
199
223
|
|
|
200
224
|
private static async refreshMigrations(): Promise<void> {
|
|
201
|
-
const spinner = ora(
|
|
225
|
+
const spinner = ora("Refreshing migrations...").start();
|
|
202
226
|
|
|
203
227
|
try {
|
|
204
228
|
await TypeORMModule.initialize();
|
|
205
229
|
await TypeORMModule.dropSchema();
|
|
206
230
|
await TypeORMModule.runMigrations();
|
|
207
|
-
spinner.succeed(
|
|
231
|
+
spinner.succeed("Migrations refreshed successfully");
|
|
208
232
|
} catch (error) {
|
|
209
|
-
spinner.fail(
|
|
233
|
+
spinner.fail("Refresh failed");
|
|
210
234
|
console.error(chalk.red(error));
|
|
211
235
|
}
|
|
212
236
|
}
|
|
213
237
|
|
|
214
238
|
private static async showStatus(): Promise<void> {
|
|
215
|
-
console.log(chalk.blue(
|
|
216
|
-
console.log(
|
|
239
|
+
console.log(chalk.blue("Migration Status:"));
|
|
240
|
+
console.log(" Implement status checking using TypeORM QueryRunner");
|
|
217
241
|
}
|
|
218
242
|
|
|
219
243
|
private static async syncSchema(): Promise<void> {
|
|
220
|
-
const spinner = ora(
|
|
244
|
+
const spinner = ora("Synchronizing schema...").start();
|
|
221
245
|
|
|
222
246
|
try {
|
|
223
247
|
await TypeORMModule.initialize();
|
|
224
248
|
await TypeORMModule.syncSchema();
|
|
225
|
-
spinner.succeed(
|
|
249
|
+
spinner.succeed("Schema synchronized");
|
|
226
250
|
} catch (error) {
|
|
227
|
-
spinner.fail(
|
|
251
|
+
spinner.fail("Sync failed");
|
|
228
252
|
console.error(chalk.red(error));
|
|
229
253
|
}
|
|
230
254
|
}
|
|
231
255
|
|
|
232
256
|
private static async dropSchema(): Promise<void> {
|
|
233
|
-
const spinner = ora(
|
|
257
|
+
const spinner = ora("Dropping schema...").start();
|
|
234
258
|
|
|
235
259
|
try {
|
|
236
260
|
await TypeORMModule.initialize();
|
|
237
261
|
await TypeORMModule.dropSchema();
|
|
238
|
-
spinner.succeed(
|
|
262
|
+
spinner.succeed("Schema dropped");
|
|
239
263
|
} catch (error) {
|
|
240
|
-
spinner.fail(
|
|
264
|
+
spinner.fail("Drop failed");
|
|
241
265
|
console.error(chalk.red(error));
|
|
242
266
|
}
|
|
243
267
|
}
|
|
244
268
|
|
|
245
269
|
private static async runSeeds(): Promise<void> {
|
|
246
|
-
const spinner = ora(
|
|
270
|
+
const spinner = ora("Running seeds...").start();
|
|
247
271
|
|
|
248
272
|
try {
|
|
249
|
-
const seedsDir = path.join(process.cwd(),
|
|
273
|
+
const seedsDir = path.join(process.cwd(), "dist", "seeds");
|
|
250
274
|
|
|
251
275
|
if (fs.existsSync(seedsDir)) {
|
|
252
276
|
const files = fs.readdirSync(seedsDir);
|
|
253
277
|
|
|
254
278
|
for (const file of files) {
|
|
255
|
-
if (file.endsWith(
|
|
279
|
+
if (file.endsWith(".js")) {
|
|
256
280
|
const seedModule = require(path.join(seedsDir, file));
|
|
257
281
|
if (seedModule.default?.run) {
|
|
258
282
|
await seedModule.default.run();
|
|
@@ -261,19 +285,19 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
261
285
|
}
|
|
262
286
|
}
|
|
263
287
|
|
|
264
|
-
spinner.succeed(
|
|
288
|
+
spinner.succeed("Seeds completed successfully");
|
|
265
289
|
} catch (error) {
|
|
266
|
-
spinner.fail(
|
|
290
|
+
spinner.fail("Seed failed");
|
|
267
291
|
console.error(chalk.red(error));
|
|
268
292
|
}
|
|
269
293
|
}
|
|
270
294
|
|
|
271
295
|
private static async createSeed(name: string): Promise<void> {
|
|
272
|
-
const spinner = ora(
|
|
296
|
+
const spinner = ora("Creating seed...").start();
|
|
273
297
|
|
|
274
298
|
try {
|
|
275
299
|
const fileName = `${name}.seed.ts`;
|
|
276
|
-
const filePath = path.join(process.cwd(),
|
|
300
|
+
const filePath = path.join(process.cwd(), "src", "seeds", fileName);
|
|
277
301
|
|
|
278
302
|
const content = `export default class ${name}Seed {
|
|
279
303
|
static async run() {
|
|
@@ -287,7 +311,7 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
287
311
|
|
|
288
312
|
spinner.succeed(`Seed created: ${fileName}`);
|
|
289
313
|
} catch (error) {
|
|
290
|
-
spinner.fail(
|
|
314
|
+
spinner.fail("Failed to create seed");
|
|
291
315
|
console.error(chalk.red(error));
|
|
292
316
|
}
|
|
293
317
|
}
|