dbgate-tools 6.1.1 → 6.1.3

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.
@@ -21,7 +21,16 @@ const getLogger_1 = require("./getLogger");
21
21
  const schemaInfoTools_1 = require("./schemaInfoTools");
22
22
  const stringTools_1 = require("./stringTools");
23
23
  const logger = (0, getLogger_1.getLogger)('dbAnalyser');
24
- const STRUCTURE_FIELDS = ['tables', 'collections', 'views', 'matviews', 'functions', 'procedures', 'triggers'];
24
+ const STRUCTURE_FIELDS = [
25
+ 'tables',
26
+ 'collections',
27
+ 'views',
28
+ 'matviews',
29
+ 'functions',
30
+ 'procedures',
31
+ 'triggers',
32
+ 'schedulerEvents',
33
+ ];
25
34
  const fp_pick = arg => array => (0, pick_1.default)(array, arg);
26
35
  function mergeTableRowCounts(info, rowCounts) {
27
36
  return Object.assign(Object.assign({}, info), { tables: (info.tables || []).map(table => {
@@ -241,6 +250,7 @@ class DatabaseAnalyser {
241
250
  ...this.getDeletedObjectsForField(snapshot, 'procedures'),
242
251
  ...this.getDeletedObjectsForField(snapshot, 'functions'),
243
252
  ...this.getDeletedObjectsForField(snapshot, 'triggers'),
253
+ ...this.getDeletedObjectsForField(snapshot, 'schedulerEvents'),
244
254
  ];
245
255
  }
246
256
  feedback(obj) {
@@ -336,6 +346,7 @@ class DatabaseAnalyser {
336
346
  functions: [],
337
347
  procedures: [],
338
348
  triggers: [],
349
+ schedulerEvents: [],
339
350
  };
340
351
  }
341
352
  static byTableFilter(table) {
@@ -1,4 +1,4 @@
1
- import type { ColumnInfo, ConstraintInfo, EngineDriver, ForeignKeyInfo, FunctionInfo, NamedObjectInfo, PrimaryKeyInfo, ProcedureInfo, SqlDialect, TableInfo, TransformType, TriggerInfo, ViewInfo, IndexInfo, UniqueInfo, CheckInfo, AlterProcessor, SqlObjectInfo, CallableObjectInfo } from 'dbgate-types';
1
+ import type { ColumnInfo, ConstraintInfo, EngineDriver, ForeignKeyInfo, FunctionInfo, NamedObjectInfo, PrimaryKeyInfo, ProcedureInfo, SqlDialect, TableInfo, TransformType, TriggerInfo, ViewInfo, IndexInfo, UniqueInfo, CheckInfo, AlterProcessor, SqlObjectInfo, CallableObjectInfo, SchedulerEventInfo } from 'dbgate-types';
2
2
  export declare class SqlDumper implements AlterProcessor {
3
3
  s: string;
4
4
  driver: EngineDriver;
@@ -75,6 +75,10 @@ export declare class SqlDumper implements AlterProcessor {
75
75
  alterTrigger(obj: TriggerInfo): void;
76
76
  changeTriggerSchema(obj: TriggerInfo, newSchema: string): void;
77
77
  renameTrigger(obj: TriggerInfo, newSchema: string): void;
78
+ createSchedulerEvent(obj: SchedulerEventInfo): void;
79
+ dropSchedulerEvent(obj: SchedulerEventInfo, { testIfExists }: {
80
+ testIfExists?: boolean;
81
+ }): void;
78
82
  dropConstraintCore(cnt: ConstraintInfo): void;
79
83
  dropConstraint(cnt: ConstraintInfo): void;
80
84
  createConstraint(cnt: ConstraintInfo): void;
@@ -113,7 +117,7 @@ export declare class SqlDumper implements AlterProcessor {
113
117
  dropConstraints(table: TableInfo, dropReferences?: boolean): void;
114
118
  recreateTable(oldTable: TableInfo, newTable: TableInfo): void;
115
119
  createSqlObject(obj: SqlObjectInfo): void;
116
- getSqlObjectSqlName(ojectTypeField: string): "PROCEDURE" | "VIEW" | "FUNCTION" | "TRIGGER" | "MATERIALIZED VIEW";
120
+ getSqlObjectSqlName(ojectTypeField: string): "PROCEDURE" | "VIEW" | "FUNCTION" | "TRIGGER" | "MATERIALIZED VIEW" | "EVENT";
117
121
  dropSqlObject(obj: SqlObjectInfo): void;
118
122
  setTableOption(table: TableInfo, optionName: string, optionValue: string): void;
119
123
  setTableOptionCore(table: TableInfo, optionName: string, optionValue: string, formatString: string): void;
package/lib/SqlDumper.js CHANGED
@@ -392,6 +392,13 @@ class SqlDumper {
392
392
  }
393
393
  changeTriggerSchema(obj, newSchema) { }
394
394
  renameTrigger(obj, newSchema) { }
395
+ createSchedulerEvent(obj) {
396
+ this.putRaw(obj.createSql);
397
+ this.endCommand();
398
+ }
399
+ dropSchedulerEvent(obj, { testIfExists = false }) {
400
+ this.putCmd('^drop ^event %f', obj);
401
+ }
395
402
  dropConstraintCore(cnt) {
396
403
  this.putCmd('^alter ^table %f ^drop ^constraint %i', cnt, cnt.constraintName);
397
404
  }
@@ -617,6 +624,8 @@ class SqlDumper {
617
624
  return 'TRIGGER';
618
625
  case 'matviews':
619
626
  return 'MATERIALIZED VIEW';
627
+ case 'schedulerEvents':
628
+ return 'EVENT';
620
629
  }
621
630
  }
622
631
  dropSqlObject(obj) {
@@ -28,11 +28,14 @@ interface SqlGeneratorOptions {
28
28
  dropTriggers: boolean;
29
29
  checkIfTriggerExists: boolean;
30
30
  createTriggers: boolean;
31
+ dropSchedulerEvents: boolean;
32
+ checkIfSchedulerEventExists: boolean;
33
+ createSchedulerEvents: boolean;
31
34
  }
32
35
  interface SqlGeneratorObject {
33
36
  schemaName: string;
34
37
  pureName: string;
35
- objectTypeField: 'tables' | 'views' | 'procedures' | 'functions';
38
+ objectTypeField: 'tables' | 'views' | 'procedures' | 'functions' | 'triggers' | 'schedulerEvents';
36
39
  }
37
40
  export declare class SqlGenerator {
38
41
  options: SqlGeneratorOptions;
@@ -46,6 +49,7 @@ export declare class SqlGenerator {
46
49
  private procedures;
47
50
  private functions;
48
51
  private triggers;
52
+ private schedulerEvents;
49
53
  dbinfo: DatabaseInfo;
50
54
  isTruncated: boolean;
51
55
  isUnhandledException: boolean;
@@ -39,6 +39,7 @@ class SqlGenerator {
39
39
  this.procedures = this.extract('procedures');
40
40
  this.functions = this.extract('functions');
41
41
  this.triggers = this.extract('triggers');
42
+ this.schedulerEvents = this.extract('schedulerEvents');
42
43
  }
43
44
  dump() {
44
45
  return __awaiter(this, void 0, void 0, function* () {
@@ -57,6 +58,9 @@ class SqlGenerator {
57
58
  if (this.checkDumper())
58
59
  return;
59
60
  this.dropObjects(this.triggers, 'Trigger');
61
+ if (this.checkDumper())
62
+ return;
63
+ this.dropObjects(this.schedulerEvents, 'SchedulerEvent');
60
64
  if (this.checkDumper())
61
65
  return;
62
66
  this.dropTables();
@@ -89,6 +93,9 @@ class SqlGenerator {
89
93
  this.createObjects(this.triggers, 'Trigger');
90
94
  if (this.checkDumper())
91
95
  return;
96
+ this.createObjects(this.schedulerEvents, 'SchedulerEvent');
97
+ if (this.checkDumper())
98
+ return;
92
99
  }
93
100
  finally {
94
101
  process.off('uncaughtException', this.handleException);
package/lib/diffTools.js CHANGED
@@ -42,12 +42,12 @@ function generateObjectPairingId(obj) {
42
42
  return obj;
43
43
  }
44
44
  function generateDbPairingId(db) {
45
- var _a, _b, _c, _d, _e, _f;
45
+ var _a, _b, _c, _d, _e, _f, _g;
46
46
  if (!db)
47
47
  return db;
48
48
  return Object.assign(Object.assign({}, db), {
49
49
  // ..._.mapValues(db, v => (_.isArray(v) ? v.map(generateObjectPairingId) : v)),
50
- tables: (_a = db.tables) === null || _a === void 0 ? void 0 : _a.map(generateTablePairingId), views: (_b = db.views) === null || _b === void 0 ? void 0 : _b.map(generateObjectPairingId), procedures: (_c = db.procedures) === null || _c === void 0 ? void 0 : _c.map(generateObjectPairingId), functions: (_d = db.functions) === null || _d === void 0 ? void 0 : _d.map(generateObjectPairingId), triggers: (_e = db.triggers) === null || _e === void 0 ? void 0 : _e.map(generateObjectPairingId), matviews: (_f = db.matviews) === null || _f === void 0 ? void 0 : _f.map(generateObjectPairingId) });
50
+ tables: (_a = db.tables) === null || _a === void 0 ? void 0 : _a.map(generateTablePairingId), views: (_b = db.views) === null || _b === void 0 ? void 0 : _b.map(generateObjectPairingId), procedures: (_c = db.procedures) === null || _c === void 0 ? void 0 : _c.map(generateObjectPairingId), functions: (_d = db.functions) === null || _d === void 0 ? void 0 : _d.map(generateObjectPairingId), triggers: (_e = db.triggers) === null || _e === void 0 ? void 0 : _e.map(generateObjectPairingId), schedulerEvents: (_f = db.schedulerEvents) === null || _f === void 0 ? void 0 : _f.map(generateObjectPairingId), matviews: (_g = db.matviews) === null || _g === void 0 ? void 0 : _g.map(generateObjectPairingId) });
51
51
  }
52
52
  exports.generateDbPairingId = generateDbPairingId;
53
53
  function getNameWithoutDeletedPrefix(name, opts, deletedPrefix) {
@@ -519,7 +519,15 @@ function sortViewsByDependency(views) {
519
519
  }
520
520
  function createAlterDatabasePlan(oldDb, newDb, opts, wholeOldDb, wholeNewDb, driver) {
521
521
  const plan = new alterPlan_1.AlterPlan(wholeOldDb, wholeNewDb, driver.dialect, opts);
522
- for (const objectTypeField of ['tables', 'views', 'procedures', 'matviews', 'functions', 'triggers']) {
522
+ for (const objectTypeField of [
523
+ 'tables',
524
+ 'views',
525
+ 'procedures',
526
+ 'matviews',
527
+ 'functions',
528
+ 'triggers',
529
+ 'schedulerEvents',
530
+ ]) {
523
531
  for (const oldobj of oldDb[objectTypeField] || []) {
524
532
  const newobj = (newDb[objectTypeField] || []).find(x => x.pairingId == oldobj.pairingId);
525
533
  if (objectTypeField == 'tables') {
@@ -28,4 +28,5 @@ export declare function skipDbGateInternalObjects(db: DatabaseInfo): {
28
28
  procedures: import("dbgate-types").ProcedureInfo[];
29
29
  functions: import("dbgate-types").FunctionInfo[];
30
30
  triggers: import("dbgate-types").TriggerInfo[];
31
+ schedulerEvents: import("dbgate-types").SchedulerEventInfo[];
31
32
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "6.1.1",
2
+ "version": "6.1.3",
3
3
  "name": "dbgate-tools",
4
4
  "main": "lib/index.js",
5
5
  "typings": "lib/index.d.ts",
@@ -25,14 +25,14 @@
25
25
  ],
26
26
  "devDependencies": {
27
27
  "@types/node": "^13.7.0",
28
- "dbgate-types": "^6.1.1",
28
+ "dbgate-types": "^6.1.3",
29
29
  "jest": "^24.9.0",
30
30
  "ts-jest": "^25.2.1",
31
31
  "typescript": "^4.4.3"
32
32
  },
33
33
  "dependencies": {
34
- "dbgate-query-splitter": "^4.11.2",
35
- "dbgate-sqltree": "^6.1.1",
34
+ "dbgate-query-splitter": "^4.11.3",
35
+ "dbgate-sqltree": "^6.1.3",
36
36
  "debug": "^4.3.4",
37
37
  "json-stable-stringify": "^1.0.1",
38
38
  "lodash": "^4.17.21",