mysqlsyncr 1.0.80 → 1.0.84

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/index.cjs CHANGED
@@ -8,7 +8,6 @@ var path = require('path');
8
8
  var yargs = require('yargs');
9
9
  var assert = require('assert');
10
10
  var url = require('url');
11
- require('module');
12
11
  var fs$1 = require('fs/promises');
13
12
  var express = require('express');
14
13
  var http = require('http');
@@ -3191,7 +3190,14 @@ var findDifferences = function findDifferences(expected, current) {
3191
3190
  _tableName = _Object$entries$_i[0],
3192
3191
  contents = _Object$entries$_i[1];
3193
3192
  //check if craete table matches from json, if so, we dont need to compare indexes, triggers, or fields
3194
-
3193
+ var columns = contents.columns,
3194
+ indexes = contents.indexes,
3195
+ triggers = contents.triggers;
3196
+ contents.createSQL;
3197
+ contents.name;
3198
+ contents.engine;
3199
+ contents.charset;
3200
+ contents.collate;
3195
3201
  if (!current.tables[_tableName]) {
3196
3202
  console.log('missing_table', contents);
3197
3203
  differences.push({
@@ -3201,6 +3207,74 @@ var findDifferences = function findDifferences(expected, current) {
3201
3207
  });
3202
3208
  continue;
3203
3209
  }
3210
+ try {
3211
+ //verify triggers
3212
+ logger('Verifying triggers for table', _tableName);
3213
+ var _iterator = _createForOfIteratorHelper(triggers),
3214
+ _step;
3215
+ try {
3216
+ var _loop = function _loop() {
3217
+ var trigger = _step.value;
3218
+ var currentTrigger = current.tables[_tableName].triggers.find(function (t) {
3219
+ return t.Name === trigger.Name;
3220
+ });
3221
+ if (!currentTrigger) {
3222
+ logger('Missing trigger', trigger);
3223
+ differences.push({
3224
+ type: 'missing_trigger',
3225
+ tableName: _tableName,
3226
+ trigger: trigger
3227
+ });
3228
+ } else {
3229
+ // Compare additional properties if needed
3230
+ if (currentTrigger.Event !== trigger.Event || currentTrigger.Statement !== trigger.Statement) {
3231
+ logger('Mismatched trigger', {
3232
+ expected: trigger,
3233
+ current: currentTrigger
3234
+ });
3235
+ differences.push({
3236
+ type: 'mismatched_trigger',
3237
+ tableName: _tableName,
3238
+ trigger: trigger
3239
+ });
3240
+ }
3241
+ }
3242
+ };
3243
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3244
+ _loop();
3245
+ }
3246
+ } catch (err) {
3247
+ _iterator.e(err);
3248
+ } finally {
3249
+ _iterator.f();
3250
+ }
3251
+ var _iterator2 = _createForOfIteratorHelper(current.tables[_tableName].triggers),
3252
+ _step2;
3253
+ try {
3254
+ var _loop2 = function _loop2() {
3255
+ var trigger = _step2.value;
3256
+ if (!triggers.some(function (t) {
3257
+ return t.Name === trigger.Name;
3258
+ })) {
3259
+ logger('Extra trigger', trigger);
3260
+ differences.push({
3261
+ type: 'extra_trigger',
3262
+ tableName: _tableName,
3263
+ trigger: trigger
3264
+ });
3265
+ }
3266
+ };
3267
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
3268
+ _loop2();
3269
+ }
3270
+ } catch (err) {
3271
+ _iterator2.e(err);
3272
+ } finally {
3273
+ _iterator2.f();
3274
+ }
3275
+ } catch (e) {
3276
+ console.error("Error verifying triggers for table ".concat(_tableName), e);
3277
+ }
3204
3278
  var createTableSql = current.tables[_tableName].createSQL;
3205
3279
  if (createTableSql === contents.createSQL) {
3206
3280
  logger("Table ".concat(_tableName, " createSQL matches from json, skipping indexes, triggers, and fields"));
@@ -3210,14 +3284,6 @@ var findDifferences = function findDifferences(expected, current) {
3210
3284
  logger(createTableSql);
3211
3285
  logger(contents.createSQL);
3212
3286
  }
3213
- var columns = contents.columns,
3214
- indexes = contents.indexes,
3215
- triggers = contents.triggers;
3216
- contents.createSQL;
3217
- contents.name;
3218
- contents.engine;
3219
- contents.charset;
3220
- contents.collate;
3221
3287
  current.tables[_tableName].columns.map(function (f) {
3222
3288
  return f.Field;
3223
3289
  });
@@ -3234,11 +3300,11 @@ var findDifferences = function findDifferences(expected, current) {
3234
3300
 
3235
3301
  logger('Detecting extra fields for table', _tableName);
3236
3302
  // Detect extra fields
3237
- var _iterator = _createForOfIteratorHelper(current.tables[_tableName].columns),
3238
- _step;
3303
+ var _iterator3 = _createForOfIteratorHelper(current.tables[_tableName].columns),
3304
+ _step3;
3239
3305
  try {
3240
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
3241
- var field = _step.value;
3306
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
3307
+ var field = _step3.value;
3242
3308
  if (!expectedFieldNames.includes(field.Field)) {
3243
3309
  differences.push({
3244
3310
  type: 'extra_field',
@@ -3250,16 +3316,16 @@ var findDifferences = function findDifferences(expected, current) {
3250
3316
 
3251
3317
  // verify Type Null and Default
3252
3318
  } catch (err) {
3253
- _iterator.e(err);
3319
+ _iterator3.e(err);
3254
3320
  } finally {
3255
- _iterator.f();
3321
+ _iterator3.f();
3256
3322
  }
3257
3323
  logger('Verifying Type Null and Default for table', _tableName);
3258
- var _iterator2 = _createForOfIteratorHelper(columns),
3259
- _step2;
3324
+ var _iterator4 = _createForOfIteratorHelper(columns),
3325
+ _step4;
3260
3326
  try {
3261
- var _loop = function _loop() {
3262
- var field = _step2.value;
3327
+ var _loop3 = function _loop3() {
3328
+ var field = _step4.value;
3263
3329
  var currentField = current.tables[_tableName].columns.find(function (f) {
3264
3330
  return f.Field === field.Field;
3265
3331
  });
@@ -3311,23 +3377,23 @@ var findDifferences = function findDifferences(expected, current) {
3311
3377
  }
3312
3378
  },
3313
3379
  _ret;
3314
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
3315
- _ret = _loop();
3380
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
3381
+ _ret = _loop3();
3316
3382
  if (_ret === 0) continue;
3317
3383
  }
3318
3384
 
3319
3385
  // verify indexes
3320
3386
  } catch (err) {
3321
- _iterator2.e(err);
3387
+ _iterator4.e(err);
3322
3388
  } finally {
3323
- _iterator2.f();
3389
+ _iterator4.f();
3324
3390
  }
3325
3391
  logger('Verifying indexes for table', _tableName);
3326
- var _iterator3 = _createForOfIteratorHelper(indexes),
3327
- _step3;
3392
+ var _iterator5 = _createForOfIteratorHelper(indexes),
3393
+ _step5;
3328
3394
  try {
3329
- var _loop2 = function _loop2() {
3330
- var index = _step3.value;
3395
+ var _loop4 = function _loop4() {
3396
+ var index = _step5.value;
3331
3397
  // Check if the current index matches the expected index structure
3332
3398
  var currentIndex = current.tables[_tableName].indexes.find(function (i) {
3333
3399
  return i.ColumnName.sort().join(', ') === index.ColumnName.sort().join(', ');
@@ -3363,19 +3429,19 @@ var findDifferences = function findDifferences(expected, current) {
3363
3429
  }
3364
3430
  }
3365
3431
  };
3366
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
3367
- _loop2();
3432
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
3433
+ _loop4();
3368
3434
  }
3369
3435
  } catch (err) {
3370
- _iterator3.e(err);
3436
+ _iterator5.e(err);
3371
3437
  } finally {
3372
- _iterator3.f();
3438
+ _iterator5.f();
3373
3439
  }
3374
- var _iterator4 = _createForOfIteratorHelper(current.tables[_tableName].indexes),
3375
- _step4;
3440
+ var _iterator6 = _createForOfIteratorHelper(current.tables[_tableName].indexes),
3441
+ _step6;
3376
3442
  try {
3377
- var _loop3 = function _loop3() {
3378
- var index = _step4.value;
3443
+ var _loop5 = function _loop5() {
3444
+ var index = _step6.value;
3379
3445
  logger('Checking index', index);
3380
3446
  var indexFound = false;
3381
3447
 
@@ -3392,71 +3458,6 @@ var findDifferences = function findDifferences(expected, current) {
3392
3458
  });
3393
3459
  }
3394
3460
  };
3395
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
3396
- _loop3();
3397
- }
3398
-
3399
- //verify triggers
3400
- } catch (err) {
3401
- _iterator4.e(err);
3402
- } finally {
3403
- _iterator4.f();
3404
- }
3405
- logger('Verifying triggers for table', _tableName);
3406
- var _iterator5 = _createForOfIteratorHelper(triggers),
3407
- _step5;
3408
- try {
3409
- var _loop4 = function _loop4() {
3410
- var trigger = _step5.value;
3411
- var currentTrigger = current.tables[_tableName].triggers.find(function (t) {
3412
- return t.Name === trigger.Name;
3413
- });
3414
- if (!currentTrigger) {
3415
- logger('Missing trigger', trigger);
3416
- differences.push({
3417
- type: 'missing_trigger',
3418
- tableName: _tableName,
3419
- trigger: trigger
3420
- });
3421
- } else {
3422
- // Compare additional properties if needed
3423
- if (currentTrigger.Event !== trigger.Event || currentTrigger.Statement !== trigger.Statement) {
3424
- logger('Mismatched trigger', {
3425
- expected: trigger,
3426
- current: currentTrigger
3427
- });
3428
- differences.push({
3429
- type: 'mismatched_trigger',
3430
- tableName: _tableName,
3431
- trigger: trigger
3432
- });
3433
- }
3434
- }
3435
- };
3436
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
3437
- _loop4();
3438
- }
3439
- } catch (err) {
3440
- _iterator5.e(err);
3441
- } finally {
3442
- _iterator5.f();
3443
- }
3444
- var _iterator6 = _createForOfIteratorHelper(current.tables[_tableName].triggers),
3445
- _step6;
3446
- try {
3447
- var _loop5 = function _loop5() {
3448
- var trigger = _step6.value;
3449
- if (!triggers.some(function (t) {
3450
- return t.Name === trigger.Name;
3451
- })) {
3452
- logger('Extra trigger', trigger);
3453
- differences.push({
3454
- type: 'extra_trigger',
3455
- tableName: _tableName,
3456
- trigger: trigger
3457
- });
3458
- }
3459
- };
3460
3461
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
3461
3462
  _loop5();
3462
3463
  }
@@ -4061,12 +4062,12 @@ var compareAllDatabases = /*#__PURE__*/function () {
4061
4062
  expectedDatabases = expectedDatabases.filter(function (file) {
4062
4063
  return file !== 'dumpInfo.json';
4063
4064
  });
4064
- // console.log('Expected databases from input directory:', expectedDatabases);
4065
+ console.log('Expected databases from input directory:', expectedDatabases);
4065
4066
 
4066
4067
  // Check existing databases
4067
- _context.next = 13;
4068
+ _context.next = 14;
4068
4069
  return getDatabases(connection);
4069
- case 13:
4070
+ case 14:
4070
4071
  existingDatabases = _context.sent;
4071
4072
  // console.log('Existing databases:', existingDatabases);
4072
4073
  allDifferences = {};
@@ -4075,20 +4076,20 @@ var compareAllDatabases = /*#__PURE__*/function () {
4075
4076
 
4076
4077
  // Note missing databases and prepare to create them
4077
4078
  _iterator = _createForOfIteratorHelper(expectedDatabases);
4078
- _context.prev = 18;
4079
+ _context.prev = 19;
4079
4080
  _iterator.s();
4080
- case 20:
4081
+ case 21:
4081
4082
  if ((_step = _iterator.n()).done) {
4082
- _context.next = 27;
4083
+ _context.next = 28;
4083
4084
  break;
4084
4085
  }
4085
4086
  _database = _step.value;
4086
4087
  if (!(options && options.database && options.database !== _database)) {
4087
- _context.next = 24;
4088
+ _context.next = 25;
4088
4089
  break;
4089
4090
  }
4090
- return _context.abrupt("continue", 25);
4091
- case 24:
4091
+ return _context.abrupt("continue", 26);
4092
+ case 25:
4092
4093
  if (!existingDatabases.includes(_database)) {
4093
4094
  allDifferences[_database] = [{
4094
4095
  database: _database,
@@ -4097,58 +4098,58 @@ var compareAllDatabases = /*#__PURE__*/function () {
4097
4098
  }];
4098
4099
  missingDatabases.push(_database);
4099
4100
  }
4100
- case 25:
4101
- _context.next = 20;
4101
+ case 26:
4102
+ _context.next = 21;
4102
4103
  break;
4103
- case 27:
4104
- _context.next = 32;
4104
+ case 28:
4105
+ _context.next = 33;
4105
4106
  break;
4106
- case 29:
4107
- _context.prev = 29;
4108
- _context.t0 = _context["catch"](18);
4107
+ case 30:
4108
+ _context.prev = 30;
4109
+ _context.t0 = _context["catch"](19);
4109
4110
  _iterator.e(_context.t0);
4110
- case 32:
4111
- _context.prev = 32;
4111
+ case 33:
4112
+ _context.prev = 33;
4112
4113
  _iterator.f();
4113
- return _context.finish(32);
4114
- case 35:
4114
+ return _context.finish(33);
4115
+ case 36:
4115
4116
  if (!(missingDatabases.length > 0 && update)) {
4116
- _context.next = 58;
4117
+ _context.next = 59;
4117
4118
  break;
4118
4119
  }
4119
4120
  console.log('Creating missing databases:');
4120
4121
  _iterator2 = _createForOfIteratorHelper(missingDatabases);
4121
- _context.prev = 38;
4122
+ _context.prev = 39;
4122
4123
  _iterator2.s();
4123
- case 40:
4124
+ case 41:
4124
4125
  if ((_step2 = _iterator2.n()).done) {
4125
- _context.next = 48;
4126
+ _context.next = 49;
4126
4127
  break;
4127
4128
  }
4128
4129
  database = _step2.value;
4129
4130
  console.log("Creating database ".concat(database, "..."));
4130
- _context.next = 45;
4131
+ _context.next = 46;
4131
4132
  return connection.query("CREATE DATABASE `".concat(database, "`;"));
4132
- case 45:
4133
- console.log("Database ".concat(database, " created."));
4134
4133
  case 46:
4135
- _context.next = 40;
4134
+ console.log("Database ".concat(database, " created."));
4135
+ case 47:
4136
+ _context.next = 41;
4136
4137
  break;
4137
- case 48:
4138
- _context.next = 53;
4138
+ case 49:
4139
+ _context.next = 54;
4139
4140
  break;
4140
- case 50:
4141
- _context.prev = 50;
4142
- _context.t1 = _context["catch"](38);
4141
+ case 51:
4142
+ _context.prev = 51;
4143
+ _context.t1 = _context["catch"](39);
4143
4144
  _iterator2.e(_context.t1);
4144
- case 53:
4145
- _context.prev = 53;
4145
+ case 54:
4146
+ _context.prev = 54;
4146
4147
  _iterator2.f();
4147
- return _context.finish(53);
4148
- case 56:
4149
- _context.next = 59;
4148
+ return _context.finish(54);
4149
+ case 57:
4150
+ _context.next = 60;
4150
4151
  break;
4151
- case 58:
4152
+ case 59:
4152
4153
  if (missingDatabases.length > 0 && !update) {
4153
4154
  console.error('Missing databases found but update is not enabled. Please enable update to create missing databases.');
4154
4155
  console.error('Please run the command again with the --update flag to create missing databases.');
@@ -4157,87 +4158,87 @@ var compareAllDatabases = /*#__PURE__*/function () {
4157
4158
  } else {
4158
4159
  console.log('All expected databases exist.');
4159
4160
  }
4160
- case 59:
4161
+ case 60:
4161
4162
  _iterator3 = _createForOfIteratorHelper(expectedDatabases);
4162
- _context.prev = 60;
4163
+ _context.prev = 61;
4163
4164
  _iterator3.s();
4164
- case 62:
4165
+ case 63:
4165
4166
  if ((_step3 = _iterator3.n()).done) {
4166
- _context.next = 100;
4167
+ _context.next = 101;
4167
4168
  break;
4168
4169
  }
4169
4170
  _database2 = _step3.value;
4170
4171
  if (!(options && options.database && options.database !== _database2)) {
4171
- _context.next = 66;
4172
+ _context.next = 67;
4172
4173
  break;
4173
4174
  }
4174
- return _context.abrupt("continue", 98);
4175
- case 66:
4175
+ return _context.abrupt("continue", 99);
4176
+ case 67:
4176
4177
  if (!missingDatabases.includes(_database2)) {
4177
- _context.next = 69;
4178
+ _context.next = 70;
4178
4179
  break;
4179
4180
  }
4180
4181
  console.log('Skipping database', _database2, 'because it is missing');
4181
- return _context.abrupt("continue", 98);
4182
- case 69:
4182
+ return _context.abrupt("continue", 99);
4183
+ case 70:
4183
4184
  filePath = path.join(inputDir, _database2, "".concat(_database2, ".json"));
4184
- _context.prev = 70;
4185
- _context.next = 73;
4185
+ _context.prev = 71;
4186
+ _context.next = 74;
4186
4187
  return fs$1.readFile(filePath, 'utf-8');
4187
- case 73:
4188
+ case 74:
4188
4189
  fileContent = _context.sent;
4189
4190
  expectedStructure = JSON.parse(fileContent);
4190
4191
  console.log('Getting database structure for', _database2);
4191
- _context.next = 78;
4192
+ _context.next = 79;
4192
4193
  return getDatabaseStructure(connection, _database2, command, options);
4193
- case 78:
4194
+ case 79:
4194
4195
  currentStructure = _context.sent;
4195
4196
  console.log('Database structure for', _database2, 'obtained');
4196
4197
  differences = findDifferences(expectedStructure, currentStructure);
4197
4198
  console.log('Differences for', _database2, 'obtained');
4198
4199
  if (update) {
4199
- _context.next = 87;
4200
+ _context.next = 88;
4200
4201
  break;
4201
4202
  }
4202
4203
  console.log('Logging differences for', _database2);
4203
4204
  logDifferences(differences, _database2, true);
4204
- _context.next = 92;
4205
+ _context.next = 93;
4205
4206
  break;
4206
- case 87:
4207
+ case 88:
4207
4208
  console.log('Logging differences for', _database2);
4208
4209
  logDifferences(differences, _database2, false);
4209
4210
  console.log('Applying differences for', _database2);
4210
- _context.next = 92;
4211
+ _context.next = 93;
4211
4212
  return applyDifferences(connection, _database2, differences);
4212
- case 92:
4213
+ case 93:
4213
4214
  allDifferences[_database2] = differences;
4214
- _context.next = 98;
4215
+ _context.next = 99;
4215
4216
  break;
4216
- case 95:
4217
- _context.prev = 95;
4218
- _context.t2 = _context["catch"](70);
4217
+ case 96:
4218
+ _context.prev = 96;
4219
+ _context.t2 = _context["catch"](71);
4219
4220
  console.error("Error processing database ".concat(_database2, ":"), _context.t2.message);
4220
- case 98:
4221
- _context.next = 62;
4221
+ case 99:
4222
+ _context.next = 63;
4222
4223
  break;
4223
- case 100:
4224
- _context.next = 105;
4224
+ case 101:
4225
+ _context.next = 106;
4225
4226
  break;
4226
- case 102:
4227
- _context.prev = 102;
4228
- _context.t3 = _context["catch"](60);
4227
+ case 103:
4228
+ _context.prev = 103;
4229
+ _context.t3 = _context["catch"](61);
4229
4230
  _iterator3.e(_context.t3);
4230
- case 105:
4231
- _context.prev = 105;
4231
+ case 106:
4232
+ _context.prev = 106;
4232
4233
  _iterator3.f();
4233
- return _context.finish(105);
4234
- case 108:
4235
- return _context.abrupt("return", allDifferences);
4234
+ return _context.finish(106);
4236
4235
  case 109:
4236
+ return _context.abrupt("return", allDifferences);
4237
+ case 110:
4237
4238
  case "end":
4238
4239
  return _context.stop();
4239
4240
  }
4240
- }, _callee, null, [[18, 29, 32, 35], [38, 50, 53, 56], [60, 102, 105, 108], [70, 95]]);
4241
+ }, _callee, null, [[19, 30, 33, 36], [39, 51, 54, 57], [61, 103, 106, 109], [71, 96]]);
4241
4242
  }));
4242
4243
  return function compareAllDatabases(_x, _x2) {
4243
4244
  return _ref.apply(this, arguments);