@mikro-orm/cli 7.0.0-dev.1 → 7.0.0-dev.100
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/CLIConfigurator.d.ts +13 -13
- package/CLIConfigurator.js +68 -75
- package/CLIHelper.d.ts +36 -6
- package/CLIHelper.js +247 -47
- package/README.md +3 -2
- package/cli +7 -17
- package/cli.js +7 -17
- package/commands/ClearCacheCommand.d.ts +1 -1
- package/commands/ClearCacheCommand.js +6 -10
- package/commands/CreateDatabaseCommand.d.ts +1 -1
- package/commands/CreateDatabaseCommand.js +4 -9
- package/commands/CreateSeederCommand.d.ts +1 -1
- package/commands/CreateSeederCommand.js +6 -11
- package/commands/DatabaseSeedCommand.d.ts +1 -1
- package/commands/DatabaseSeedCommand.js +6 -10
- package/commands/DebugCommand.d.ts +1 -1
- package/commands/DebugCommand.js +35 -39
- package/commands/GenerateCacheCommand.d.ts +1 -1
- package/commands/GenerateCacheCommand.js +11 -15
- package/commands/GenerateEntitiesCommand.d.ts +1 -1
- package/commands/GenerateEntitiesCommand.js +5 -9
- package/commands/ImportCommand.d.ts +1 -1
- package/commands/ImportCommand.js +5 -9
- package/commands/MigrationCommandFactory.d.ts +1 -1
- package/commands/MigrationCommandFactory.js +38 -45
- package/commands/SchemaCommandFactory.d.ts +1 -1
- package/commands/SchemaCommandFactory.js +12 -20
- package/index.d.ts +2 -2
- package/index.js +2 -18
- package/package.json +8 -25
- package/esm +0 -18
- package/esm.cmd +0 -3
- package/esm.d.ts +0 -2
- package/esm.js +0 -18
- package/index.mjs +0 -5
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const core_1 = require("@mikro-orm/core");
|
|
5
|
-
const CLIHelper_1 = require("../CLIHelper");
|
|
6
|
-
class MigrationCommandFactory {
|
|
1
|
+
import { colors, Utils, } from '@mikro-orm/core';
|
|
2
|
+
import { CLIHelper } from '../CLIHelper.js';
|
|
3
|
+
export class MigrationCommandFactory {
|
|
7
4
|
static DESCRIPTIONS = {
|
|
8
5
|
create: 'Create new migration with current schema diff',
|
|
9
6
|
up: 'Migrate up to the latest version',
|
|
@@ -82,27 +79,26 @@ class MigrationCommandFactory {
|
|
|
82
79
|
static async handleMigrationCommand(args, method) {
|
|
83
80
|
// to be able to run have a master transaction, but run marked migrations outside of it, we need a second connection
|
|
84
81
|
const options = { pool: { min: 1, max: 2 } };
|
|
85
|
-
const orm = await
|
|
86
|
-
const migrator = orm.getMigrator();
|
|
82
|
+
const orm = await CLIHelper.getORM(args.contextName, args.config, options);
|
|
87
83
|
switch (method) {
|
|
88
84
|
case 'create':
|
|
89
|
-
await this.handleCreateCommand(migrator, args, orm.config);
|
|
85
|
+
await this.handleCreateCommand(orm.migrator, args, orm.config);
|
|
90
86
|
break;
|
|
91
87
|
case 'check':
|
|
92
|
-
await this.handleCheckCommand(migrator, orm);
|
|
88
|
+
await this.handleCheckCommand(orm.migrator, orm);
|
|
93
89
|
break;
|
|
94
90
|
case 'list':
|
|
95
|
-
await this.handleListCommand(migrator);
|
|
91
|
+
await this.handleListCommand(orm.migrator);
|
|
96
92
|
break;
|
|
97
93
|
case 'pending':
|
|
98
|
-
await this.handlePendingCommand(migrator);
|
|
94
|
+
await this.handlePendingCommand(orm.migrator);
|
|
99
95
|
break;
|
|
100
96
|
case 'up':
|
|
101
97
|
case 'down':
|
|
102
|
-
await this.handleUpDownCommand(args, migrator, method);
|
|
98
|
+
await this.handleUpDownCommand(args, orm.migrator, method);
|
|
103
99
|
break;
|
|
104
100
|
case 'fresh':
|
|
105
|
-
await this.handleFreshCommand(args, migrator, orm);
|
|
101
|
+
await this.handleFreshCommand(args, orm.migrator, orm);
|
|
106
102
|
}
|
|
107
103
|
await orm.close(true);
|
|
108
104
|
}
|
|
@@ -121,22 +117,22 @@ class MigrationCommandFactory {
|
|
|
121
117
|
const opts = MigrationCommandFactory.getUpDownOptions(args);
|
|
122
118
|
await migrator[method](opts);
|
|
123
119
|
const message = this.getUpDownSuccessMessage(method, opts);
|
|
124
|
-
|
|
120
|
+
CLIHelper.dump(colors.green(message));
|
|
125
121
|
}
|
|
126
122
|
static async handlePendingCommand(migrator) {
|
|
127
|
-
const pending = await migrator.
|
|
128
|
-
|
|
123
|
+
const pending = await migrator.getPending();
|
|
124
|
+
CLIHelper.dumpTable({
|
|
129
125
|
columns: ['Name'],
|
|
130
126
|
rows: pending.map(row => [row.name]),
|
|
131
127
|
empty: 'No pending migrations',
|
|
132
128
|
});
|
|
133
129
|
}
|
|
134
130
|
static async handleListCommand(migrator) {
|
|
135
|
-
const executed = await migrator.
|
|
136
|
-
|
|
131
|
+
const executed = await migrator.getExecuted();
|
|
132
|
+
CLIHelper.dumpTable({
|
|
137
133
|
columns: ['Name', 'Executed at'],
|
|
138
134
|
rows: executed.map(row => {
|
|
139
|
-
/*
|
|
135
|
+
/* v8 ignore next */
|
|
140
136
|
const executedAt = (row.executed_at ?? row.created_at)?.toISOString() ?? '';
|
|
141
137
|
return [row.name.replace(/\.[jt]s$/, ''), executedAt];
|
|
142
138
|
}),
|
|
@@ -144,46 +140,44 @@ class MigrationCommandFactory {
|
|
|
144
140
|
});
|
|
145
141
|
}
|
|
146
142
|
static async handleCreateCommand(migrator, args, config) {
|
|
147
|
-
const ret = await migrator.
|
|
143
|
+
const ret = await migrator.create(args.path, args.blank, args.initial, args.name);
|
|
148
144
|
if (ret.diff.up.length === 0) {
|
|
149
|
-
return
|
|
145
|
+
return CLIHelper.dump(colors.green(`No changes required, schema is up-to-date`));
|
|
150
146
|
}
|
|
151
147
|
if (args.dump) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
/*
|
|
148
|
+
CLIHelper.dump(colors.green('Creating migration with following queries:'));
|
|
149
|
+
CLIHelper.dump(colors.green('up:'));
|
|
150
|
+
CLIHelper.dump(ret.diff.up.map(sql => ' ' + sql).join('\n'), config);
|
|
151
|
+
/* v8 ignore if */
|
|
156
152
|
if (config.getDriver().getPlatform().supportsDownMigrations()) {
|
|
157
|
-
|
|
158
|
-
|
|
153
|
+
CLIHelper.dump(colors.green('down:'));
|
|
154
|
+
CLIHelper.dump(ret.diff.down.map(sql => ' ' + sql).join('\n'), config);
|
|
159
155
|
}
|
|
160
156
|
else {
|
|
161
|
-
|
|
157
|
+
CLIHelper.dump(colors.yellow(`(${config.getDriver().constructor.name} does not support automatic down migrations)`));
|
|
162
158
|
}
|
|
163
159
|
}
|
|
164
|
-
|
|
160
|
+
CLIHelper.dump(colors.green(`${ret.fileName} successfully created`));
|
|
165
161
|
}
|
|
166
162
|
static async handleCheckCommand(migrator, orm) {
|
|
167
|
-
if (!await migrator.
|
|
168
|
-
return
|
|
163
|
+
if (!(await migrator.checkSchema())) {
|
|
164
|
+
return CLIHelper.dump(colors.green(`No changes required, schema is up-to-date`));
|
|
169
165
|
}
|
|
170
166
|
await orm.close(true);
|
|
171
|
-
|
|
167
|
+
CLIHelper.dump(colors.yellow(`Changes detected. Please create migration to update schema.`));
|
|
172
168
|
process.exit(1);
|
|
173
169
|
}
|
|
174
170
|
static async handleFreshCommand(args, migrator, orm) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
CLIHelper_1.CLIHelper.dump(core_1.colors.green('Dropped schema successfully'));
|
|
171
|
+
await orm.schema.drop({ dropMigrationsTable: true, dropDb: args.dropDb });
|
|
172
|
+
CLIHelper.dump(colors.green('Dropped schema successfully'));
|
|
178
173
|
const opts = MigrationCommandFactory.getUpDownOptions(args);
|
|
179
174
|
await migrator.up(opts);
|
|
180
175
|
const message = this.getUpDownSuccessMessage('up', opts);
|
|
181
|
-
|
|
176
|
+
CLIHelper.dump(colors.green(message));
|
|
182
177
|
if (args.seed !== undefined) {
|
|
183
|
-
const seeder = orm.getSeeder();
|
|
184
178
|
const seederClass = args.seed || orm.config.get('seeder').defaultSeeder;
|
|
185
|
-
await seeder.seedString(seederClass);
|
|
186
|
-
|
|
179
|
+
await orm.seeder.seedString(seederClass);
|
|
180
|
+
CLIHelper.dump(colors.green(`Database seeded successfully with seeder class ${seederClass}`));
|
|
187
181
|
}
|
|
188
182
|
}
|
|
189
183
|
static getUpDownOptions(flags) {
|
|
@@ -196,23 +190,22 @@ class MigrationCommandFactory {
|
|
|
196
190
|
}
|
|
197
191
|
static getUpDownSuccessMessage(method, options) {
|
|
198
192
|
const msg = `Successfully migrated ${method}`;
|
|
199
|
-
if (method === 'down' &&
|
|
193
|
+
if (method === 'down' && Utils.isEmpty(options)) {
|
|
200
194
|
return msg + ' to previous version';
|
|
201
195
|
}
|
|
202
196
|
if (options.to === 0) {
|
|
203
197
|
const v = { down: 'first', up: 'latest' }[method];
|
|
204
198
|
return `${msg} to the ${v} version`;
|
|
205
199
|
}
|
|
206
|
-
if (method === 'up' &&
|
|
200
|
+
if (method === 'up' && Utils.isEmpty(options)) {
|
|
207
201
|
return msg + ' to the latest version';
|
|
208
202
|
}
|
|
209
|
-
if (
|
|
203
|
+
if (typeof options.to === 'string') {
|
|
210
204
|
return msg + ' to version ' + options.to;
|
|
211
205
|
}
|
|
212
|
-
if (options.migrations
|
|
206
|
+
if (options.migrations?.length === 1) {
|
|
213
207
|
return msg + ' to version ' + options.migrations[0];
|
|
214
208
|
}
|
|
215
209
|
return msg;
|
|
216
210
|
}
|
|
217
211
|
}
|
|
218
|
-
exports.MigrationCommandFactory = MigrationCommandFactory;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ArgumentsCamelCase, Argv } from 'yargs';
|
|
2
|
-
import type { BaseArgs } from '../CLIConfigurator';
|
|
2
|
+
import type { BaseArgs } from '../CLIConfigurator.js';
|
|
3
3
|
export declare class SchemaCommandFactory {
|
|
4
4
|
static readonly DESCRIPTIONS: {
|
|
5
5
|
readonly create: "Create database schema based on current metadata";
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const core_1 = require("@mikro-orm/core");
|
|
5
|
-
const CLIHelper_1 = require("../CLIHelper");
|
|
6
|
-
class SchemaCommandFactory {
|
|
1
|
+
import { colors } from '@mikro-orm/core';
|
|
2
|
+
import { CLIHelper } from '../CLIHelper.js';
|
|
3
|
+
export class SchemaCommandFactory {
|
|
7
4
|
static DESCRIPTIONS = {
|
|
8
5
|
create: 'Create database schema based on current metadata',
|
|
9
6
|
update: 'Update database schema based on current metadata',
|
|
@@ -80,17 +77,16 @@ class SchemaCommandFactory {
|
|
|
80
77
|
}
|
|
81
78
|
static async handleSchemaCommand(args, method, successMessage) {
|
|
82
79
|
if (!args.run && !args.dump) {
|
|
83
|
-
return
|
|
80
|
+
return CLIHelper.showHelp();
|
|
84
81
|
}
|
|
85
|
-
const orm = await
|
|
86
|
-
const generator = orm.getSchemaGenerator();
|
|
82
|
+
const orm = await CLIHelper.getORM(args.contextName, args.config);
|
|
87
83
|
const params = { wrap: args.fkChecks == null ? undefined : !args.fkChecks, ...args };
|
|
88
84
|
if (args.dump) {
|
|
89
85
|
const m = `get${method.substr(0, 1).toUpperCase()}${method.substr(1)}SchemaSQL`;
|
|
90
|
-
const dump = await
|
|
91
|
-
/*
|
|
86
|
+
const dump = await orm.schema[m](params);
|
|
87
|
+
/* v8 ignore if */
|
|
92
88
|
if (dump) {
|
|
93
|
-
|
|
89
|
+
CLIHelper.dump(dump, orm.config);
|
|
94
90
|
successMessage = '';
|
|
95
91
|
}
|
|
96
92
|
else {
|
|
@@ -98,19 +94,15 @@ class SchemaCommandFactory {
|
|
|
98
94
|
}
|
|
99
95
|
}
|
|
100
96
|
else if (method === 'fresh') {
|
|
101
|
-
await
|
|
102
|
-
await generator.createSchema(params);
|
|
97
|
+
await orm.schema.refresh(params);
|
|
103
98
|
}
|
|
104
99
|
else {
|
|
105
|
-
|
|
106
|
-
await generator[m](params);
|
|
100
|
+
await orm.schema[method](params);
|
|
107
101
|
}
|
|
108
102
|
if (typeof args.seed !== 'undefined') {
|
|
109
|
-
|
|
110
|
-
await seeder.seedString(args.seed || orm.config.get('seeder').defaultSeeder);
|
|
103
|
+
await orm.seeder.seedString(args.seed || orm.config.get('seeder').defaultSeeder);
|
|
111
104
|
}
|
|
112
|
-
|
|
105
|
+
CLIHelper.dump(colors.green(successMessage));
|
|
113
106
|
await orm.close(true);
|
|
114
107
|
}
|
|
115
108
|
}
|
|
116
|
-
exports.SchemaCommandFactory = SchemaCommandFactory;
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
1
|
/**
|
|
18
2
|
* @packageDocumentation
|
|
19
3
|
* @module cli
|
|
20
4
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
export * from './CLIHelper.js';
|
|
6
|
+
export * from './CLIConfigurator.js';
|
package/package.json
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/cli",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "7.0.0-dev.100",
|
|
4
5
|
"description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"module": "index.mjs",
|
|
7
|
-
"typings": "index.d.ts",
|
|
8
6
|
"exports": {
|
|
9
7
|
"./package.json": "./package.json",
|
|
10
|
-
".":
|
|
11
|
-
"import": {
|
|
12
|
-
"types": "./index.d.ts",
|
|
13
|
-
"default": "./index.mjs"
|
|
14
|
-
},
|
|
15
|
-
"require": "./index.js"
|
|
16
|
-
}
|
|
8
|
+
".": "./index.js"
|
|
17
9
|
},
|
|
18
10
|
"repository": {
|
|
19
11
|
"type": "git",
|
|
@@ -46,14 +38,13 @@
|
|
|
46
38
|
},
|
|
47
39
|
"homepage": "https://mikro-orm.io",
|
|
48
40
|
"bin": {
|
|
49
|
-
"mikro-orm": "./cli"
|
|
50
|
-
"mikro-orm-esm": "./esm"
|
|
41
|
+
"mikro-orm": "./cli"
|
|
51
42
|
},
|
|
52
43
|
"engines": {
|
|
53
|
-
"node": ">= 22.
|
|
44
|
+
"node": ">= 22.17.0"
|
|
54
45
|
},
|
|
55
46
|
"scripts": {
|
|
56
|
-
"build": "yarn clean && yarn compile && yarn copy
|
|
47
|
+
"build": "yarn clean && yarn compile && yarn copy",
|
|
57
48
|
"clean": "yarn run -T rimraf ./dist",
|
|
58
49
|
"compile": "yarn run -T tsc -p tsconfig.build.json",
|
|
59
50
|
"copy": "node ../../scripts/copy.mjs"
|
|
@@ -62,16 +53,8 @@
|
|
|
62
53
|
"access": "public"
|
|
63
54
|
},
|
|
64
55
|
"dependencies": {
|
|
65
|
-
"@
|
|
66
|
-
"
|
|
67
|
-
"@mikro-orm/knex": "7.0.0-dev.1",
|
|
68
|
-
"fs-extra": "11.3.0",
|
|
69
|
-
"tsconfig-paths": "4.2.0",
|
|
56
|
+
"@mikro-orm/core": "7.0.0-dev.100",
|
|
57
|
+
"mikro-orm": "7.0.0-dev.100",
|
|
70
58
|
"yargs": "17.7.2"
|
|
71
|
-
},
|
|
72
|
-
"devDependencies": {
|
|
73
|
-
"@mikro-orm/entity-generator": "^6.4.5",
|
|
74
|
-
"@mikro-orm/migrations": "^6.4.5",
|
|
75
|
-
"@mikro-orm/seeder": "^6.4.5"
|
|
76
59
|
}
|
|
77
60
|
}
|
package/esm
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
5
|
-
require('@jercle/yargonaut')
|
|
6
|
-
.style('blue')
|
|
7
|
-
.style('yellow', 'required')
|
|
8
|
-
.helpStyle('green')
|
|
9
|
-
.errorsStyle('red');
|
|
10
|
-
const CLIHelper_1 = require("./CLIHelper");
|
|
11
|
-
const CLIConfigurator_1 = require("./CLIConfigurator");
|
|
12
|
-
void (async () => {
|
|
13
|
-
const argv = CLIConfigurator_1.CLIConfigurator.configure();
|
|
14
|
-
const args = await argv.parse(process.argv.slice(2));
|
|
15
|
-
if (args._.length === 0) {
|
|
16
|
-
CLIHelper_1.CLIHelper.showHelp();
|
|
17
|
-
}
|
|
18
|
-
})();
|
package/esm.cmd
DELETED
package/esm.d.ts
DELETED
package/esm.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
5
|
-
require('@jercle/yargonaut')
|
|
6
|
-
.style('blue')
|
|
7
|
-
.style('yellow', 'required')
|
|
8
|
-
.helpStyle('green')
|
|
9
|
-
.errorsStyle('red');
|
|
10
|
-
const CLIHelper_1 = require("./CLIHelper");
|
|
11
|
-
const CLIConfigurator_1 = require("./CLIConfigurator");
|
|
12
|
-
void (async () => {
|
|
13
|
-
const argv = CLIConfigurator_1.CLIConfigurator.configure();
|
|
14
|
-
const args = await argv.parse(process.argv.slice(2));
|
|
15
|
-
if (args._.length === 0) {
|
|
16
|
-
CLIHelper_1.CLIHelper.showHelp();
|
|
17
|
-
}
|
|
18
|
-
})();
|