fragment-ts 1.0.7 → 1.0.8
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 +94 -69
- 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 +111 -77
|
@@ -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;mBAqFlB,iBAAiB;mBAsFjB,eAAe;mBA2Bf,aAAa;mBAab,eAAe;mBAaf,iBAAiB;mBAcjB,UAAU;mBAKV,UAAU;mBAaV,UAAU;mBAaV,QAAQ;mBA0BR,UAAU;CAuBhC"}
|
|
@@ -45,70 +45,70 @@ 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
|
-
.requiredOption(
|
|
63
|
-
.option(
|
|
60
|
+
.command("migrate:generate [nameOrPath]")
|
|
61
|
+
.description("Generate migration from schema changes")
|
|
62
|
+
.requiredOption("-d, --dataSource <path>", "Path to DataSource file")
|
|
63
|
+
.option("--name <name>", "Migration name")
|
|
64
64
|
.action(async (nameOrPath, options) => {
|
|
65
65
|
await this.generateMigration(nameOrPath, options);
|
|
66
66
|
});
|
|
67
67
|
program
|
|
68
|
-
.command(
|
|
69
|
-
.description(
|
|
68
|
+
.command("migrate:run")
|
|
69
|
+
.description("Run pending migrations")
|
|
70
70
|
.action(async () => {
|
|
71
71
|
await this.runMigrations();
|
|
72
72
|
});
|
|
73
73
|
program
|
|
74
|
-
.command(
|
|
75
|
-
.description(
|
|
74
|
+
.command("migrate:revert")
|
|
75
|
+
.description("Revert the last migration")
|
|
76
76
|
.action(async () => {
|
|
77
77
|
await this.revertMigration();
|
|
78
78
|
});
|
|
79
79
|
program
|
|
80
|
-
.command(
|
|
81
|
-
.description(
|
|
80
|
+
.command("migrate:refresh")
|
|
81
|
+
.description("Rollback all migrations and re-run them")
|
|
82
82
|
.action(async () => {
|
|
83
83
|
await this.refreshMigrations();
|
|
84
84
|
});
|
|
85
85
|
program
|
|
86
|
-
.command(
|
|
87
|
-
.description(
|
|
86
|
+
.command("migrate:status")
|
|
87
|
+
.description("Show migration status")
|
|
88
88
|
.action(async () => {
|
|
89
89
|
await this.showStatus();
|
|
90
90
|
});
|
|
91
91
|
program
|
|
92
|
-
.command(
|
|
93
|
-
.description(
|
|
92
|
+
.command("schema:sync")
|
|
93
|
+
.description("Synchronize database schema")
|
|
94
94
|
.action(async () => {
|
|
95
95
|
await this.syncSchema();
|
|
96
96
|
});
|
|
97
97
|
program
|
|
98
|
-
.command(
|
|
99
|
-
.description(
|
|
98
|
+
.command("schema:drop")
|
|
99
|
+
.description("Drop database schema")
|
|
100
100
|
.action(async () => {
|
|
101
101
|
await this.dropSchema();
|
|
102
102
|
});
|
|
103
103
|
program
|
|
104
|
-
.command(
|
|
105
|
-
.description(
|
|
104
|
+
.command("seed")
|
|
105
|
+
.description("Run database seeds")
|
|
106
106
|
.action(async () => {
|
|
107
107
|
await this.runSeeds();
|
|
108
108
|
});
|
|
109
109
|
program
|
|
110
|
-
.command(
|
|
111
|
-
.description(
|
|
110
|
+
.command("seed:create <name>")
|
|
111
|
+
.description("Create a new seed file")
|
|
112
112
|
.action(async (name) => {
|
|
113
113
|
await this.createSeed(name);
|
|
114
114
|
});
|
|
@@ -117,39 +117,64 @@ class MigrateCommand {
|
|
|
117
117
|
// MIGRATION GENERATE
|
|
118
118
|
// -----------------------------------------
|
|
119
119
|
static async generateMigration(nameOrPath, options) {
|
|
120
|
-
const spinner = (0, ora_1.default)(
|
|
120
|
+
const spinner = (0, ora_1.default)("Generating migration...").start();
|
|
121
121
|
try {
|
|
122
|
+
// 1️⃣ Resolve DataSource file path
|
|
122
123
|
const dataSourcePath = path.resolve(process.cwd(), options.dataSource);
|
|
123
124
|
if (!fs.existsSync(dataSourcePath)) {
|
|
124
125
|
throw new Error(`DataSource not found at ${dataSourcePath}`);
|
|
125
126
|
}
|
|
127
|
+
// 2️⃣ Import the DataSource dynamically
|
|
128
|
+
const imported = await Promise.resolve(`${dataSourcePath}`).then(s => __importStar(require(s)));
|
|
129
|
+
const dataSource = imported.default ?? imported.dataSource ?? imported.DataSource;
|
|
130
|
+
if (!dataSource) {
|
|
131
|
+
throw new Error(`No DataSource exported from ${dataSourcePath}. Make sure you export a default DataSource instance.`);
|
|
132
|
+
}
|
|
133
|
+
// 3️⃣ Initialize the DataSource
|
|
134
|
+
if (!dataSource.isInitialized) {
|
|
135
|
+
await dataSource.initialize();
|
|
136
|
+
}
|
|
137
|
+
// 4️⃣ Generate schema change SQL
|
|
138
|
+
const schemaBuilder = dataSource.driver.createSchemaBuilder();
|
|
139
|
+
const sqlLog = await schemaBuilder.log();
|
|
140
|
+
// 5️⃣ Check if there are any changes
|
|
141
|
+
if (sqlLog.upQueries.length === 0 && sqlLog.downQueries.length === 0) {
|
|
142
|
+
spinner.info("No schema changes detected. Migration not generated.");
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// 6️⃣ Determine migration name
|
|
146
|
+
const migrationName = options.name || (nameOrPath ? path.basename(nameOrPath) : "Migration");
|
|
126
147
|
const timestamp = Date.now();
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
148
|
+
// 7️⃣ Set migrations directory
|
|
149
|
+
const migrationsDir = path.join(process.cwd(), "src", "migrations");
|
|
150
|
+
// 8️⃣ Build SQL for up/down
|
|
151
|
+
const upSql = sqlLog.upQueries
|
|
152
|
+
.map((q) => `await queryRunner.query(\`${q.query}\`);`)
|
|
153
|
+
.join("\n");
|
|
154
|
+
const downSql = sqlLog.downQueries
|
|
155
|
+
.map((q) => `await queryRunner.query(\`${q.query}\`);`)
|
|
156
|
+
.join("\n");
|
|
157
|
+
// 9️⃣ Write the migration file
|
|
133
158
|
const fileName = `${timestamp}-${migrationName}.ts`;
|
|
134
159
|
const filePath = path.join(migrationsDir, fileName);
|
|
135
160
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
136
161
|
|
|
137
|
-
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
162
|
+
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
163
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
164
|
+
${upSql}
|
|
165
|
+
}
|
|
141
166
|
|
|
142
|
-
|
|
143
|
-
|
|
167
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
168
|
+
${downSql}
|
|
169
|
+
}
|
|
144
170
|
}
|
|
145
|
-
|
|
146
|
-
`;
|
|
171
|
+
`;
|
|
147
172
|
await fs.ensureDir(path.dirname(filePath));
|
|
148
173
|
await fs.writeFile(filePath, content);
|
|
149
|
-
spinner.succeed(`Migration generated: ${filePath}`);
|
|
174
|
+
spinner.succeed(`Migration generated successfully: ${filePath}`);
|
|
150
175
|
}
|
|
151
176
|
catch (error) {
|
|
152
|
-
spinner.fail(
|
|
177
|
+
spinner.fail("Migration generation failed");
|
|
153
178
|
console.error(chalk_1.default.red(error));
|
|
154
179
|
}
|
|
155
180
|
}
|
|
@@ -157,11 +182,11 @@ export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
|
157
182
|
// EXISTING METHODS
|
|
158
183
|
// -----------------------------------------
|
|
159
184
|
static async createMigration(name) {
|
|
160
|
-
const spinner = (0, ora_1.default)(
|
|
185
|
+
const spinner = (0, ora_1.default)("Creating migration...").start();
|
|
161
186
|
try {
|
|
162
187
|
const timestamp = Date.now();
|
|
163
188
|
const fileName = `${timestamp}-${name}.ts`;
|
|
164
|
-
const filePath = path.join(process.cwd(),
|
|
189
|
+
const filePath = path.join(process.cwd(), "src", "migrations", fileName);
|
|
165
190
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
166
191
|
|
|
167
192
|
export class ${name}${timestamp} implements MigrationInterface {
|
|
@@ -175,83 +200,83 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
175
200
|
spinner.succeed(`Migration created: ${fileName}`);
|
|
176
201
|
}
|
|
177
202
|
catch (error) {
|
|
178
|
-
spinner.fail(
|
|
203
|
+
spinner.fail("Failed to create migration");
|
|
179
204
|
console.error(chalk_1.default.red(error));
|
|
180
205
|
}
|
|
181
206
|
}
|
|
182
207
|
static async runMigrations() {
|
|
183
|
-
const spinner = (0, ora_1.default)(
|
|
208
|
+
const spinner = (0, ora_1.default)("Running migrations...").start();
|
|
184
209
|
try {
|
|
185
210
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
186
211
|
await typeorm_module_1.TypeORMModule.runMigrations();
|
|
187
|
-
spinner.succeed(
|
|
212
|
+
spinner.succeed("Migrations completed successfully");
|
|
188
213
|
}
|
|
189
214
|
catch (error) {
|
|
190
|
-
spinner.fail(
|
|
215
|
+
spinner.fail("Migration failed");
|
|
191
216
|
console.error(chalk_1.default.red(error));
|
|
192
217
|
}
|
|
193
218
|
}
|
|
194
219
|
static async revertMigration() {
|
|
195
|
-
const spinner = (0, ora_1.default)(
|
|
220
|
+
const spinner = (0, ora_1.default)("Reverting migration...").start();
|
|
196
221
|
try {
|
|
197
222
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
198
223
|
await typeorm_module_1.TypeORMModule.revertMigration();
|
|
199
|
-
spinner.succeed(
|
|
224
|
+
spinner.succeed("Migration reverted successfully");
|
|
200
225
|
}
|
|
201
226
|
catch (error) {
|
|
202
|
-
spinner.fail(
|
|
227
|
+
spinner.fail("Revert failed");
|
|
203
228
|
console.error(chalk_1.default.red(error));
|
|
204
229
|
}
|
|
205
230
|
}
|
|
206
231
|
static async refreshMigrations() {
|
|
207
|
-
const spinner = (0, ora_1.default)(
|
|
232
|
+
const spinner = (0, ora_1.default)("Refreshing migrations...").start();
|
|
208
233
|
try {
|
|
209
234
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
210
235
|
await typeorm_module_1.TypeORMModule.dropSchema();
|
|
211
236
|
await typeorm_module_1.TypeORMModule.runMigrations();
|
|
212
|
-
spinner.succeed(
|
|
237
|
+
spinner.succeed("Migrations refreshed successfully");
|
|
213
238
|
}
|
|
214
239
|
catch (error) {
|
|
215
|
-
spinner.fail(
|
|
240
|
+
spinner.fail("Refresh failed");
|
|
216
241
|
console.error(chalk_1.default.red(error));
|
|
217
242
|
}
|
|
218
243
|
}
|
|
219
244
|
static async showStatus() {
|
|
220
|
-
console.log(chalk_1.default.blue(
|
|
221
|
-
console.log(
|
|
245
|
+
console.log(chalk_1.default.blue("Migration Status:"));
|
|
246
|
+
console.log(" Implement status checking using TypeORM QueryRunner");
|
|
222
247
|
}
|
|
223
248
|
static async syncSchema() {
|
|
224
|
-
const spinner = (0, ora_1.default)(
|
|
249
|
+
const spinner = (0, ora_1.default)("Synchronizing schema...").start();
|
|
225
250
|
try {
|
|
226
251
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
227
252
|
await typeorm_module_1.TypeORMModule.syncSchema();
|
|
228
|
-
spinner.succeed(
|
|
253
|
+
spinner.succeed("Schema synchronized");
|
|
229
254
|
}
|
|
230
255
|
catch (error) {
|
|
231
|
-
spinner.fail(
|
|
256
|
+
spinner.fail("Sync failed");
|
|
232
257
|
console.error(chalk_1.default.red(error));
|
|
233
258
|
}
|
|
234
259
|
}
|
|
235
260
|
static async dropSchema() {
|
|
236
|
-
const spinner = (0, ora_1.default)(
|
|
261
|
+
const spinner = (0, ora_1.default)("Dropping schema...").start();
|
|
237
262
|
try {
|
|
238
263
|
await typeorm_module_1.TypeORMModule.initialize();
|
|
239
264
|
await typeorm_module_1.TypeORMModule.dropSchema();
|
|
240
|
-
spinner.succeed(
|
|
265
|
+
spinner.succeed("Schema dropped");
|
|
241
266
|
}
|
|
242
267
|
catch (error) {
|
|
243
|
-
spinner.fail(
|
|
268
|
+
spinner.fail("Drop failed");
|
|
244
269
|
console.error(chalk_1.default.red(error));
|
|
245
270
|
}
|
|
246
271
|
}
|
|
247
272
|
static async runSeeds() {
|
|
248
|
-
const spinner = (0, ora_1.default)(
|
|
273
|
+
const spinner = (0, ora_1.default)("Running seeds...").start();
|
|
249
274
|
try {
|
|
250
|
-
const seedsDir = path.join(process.cwd(),
|
|
275
|
+
const seedsDir = path.join(process.cwd(), "dist", "seeds");
|
|
251
276
|
if (fs.existsSync(seedsDir)) {
|
|
252
277
|
const files = fs.readdirSync(seedsDir);
|
|
253
278
|
for (const file of files) {
|
|
254
|
-
if (file.endsWith(
|
|
279
|
+
if (file.endsWith(".js")) {
|
|
255
280
|
const seedModule = require(path.join(seedsDir, file));
|
|
256
281
|
if (seedModule.default?.run) {
|
|
257
282
|
await seedModule.default.run();
|
|
@@ -259,18 +284,18 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
259
284
|
}
|
|
260
285
|
}
|
|
261
286
|
}
|
|
262
|
-
spinner.succeed(
|
|
287
|
+
spinner.succeed("Seeds completed successfully");
|
|
263
288
|
}
|
|
264
289
|
catch (error) {
|
|
265
|
-
spinner.fail(
|
|
290
|
+
spinner.fail("Seed failed");
|
|
266
291
|
console.error(chalk_1.default.red(error));
|
|
267
292
|
}
|
|
268
293
|
}
|
|
269
294
|
static async createSeed(name) {
|
|
270
|
-
const spinner = (0, ora_1.default)(
|
|
295
|
+
const spinner = (0, ora_1.default)("Creating seed...").start();
|
|
271
296
|
try {
|
|
272
297
|
const fileName = `${name}.seed.ts`;
|
|
273
|
-
const filePath = path.join(process.cwd(),
|
|
298
|
+
const filePath = path.join(process.cwd(), "src", "seeds", fileName);
|
|
274
299
|
const content = `export default class ${name}Seed {
|
|
275
300
|
static async run() {
|
|
276
301
|
console.log('Running ${name} seed...');
|
|
@@ -282,7 +307,7 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
282
307
|
spinner.succeed(`Seed created: ${fileName}`);
|
|
283
308
|
}
|
|
284
309
|
catch (error) {
|
|
285
|
-
spinner.fail(
|
|
310
|
+
spinner.fail("Failed to create seed");
|
|
286
311
|
console.error(chalk_1.default.red(error));
|
|
287
312
|
}
|
|
288
313
|
}
|
|
@@ -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,88 @@
|
|
|
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
|
-
.requiredOption(
|
|
28
|
-
.option(
|
|
26
|
+
.command("migrate:generate [nameOrPath]")
|
|
27
|
+
.description("Generate migration from schema changes")
|
|
28
|
+
.requiredOption("-d, --dataSource <path>", "Path to DataSource file")
|
|
29
|
+
.option("--name <name>", "Migration name")
|
|
29
30
|
.action(async (nameOrPath, options) => {
|
|
30
31
|
await this.generateMigration(nameOrPath, options);
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
program
|
|
34
|
-
.command(
|
|
35
|
-
.description(
|
|
35
|
+
.command("migrate:run")
|
|
36
|
+
.description("Run pending migrations")
|
|
36
37
|
.action(async () => {
|
|
37
38
|
await this.runMigrations();
|
|
38
39
|
});
|
|
39
40
|
|
|
40
41
|
program
|
|
41
|
-
.command(
|
|
42
|
-
.description(
|
|
42
|
+
.command("migrate:revert")
|
|
43
|
+
.description("Revert the last migration")
|
|
43
44
|
.action(async () => {
|
|
44
45
|
await this.revertMigration();
|
|
45
46
|
});
|
|
46
47
|
|
|
47
48
|
program
|
|
48
|
-
.command(
|
|
49
|
-
.description(
|
|
49
|
+
.command("migrate:refresh")
|
|
50
|
+
.description("Rollback all migrations and re-run them")
|
|
50
51
|
.action(async () => {
|
|
51
52
|
await this.refreshMigrations();
|
|
52
53
|
});
|
|
53
54
|
|
|
54
55
|
program
|
|
55
|
-
.command(
|
|
56
|
-
.description(
|
|
56
|
+
.command("migrate:status")
|
|
57
|
+
.description("Show migration status")
|
|
57
58
|
.action(async () => {
|
|
58
59
|
await this.showStatus();
|
|
59
60
|
});
|
|
60
61
|
|
|
61
62
|
program
|
|
62
|
-
.command(
|
|
63
|
-
.description(
|
|
63
|
+
.command("schema:sync")
|
|
64
|
+
.description("Synchronize database schema")
|
|
64
65
|
.action(async () => {
|
|
65
66
|
await this.syncSchema();
|
|
66
67
|
});
|
|
67
68
|
|
|
68
69
|
program
|
|
69
|
-
.command(
|
|
70
|
-
.description(
|
|
70
|
+
.command("schema:drop")
|
|
71
|
+
.description("Drop database schema")
|
|
71
72
|
.action(async () => {
|
|
72
73
|
await this.dropSchema();
|
|
73
74
|
});
|
|
74
75
|
|
|
75
76
|
program
|
|
76
|
-
.command(
|
|
77
|
-
.description(
|
|
77
|
+
.command("seed")
|
|
78
|
+
.description("Run database seeds")
|
|
78
79
|
.action(async () => {
|
|
79
80
|
await this.runSeeds();
|
|
80
81
|
});
|
|
81
82
|
|
|
82
83
|
program
|
|
83
|
-
.command(
|
|
84
|
-
.description(
|
|
84
|
+
.command("seed:create <name>")
|
|
85
|
+
.description("Create a new seed file")
|
|
85
86
|
.action(async (name) => {
|
|
86
87
|
await this.createSeed(name);
|
|
87
88
|
});
|
|
@@ -93,49 +94,82 @@ export class MigrateCommand {
|
|
|
93
94
|
|
|
94
95
|
private static async generateMigration(
|
|
95
96
|
nameOrPath: string | undefined,
|
|
96
|
-
options: { dataSource: string; name?: string }
|
|
97
|
+
options: { dataSource: string; name?: string },
|
|
97
98
|
): Promise<void> {
|
|
98
|
-
const spinner = ora(
|
|
99
|
+
const spinner = ora("Generating migration...").start();
|
|
99
100
|
|
|
100
101
|
try {
|
|
102
|
+
// 1️⃣ Resolve DataSource file path
|
|
101
103
|
const dataSourcePath = path.resolve(process.cwd(), options.dataSource);
|
|
102
104
|
if (!fs.existsSync(dataSourcePath)) {
|
|
103
105
|
throw new Error(`DataSource not found at ${dataSourcePath}`);
|
|
104
106
|
}
|
|
105
107
|
|
|
106
|
-
|
|
108
|
+
// 2️⃣ Import the DataSource dynamically
|
|
109
|
+
const imported = await import(dataSourcePath);
|
|
110
|
+
const dataSource: DataSource =
|
|
111
|
+
imported.default ?? imported.dataSource ?? imported.DataSource;
|
|
112
|
+
|
|
113
|
+
if (!dataSource) {
|
|
114
|
+
throw new Error(
|
|
115
|
+
`No DataSource exported from ${dataSourcePath}. Make sure you export a default DataSource instance.`,
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// 3️⃣ Initialize the DataSource
|
|
120
|
+
if (!dataSource.isInitialized) {
|
|
121
|
+
await dataSource.initialize();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 4️⃣ Generate schema change SQL
|
|
125
|
+
const schemaBuilder = dataSource.driver.createSchemaBuilder();
|
|
126
|
+
const sqlLog = await schemaBuilder.log();
|
|
127
|
+
|
|
128
|
+
// 5️⃣ Check if there are any changes
|
|
129
|
+
if (sqlLog.upQueries.length === 0 && sqlLog.downQueries.length === 0) {
|
|
130
|
+
spinner.info("No schema changes detected. Migration not generated.");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// 6️⃣ Determine migration name
|
|
107
135
|
const migrationName =
|
|
108
|
-
options.name ||
|
|
109
|
-
|
|
136
|
+
options.name || (nameOrPath ? path.basename(nameOrPath) : "Migration");
|
|
137
|
+
const timestamp = Date.now();
|
|
110
138
|
|
|
111
|
-
|
|
139
|
+
// 7️⃣ Set migrations directory
|
|
140
|
+
const migrationsDir = path.join(process.cwd(), "src", "migrations");
|
|
112
141
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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");
|
|
116
149
|
|
|
150
|
+
// 9️⃣ Write the migration file
|
|
117
151
|
const fileName = `${timestamp}-${migrationName}.ts`;
|
|
118
152
|
const filePath = path.join(migrationsDir, fileName);
|
|
119
153
|
|
|
120
154
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
121
155
|
|
|
122
|
-
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
156
|
+
export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
157
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
158
|
+
${upSql}
|
|
159
|
+
}
|
|
126
160
|
|
|
127
|
-
|
|
128
|
-
|
|
161
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
162
|
+
${downSql}
|
|
163
|
+
}
|
|
129
164
|
}
|
|
130
|
-
|
|
131
|
-
`;
|
|
165
|
+
`;
|
|
132
166
|
|
|
133
167
|
await fs.ensureDir(path.dirname(filePath));
|
|
134
168
|
await fs.writeFile(filePath, content);
|
|
135
169
|
|
|
136
|
-
spinner.succeed(`Migration generated: ${filePath}`);
|
|
170
|
+
spinner.succeed(`Migration generated successfully: ${filePath}`);
|
|
137
171
|
} catch (error) {
|
|
138
|
-
spinner.fail(
|
|
172
|
+
spinner.fail("Migration generation failed");
|
|
139
173
|
console.error(chalk.red(error));
|
|
140
174
|
}
|
|
141
175
|
}
|
|
@@ -145,12 +179,12 @@ export class ${migrationName}${timestamp} implements MigrationInterface {
|
|
|
145
179
|
// -----------------------------------------
|
|
146
180
|
|
|
147
181
|
private static async createMigration(name: string): Promise<void> {
|
|
148
|
-
const spinner = ora(
|
|
182
|
+
const spinner = ora("Creating migration...").start();
|
|
149
183
|
|
|
150
184
|
try {
|
|
151
185
|
const timestamp = Date.now();
|
|
152
186
|
const fileName = `${timestamp}-${name}.ts`;
|
|
153
|
-
const filePath = path.join(process.cwd(),
|
|
187
|
+
const filePath = path.join(process.cwd(), "src", "migrations", fileName);
|
|
154
188
|
|
|
155
189
|
const content = `import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
156
190
|
|
|
@@ -166,93 +200,93 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
166
200
|
|
|
167
201
|
spinner.succeed(`Migration created: ${fileName}`);
|
|
168
202
|
} catch (error) {
|
|
169
|
-
spinner.fail(
|
|
203
|
+
spinner.fail("Failed to create migration");
|
|
170
204
|
console.error(chalk.red(error));
|
|
171
205
|
}
|
|
172
206
|
}
|
|
173
207
|
|
|
174
208
|
private static async runMigrations(): Promise<void> {
|
|
175
|
-
const spinner = ora(
|
|
209
|
+
const spinner = ora("Running migrations...").start();
|
|
176
210
|
|
|
177
211
|
try {
|
|
178
212
|
await TypeORMModule.initialize();
|
|
179
213
|
await TypeORMModule.runMigrations();
|
|
180
|
-
spinner.succeed(
|
|
214
|
+
spinner.succeed("Migrations completed successfully");
|
|
181
215
|
} catch (error) {
|
|
182
|
-
spinner.fail(
|
|
216
|
+
spinner.fail("Migration failed");
|
|
183
217
|
console.error(chalk.red(error));
|
|
184
218
|
}
|
|
185
219
|
}
|
|
186
220
|
|
|
187
221
|
private static async revertMigration(): Promise<void> {
|
|
188
|
-
const spinner = ora(
|
|
222
|
+
const spinner = ora("Reverting migration...").start();
|
|
189
223
|
|
|
190
224
|
try {
|
|
191
225
|
await TypeORMModule.initialize();
|
|
192
226
|
await TypeORMModule.revertMigration();
|
|
193
|
-
spinner.succeed(
|
|
227
|
+
spinner.succeed("Migration reverted successfully");
|
|
194
228
|
} catch (error) {
|
|
195
|
-
spinner.fail(
|
|
229
|
+
spinner.fail("Revert failed");
|
|
196
230
|
console.error(chalk.red(error));
|
|
197
231
|
}
|
|
198
232
|
}
|
|
199
233
|
|
|
200
234
|
private static async refreshMigrations(): Promise<void> {
|
|
201
|
-
const spinner = ora(
|
|
235
|
+
const spinner = ora("Refreshing migrations...").start();
|
|
202
236
|
|
|
203
237
|
try {
|
|
204
238
|
await TypeORMModule.initialize();
|
|
205
239
|
await TypeORMModule.dropSchema();
|
|
206
240
|
await TypeORMModule.runMigrations();
|
|
207
|
-
spinner.succeed(
|
|
241
|
+
spinner.succeed("Migrations refreshed successfully");
|
|
208
242
|
} catch (error) {
|
|
209
|
-
spinner.fail(
|
|
243
|
+
spinner.fail("Refresh failed");
|
|
210
244
|
console.error(chalk.red(error));
|
|
211
245
|
}
|
|
212
246
|
}
|
|
213
247
|
|
|
214
248
|
private static async showStatus(): Promise<void> {
|
|
215
|
-
console.log(chalk.blue(
|
|
216
|
-
console.log(
|
|
249
|
+
console.log(chalk.blue("Migration Status:"));
|
|
250
|
+
console.log(" Implement status checking using TypeORM QueryRunner");
|
|
217
251
|
}
|
|
218
252
|
|
|
219
253
|
private static async syncSchema(): Promise<void> {
|
|
220
|
-
const spinner = ora(
|
|
254
|
+
const spinner = ora("Synchronizing schema...").start();
|
|
221
255
|
|
|
222
256
|
try {
|
|
223
257
|
await TypeORMModule.initialize();
|
|
224
258
|
await TypeORMModule.syncSchema();
|
|
225
|
-
spinner.succeed(
|
|
259
|
+
spinner.succeed("Schema synchronized");
|
|
226
260
|
} catch (error) {
|
|
227
|
-
spinner.fail(
|
|
261
|
+
spinner.fail("Sync failed");
|
|
228
262
|
console.error(chalk.red(error));
|
|
229
263
|
}
|
|
230
264
|
}
|
|
231
265
|
|
|
232
266
|
private static async dropSchema(): Promise<void> {
|
|
233
|
-
const spinner = ora(
|
|
267
|
+
const spinner = ora("Dropping schema...").start();
|
|
234
268
|
|
|
235
269
|
try {
|
|
236
270
|
await TypeORMModule.initialize();
|
|
237
271
|
await TypeORMModule.dropSchema();
|
|
238
|
-
spinner.succeed(
|
|
272
|
+
spinner.succeed("Schema dropped");
|
|
239
273
|
} catch (error) {
|
|
240
|
-
spinner.fail(
|
|
274
|
+
spinner.fail("Drop failed");
|
|
241
275
|
console.error(chalk.red(error));
|
|
242
276
|
}
|
|
243
277
|
}
|
|
244
278
|
|
|
245
279
|
private static async runSeeds(): Promise<void> {
|
|
246
|
-
const spinner = ora(
|
|
280
|
+
const spinner = ora("Running seeds...").start();
|
|
247
281
|
|
|
248
282
|
try {
|
|
249
|
-
const seedsDir = path.join(process.cwd(),
|
|
283
|
+
const seedsDir = path.join(process.cwd(), "dist", "seeds");
|
|
250
284
|
|
|
251
285
|
if (fs.existsSync(seedsDir)) {
|
|
252
286
|
const files = fs.readdirSync(seedsDir);
|
|
253
287
|
|
|
254
288
|
for (const file of files) {
|
|
255
|
-
if (file.endsWith(
|
|
289
|
+
if (file.endsWith(".js")) {
|
|
256
290
|
const seedModule = require(path.join(seedsDir, file));
|
|
257
291
|
if (seedModule.default?.run) {
|
|
258
292
|
await seedModule.default.run();
|
|
@@ -261,19 +295,19 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
261
295
|
}
|
|
262
296
|
}
|
|
263
297
|
|
|
264
|
-
spinner.succeed(
|
|
298
|
+
spinner.succeed("Seeds completed successfully");
|
|
265
299
|
} catch (error) {
|
|
266
|
-
spinner.fail(
|
|
300
|
+
spinner.fail("Seed failed");
|
|
267
301
|
console.error(chalk.red(error));
|
|
268
302
|
}
|
|
269
303
|
}
|
|
270
304
|
|
|
271
305
|
private static async createSeed(name: string): Promise<void> {
|
|
272
|
-
const spinner = ora(
|
|
306
|
+
const spinner = ora("Creating seed...").start();
|
|
273
307
|
|
|
274
308
|
try {
|
|
275
309
|
const fileName = `${name}.seed.ts`;
|
|
276
|
-
const filePath = path.join(process.cwd(),
|
|
310
|
+
const filePath = path.join(process.cwd(), "src", "seeds", fileName);
|
|
277
311
|
|
|
278
312
|
const content = `export default class ${name}Seed {
|
|
279
313
|
static async run() {
|
|
@@ -287,7 +321,7 @@ export class ${name}${timestamp} implements MigrationInterface {
|
|
|
287
321
|
|
|
288
322
|
spinner.succeed(`Seed created: ${fileName}`);
|
|
289
323
|
} catch (error) {
|
|
290
|
-
spinner.fail(
|
|
324
|
+
spinner.fail("Failed to create seed");
|
|
291
325
|
console.error(chalk.red(error));
|
|
292
326
|
}
|
|
293
327
|
}
|