@axiosleo/orm-mysql 0.13.0 → 0.13.2

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/bin/orm-mysql.js CHANGED
@@ -9,7 +9,7 @@ const app = new App({
9
9
  name: 'MySQL ORM CLI',
10
10
  desc: 'migrate, model, seed, etc.',
11
11
  bin: 'orm-mysql',
12
- version: '0.13.0',
12
+ version: '0.13.2',
13
13
  commands_dir: path.join(__dirname, '../commands'),
14
14
  });
15
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiosleo/orm-mysql",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "MySQL ORM tool",
5
5
  "keywords": [
6
6
  "mysql",
package/src/builder.js CHANGED
@@ -583,25 +583,27 @@ class ManageSQLBuilder extends Builder {
583
583
  }
584
584
 
585
585
  createForeignKey(options) {
586
- options.reference.onDelete = options.reference.onDelete ? options.reference.onDelete.toUpperCase() : 'NO ACTION';
587
- options.reference.onUpdate = options.reference.onUpdate ? options.reference.onUpdate.toUpperCase() : 'NO ACTION';
586
+ if (options.references) {
587
+ options.references.onDelete = options.references.onDelete ? options.references.onDelete.toUpperCase() : 'NO ACTION';
588
+ options.references.onUpdate = options.references.onUpdate ? options.references.onUpdate.toUpperCase() : 'NO ACTION';
589
+ }
588
590
  _validate(options, {
589
591
  name: 'required|string',
590
592
  table: 'required|string',
591
593
  column: 'required|string',
592
- 'reference.tableName': 'required|string',
593
- 'reference.columnName': 'required|string',
594
- 'reference.onUpdate': [{ in: ['RESTRICT', 'CASCADE', 'SET NULL', 'NO ACTION'] }],
595
- 'reference.onDelete': [{ in: ['RESTRICT', 'CASCADE', 'SET NULL', 'NO ACTION'] }]
594
+ 'references.tableName': 'required|string',
595
+ 'references.columnName': 'required|string',
596
+ 'references.onUpdate': [{ in: ['RESTRICT', 'CASCADE', 'SET NULL', 'NO ACTION'] }],
597
+ 'references.onDelete': [{ in: ['RESTRICT', 'CASCADE', 'SET NULL', 'NO ACTION'] }]
596
598
  });
597
599
  return _render('ALTER TABLE `${table_name}` ADD CONSTRAINT `${name}` FOREIGN KEY (`${column_name}`) REFERENCES `${foreign_table}` (`${foreign_column}`) ON DELETE ${on_delete} ON UPDATE ${on_update}', {
598
600
  table_name: options.tableName,
599
601
  name: options.name,
600
602
  column_name: options.columnName,
601
- foreign_table: options.reference.tableName,
602
- foreign_column: options.reference.columnName,
603
- on_delete: options.reference.onDelete || 'NO ACTION',
604
- on_update: options.reference.onUpdate || 'NO ACTION',
603
+ foreign_table: options.references.tableName,
604
+ foreign_column: options.references.columnName,
605
+ on_delete: options.references.onDelete || 'NO ACTION',
606
+ on_update: options.references.onUpdate || 'NO ACTION',
605
607
  });
606
608
  }
607
609
 
@@ -657,11 +659,14 @@ class ManageSQLBuilder extends Builder {
657
659
  } else if (column.uniqIndex === true) {
658
660
  indexColumns.push(column);
659
661
  }
660
- if (column.reference) {
661
- column.reference.onDelete = column.reference.onDelete ? column.reference.onDelete.toUpperCase() : 'NO ACTION';
662
- column.reference.onUpdate = column.reference.onUpdate ? column.reference.onUpdate.toUpperCase() : 'NO ACTION';
662
+ if (column.reference && !column.references) {
663
+ column.references = column.reference;
664
+ }
665
+ if (column.references) {
666
+ column.references.onDelete = column.references.onDelete ? column.references.onDelete.toUpperCase() : 'NO ACTION';
667
+ column.references.onUpdate = column.references.onUpdate ? column.references.onUpdate.toUpperCase() : 'NO ACTION';
663
668
 
664
- _validate(column.reference, {
669
+ _validate(column.references, {
665
670
  table: 'required|string',
666
671
  column: 'required|string',
667
672
  onDelete: [{ in: ['RESTRICT', 'CASCADE', 'SET NULL', 'NO ACTION'] }],
@@ -671,11 +676,11 @@ class ManageSQLBuilder extends Builder {
671
676
  name: 'fk_' + table + '_' + column.name,
672
677
  table,
673
678
  column: column.name,
674
- reference: {
675
- tableName: column.reference.table,
676
- columnName: column.reference.column,
677
- onDelete: column.reference.onDelete,
678
- onUpdate: column.reference.onUpdate
679
+ references: {
680
+ tableName: column.references.table,
681
+ columnName: column.references.column,
682
+ onDelete: column.references.onDelete,
683
+ onUpdate: column.references.onUpdate
679
684
  }
680
685
  });
681
686
  }
package/src/migration.js CHANGED
@@ -9,7 +9,7 @@ const { _execSQL } = require('./core');
9
9
  const { _render } = require('@axiosleo/cli-tool/src/helper/str');
10
10
  const { _foreach } = require('@axiosleo/cli-tool/src/helper/cmd');
11
11
  const { _assign } = require('@axiosleo/cli-tool/src/helper/obj');
12
- const { TransactionHandler } = require('..');
12
+ const { TransactionHandler } = require('./transaction');
13
13
  const { ManageSQLBuilder, Builder } = require('./builder');
14
14
 
15
15
  const migrationColumns = [
@@ -81,7 +81,13 @@ async function init(context) {
81
81
  context.pool = conn;
82
82
 
83
83
  handler = new QueryHandler(conn);
84
+ context.items = {};
84
85
  if (await handler.existTable(context.task_key, database)) {
86
+ printer.yellow('table ' + context.task_key + ' already exists').println();
87
+ const items = await handler.table(context.task_key).select();
88
+ items.forEach(item => {
89
+ context.items[item.filename] = true;
90
+ });
85
91
  conn.end();
86
92
  return;
87
93
  }
@@ -227,7 +233,7 @@ function _initMigration(file, queries = {}) {
227
233
  name: options.foreignKey ? options.foreignKey : 'fk_' + table + '_' + options.columnName,
228
234
  table: table,
229
235
  column: options.columnName,
230
- reference: options.reference
236
+ references: options.references || options.reference // 兼容性处理
231
237
  });
232
238
  const builder = new ManageSQLBuilder(options);
233
239
  queries[file].push({ sql: builder.sql, values: builder.values });
@@ -321,6 +327,12 @@ async function run(context) {
321
327
  const { files } = context;
322
328
  const queries = {};
323
329
  await _foreach(files, async (file) => {
330
+ if (context.action === 'up' && context.items[file]) {
331
+ printer.yellow(`Migration file "${file}" has been migrated.`).println();
332
+ return;
333
+ } else if (context.action === 'down' && !context.items[file]) {
334
+ return;
335
+ }
324
336
  const scriptPath = path.join(context.config.dir, file);
325
337
  const script = require(scriptPath);
326
338
  queries[file] = [];