@mrnafisia/type-query 1.0.48 → 1.0.49

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.
Files changed (74) hide show
  1. package/README.md +2 -2
  2. package/dist/U.d.ts +2 -2
  3. package/dist/U.d.ts.map +1 -1
  4. package/dist/U.js +28 -27
  5. package/dist/U.js.map +1 -1
  6. package/dist/context.d.ts +987 -987
  7. package/dist/context.d.ts.map +1 -1
  8. package/dist/context.js +84 -85
  9. package/dist/context.js.map +1 -1
  10. package/dist/dictionary.d.ts +12 -12
  11. package/dist/dictionary.d.ts.map +1 -1
  12. package/dist/dictionary.js +179 -179
  13. package/dist/dictionary.js.map +1 -1
  14. package/dist/entity.d.ts +3585 -3585
  15. package/dist/entity.d.ts.map +1 -1
  16. package/dist/entity.js +1053 -1007
  17. package/dist/entity.js.map +1 -1
  18. package/dist/error.d.ts +4 -4
  19. package/dist/error.d.ts.map +1 -1
  20. package/dist/error.js +7 -6
  21. package/dist/error.js.map +1 -1
  22. package/dist/index.d.ts +18 -36
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +56 -60
  25. package/dist/index.js.map +1 -1
  26. package/dist/model.d.ts +1005 -1005
  27. package/dist/model.d.ts.map +1 -1
  28. package/dist/model.js +282 -282
  29. package/dist/model.js.map +1 -1
  30. package/dist/parser.d.ts +11 -11
  31. package/dist/parser.d.ts.map +1 -1
  32. package/dist/parser.js +120 -120
  33. package/dist/parser.js.map +1 -1
  34. package/dist/pool.d.ts +5 -5
  35. package/dist/pool.d.ts.map +1 -1
  36. package/dist/pool.js +122 -121
  37. package/dist/pool.js.map +1 -1
  38. package/dist/schema.d.ts +25 -25
  39. package/dist/schema.d.ts.map +1 -1
  40. package/dist/schema.js +405 -395
  41. package/dist/schema.js.map +1 -1
  42. package/dist/testUtil.d.ts +4 -4
  43. package/dist/testUtil.d.ts.map +1 -1
  44. package/dist/testUtil.js +343 -333
  45. package/dist/testUtil.js.map +1 -1
  46. package/dist/types/context.d.ts +51 -55
  47. package/dist/types/context.d.ts.map +1 -1
  48. package/dist/types/context.js +2 -2
  49. package/dist/types/entity.d.ts +70 -70
  50. package/dist/types/entity.d.ts.map +1 -1
  51. package/dist/types/entity.js +2 -2
  52. package/dist/types/json.d.ts +8 -8
  53. package/dist/types/json.d.ts.map +1 -1
  54. package/dist/types/json.js +2 -2
  55. package/dist/types/model.d.ts +23 -23
  56. package/dist/types/model.d.ts.map +1 -1
  57. package/dist/types/model.js +2 -2
  58. package/dist/types/pool.d.ts +18 -18
  59. package/dist/types/pool.d.ts.map +1 -1
  60. package/dist/types/pool.js +2 -2
  61. package/dist/types/postgres.d.ts +9 -9
  62. package/dist/types/postgres.d.ts.map +1 -1
  63. package/dist/types/postgres.js +2 -2
  64. package/dist/types/table.d.ts +233 -234
  65. package/dist/types/table.d.ts.map +1 -1
  66. package/dist/types/table.js +2 -2
  67. package/dist/types/testUtil.d.ts +26 -26
  68. package/dist/types/testUtil.d.ts.map +1 -1
  69. package/dist/types/testUtil.js +2 -2
  70. package/dist/utils.d.ts +67 -67
  71. package/dist/utils.d.ts.map +1 -1
  72. package/dist/utils.js +220 -220
  73. package/dist/utils.js.map +1 -1
  74. package/package.json +40 -39
package/dist/testUtil.js CHANGED
@@ -1,334 +1,344 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.createTestTableData = exports.testTransaction = void 0;
40
- var lodash_1 = require("lodash");
41
- var entity_1 = require("./entity");
42
- var never_catch_1 = require("never-catch");
43
- var schema_1 = require("./schema");
44
- var testTransaction = function (tablesWithData, callback, pool, isolationLevel, rollback) {
45
- if (isolationLevel === void 0) { isolationLevel = 'serializable'; }
46
- if (rollback === void 0) { rollback = true; }
47
- return __awaiter(void 0, void 0, void 0, function () {
48
- var error;
49
- return __generator(this, function (_a) {
50
- switch (_a.label) {
51
- case 0: return [4 /*yield*/, pool.transaction(function (client) { return __awaiter(void 0, void 0, void 0, function () {
52
- var createTableResult, resolvedTablesResult, sortedTablesWithData, _i, sortedTablesWithData_1, tableWithData, insertResult, differences, _loop_1, _a, sortedTablesWithData_2, _b, table, finalData, skipIt, lengthCheck, state_1;
53
- var _c;
54
- return __generator(this, function (_d) {
55
- switch (_d.label) {
56
- case 0: return [4 /*yield*/, (0, schema_1.createTables)(client, tablesWithData.map(function (v) { return v.table; }))];
57
- case 1:
58
- createTableResult = _d.sent();
59
- if (!createTableResult.ok) {
60
- error = createTableResult;
61
- return [2 /*return*/, (0, never_catch_1.err)(undefined)];
62
- }
63
- resolvedTablesResult = (0, schema_1.resolveTablesDependency)(tablesWithData.map(function (v) { return v.table; }));
64
- if (!resolvedTablesResult.ok) {
65
- error = resolvedTablesResult;
66
- return [2 /*return*/, (0, never_catch_1.err)(undefined)];
67
- }
68
- sortedTablesWithData = tablesWithData.sort(function (a, b) { return resolvedTablesResult.value.indexOf(a.table) - resolvedTablesResult.value.indexOf(b.table); });
69
- _i = 0, sortedTablesWithData_1 = sortedTablesWithData;
70
- _d.label = 2;
71
- case 2:
72
- if (!(_i < sortedTablesWithData_1.length)) return [3 /*break*/, 5];
73
- tableWithData = sortedTablesWithData_1[_i];
74
- if (!(tableWithData.startData.length !== 0)) return [3 /*break*/, 4];
75
- return [4 /*yield*/, (0, entity_1.createEntity)(tableWithData.table)
76
- .insert(tableWithData.startData, [{ exp: true, as: 'confirm' }], {
77
- nullableDefaultColumns: Object.entries(tableWithData.table.columns).filter(function (_a) {
78
- var _ = _a[0], value = _a[1];
79
- return value.nullable || value.default !== false;
80
- }).map(function (_a) {
81
- var key = _a[0], _ = _a[1];
82
- return key;
83
- })
84
- }).exec(client, ['count', tableWithData.startData.length])];
85
- case 3:
86
- insertResult = _d.sent();
87
- if (!insertResult.ok) {
88
- error = insertResult;
89
- return [2 /*return*/, (0, never_catch_1.err)(undefined)];
90
- }
91
- _d.label = 4;
92
- case 4:
93
- _i++;
94
- return [3 /*break*/, 2];
95
- case 5:
96
- // callback
97
- return [4 /*yield*/, callback(client)];
98
- case 6:
99
- // callback
100
- _d.sent();
101
- differences = [];
102
- _loop_1 = function (table, finalData, skipIt, lengthCheck) {
103
- var primaryKeys, selectResult, result, usage, _loop_2, _e, _f, dbRow, i, _g, mode, number, result;
104
- return __generator(this, function (_h) {
105
- switch (_h.label) {
106
- case 0:
107
- primaryKeys = Object.entries(table.columns).filter(function (_a) {
108
- var _ = _a[0], value = _a[1];
109
- return !value.nullable && value.primary;
110
- }).map(function (_a) {
111
- var key = _a[0], _ = _a[1];
112
- return key;
113
- });
114
- return [4 /*yield*/, (0, entity_1.createEntity)(table)
115
- .select(Object.keys(table.columns), true).exec(client, [])];
116
- case 1:
117
- selectResult = _h.sent();
118
- if (!selectResult.ok) {
119
- error = selectResult;
120
- return [2 /*return*/, { value: (0, never_catch_1.err)(undefined) }];
121
- }
122
- if (!(typeof finalData === 'function')) return [3 /*break*/, 3];
123
- return [4 /*yield*/, finalData(selectResult.value)];
124
- case 2:
125
- result = _h.sent();
126
- if (!result.ok) {
127
- differences.push(result.error);
128
- }
129
- return [2 /*return*/, "continue"];
130
- case 3:
131
- usage = new Array(finalData.length).fill(0);
132
- _loop_2 = function (dbRow) {
133
- var found, tempDifferences, candidateFinalData, i, finalRow, _j, _k, _l, _m, key, value, result, customCheckResult;
134
- return __generator(this, function (_o) {
135
- switch (_o.label) {
136
- case 0:
137
- found = false;
138
- tempDifferences = [];
139
- candidateFinalData = finalData.filter(function (_a) {
140
- var finalRow = _a.row;
141
- for (var _i = 0, primaryKeys_1 = primaryKeys; _i < primaryKeys_1.length; _i++) {
142
- var primaryKey = primaryKeys_1[_i];
143
- if (!(0, lodash_1.isEqual)(finalRow[primaryKey], dbRow[primaryKey])) {
144
- return false;
145
- }
146
- }
147
- return true;
148
- });
149
- i = 0;
150
- _o.label = 1;
151
- case 1:
152
- if (!(i < candidateFinalData.length)) return [3 /*break*/, 8];
153
- found = true;
154
- finalRow = candidateFinalData[i].row;
155
- _j = dbRow;
156
- _k = [];
157
- for (_l in _j)
158
- _k.push(_l);
159
- _m = 0;
160
- _o.label = 2;
161
- case 2:
162
- if (!(_m < _k.length)) return [3 /*break*/, 6];
163
- _l = _k[_m];
164
- if (!(_l in _j)) return [3 /*break*/, 5];
165
- key = _l;
166
- value = finalRow[key];
167
- if (!(typeof value === 'function')) return [3 /*break*/, 4];
168
- return [4 /*yield*/, value(dbRow[key], dbRow, selectResult.value)];
169
- case 3:
170
- result = _o.sent();
171
- if (!result.ok) {
172
- tempDifferences.push({
173
- dbRow: dbRow,
174
- finalRow: finalRow,
175
- key: key,
176
- message: "->".concat(JSON.stringify(dbRow[key]), "<- did not accepted by match function")
177
- });
178
- found = false;
179
- }
180
- return [3 /*break*/, 5];
181
- case 4:
182
- if (!(0, lodash_1.isEqual)(dbRow[key], value)) {
183
- tempDifferences.push({
184
- dbRow: dbRow,
185
- finalRow: finalRow,
186
- key: key,
187
- message: "->".concat(JSON.stringify(dbRow[key]), "<- is not equal to ->").concat(JSON.stringify(value), "<-")
188
- });
189
- found = false;
190
- }
191
- _o.label = 5;
192
- case 5:
193
- _m++;
194
- return [3 /*break*/, 2];
195
- case 6:
196
- if (found) {
197
- usage[finalData.indexOf(candidateFinalData[i])]++;
198
- return [3 /*break*/, 8];
199
- }
200
- _o.label = 7;
201
- case 7:
202
- i++;
203
- return [3 /*break*/, 1];
204
- case 8:
205
- if (!(!found && skipIt !== undefined)) return [3 /*break*/, 10];
206
- return [4 /*yield*/, skipIt(dbRow)];
207
- case 9:
208
- customCheckResult = _o.sent();
209
- if (customCheckResult.ok) {
210
- found = true;
211
- }
212
- _o.label = 10;
213
- case 10:
214
- if (!found) {
215
- if (tempDifferences.length === 0) {
216
- tempDifferences.push("following row was not found ".concat(JSON.stringify(dbRow)));
217
- }
218
- differences.push.apply(differences, tempDifferences);
219
- }
220
- return [2 /*return*/];
221
- }
222
- });
223
- };
224
- _e = 0, _f = selectResult.value;
225
- _h.label = 4;
226
- case 4:
227
- if (!(_e < _f.length)) return [3 /*break*/, 7];
228
- dbRow = _f[_e];
229
- return [5 /*yield**/, _loop_2(dbRow)];
230
- case 5:
231
- _h.sent();
232
- _h.label = 6;
233
- case 6:
234
- _e++;
235
- return [3 /*break*/, 4];
236
- case 7:
237
- for (i = 0; i < finalData.length; i++) {
238
- _g = (_c = finalData[i].useTime) !== null && _c !== void 0 ? _c : ['equal', 1], mode = _g[0], number = _g[1];
239
- if (number === -1) {
240
- continue;
241
- }
242
- switch (mode) {
243
- case 'equal':
244
- if (number !== usage[i]) {
245
- differences.push({
246
- finalRow: finalData[i].row,
247
- index: i,
248
- message: "expect this final row to be used ".concat(number, " times, but It got used ").concat(usage[i], " times")
249
- });
250
- }
251
- break;
252
- case 'lessThanEqual':
253
- if (number < usage[i]) {
254
- differences.push({
255
- finalRow: finalData[i].row,
256
- index: i,
257
- message: "expect this final row to be used less than ".concat(number, " times, but It got used ").concat(usage[i], " times")
258
- });
259
- }
260
- break;
261
- case 'moreThanEqual':
262
- if (number > usage[i]) {
263
- differences.push({
264
- finalRow: finalData[i].row,
265
- index: i,
266
- message: "expect this final row to be more than ".concat(number, " times, but It got used ").concat(usage[i], " times")
267
- });
268
- }
269
- break;
270
- }
271
- }
272
- if (!(lengthCheck !== undefined)) return [3 /*break*/, 10];
273
- if (!(typeof lengthCheck === 'function')) return [3 /*break*/, 9];
274
- return [4 /*yield*/, lengthCheck(selectResult.value)];
275
- case 8:
276
- result = _h.sent();
277
- if (!result.ok) {
278
- differences.push("length check failed ".concat(result.error));
279
- }
280
- return [3 /*break*/, 10];
281
- case 9:
282
- if (selectResult.value.length !== lengthCheck) {
283
- differences.push("length check failed expected(".concat(lengthCheck, ") received(").concat(selectResult.value.length, ")"));
284
- }
285
- _h.label = 10;
286
- case 10: return [2 /*return*/];
287
- }
288
- });
289
- };
290
- _a = 0, sortedTablesWithData_2 = sortedTablesWithData;
291
- _d.label = 7;
292
- case 7:
293
- if (!(_a < sortedTablesWithData_2.length)) return [3 /*break*/, 10];
294
- _b = sortedTablesWithData_2[_a], table = _b.table, finalData = _b.finalData, skipIt = _b.skipIt, lengthCheck = _b.lengthCheck;
295
- return [5 /*yield**/, _loop_1(table, finalData, skipIt, lengthCheck)];
296
- case 8:
297
- state_1 = _d.sent();
298
- if (typeof state_1 === "object")
299
- return [2 /*return*/, state_1.value];
300
- _d.label = 9;
301
- case 9:
302
- _a++;
303
- return [3 /*break*/, 7];
304
- case 10:
305
- if (differences.length !== 0) {
306
- error = (0, never_catch_1.err)(differences);
307
- }
308
- if (rollback) {
309
- return [2 /*return*/, (0, never_catch_1.err)(undefined)];
310
- }
311
- else {
312
- return [2 /*return*/, (0, never_catch_1.ok)(undefined)];
313
- }
314
- return [2 /*return*/];
315
- }
316
- });
317
- }); }, isolationLevel)];
318
- case 1:
319
- _a.sent();
320
- if (error === undefined) {
321
- return [2 /*return*/, undefined];
322
- }
323
- else {
324
- throw error;
325
- }
326
- return [2 /*return*/];
327
- }
328
- });
329
- });
330
- };
331
- exports.testTransaction = testTransaction;
332
- var createTestTableData = function (table, startData, finalData, skipIt, lengthCheck) { return ({ table: table, startData: startData, finalData: finalData, skipIt: skipIt, lengthCheck: lengthCheck }); };
333
- exports.createTestTableData = createTestTableData;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createTestTableData = exports.testTransaction = void 0;
40
+ var lodash_1 = require("lodash");
41
+ var entity_1 = require("./entity");
42
+ var never_catch_1 = require("never-catch");
43
+ var schema_1 = require("./schema");
44
+ var testTransaction = function (tablesWithData, callback, pool, isolationLevel, rollback) {
45
+ if (isolationLevel === void 0) { isolationLevel = 'serializable'; }
46
+ if (rollback === void 0) { rollback = true; }
47
+ return __awaiter(void 0, void 0, void 0, function () {
48
+ var error;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0: return [4 /*yield*/, pool.transaction(function (client) { return __awaiter(void 0, void 0, void 0, function () {
52
+ var createTableResult, resolvedTablesResult, sortedTablesWithData, _i, sortedTablesWithData_1, tableWithData, insertResult, differences, _loop_1, _a, sortedTablesWithData_2, _b, table, finalData, skipIt, lengthCheck, state_1;
53
+ var _c;
54
+ return __generator(this, function (_d) {
55
+ switch (_d.label) {
56
+ case 0: return [4 /*yield*/, (0, schema_1.createTables)(client, tablesWithData.map(function (v) { return v.table; }))];
57
+ case 1:
58
+ createTableResult = _d.sent();
59
+ if (!createTableResult.ok) {
60
+ error = createTableResult;
61
+ return [2 /*return*/, (0, never_catch_1.err)(undefined)];
62
+ }
63
+ resolvedTablesResult = (0, schema_1.resolveTablesDependency)(tablesWithData.map(function (v) { return v.table; }));
64
+ if (!resolvedTablesResult.ok) {
65
+ error = resolvedTablesResult;
66
+ return [2 /*return*/, (0, never_catch_1.err)(undefined)];
67
+ }
68
+ sortedTablesWithData = tablesWithData.sort(function (a, b) { return resolvedTablesResult.value.indexOf(a.table) - resolvedTablesResult.value.indexOf(b.table); });
69
+ _i = 0, sortedTablesWithData_1 = sortedTablesWithData;
70
+ _d.label = 2;
71
+ case 2:
72
+ if (!(_i < sortedTablesWithData_1.length)) return [3 /*break*/, 5];
73
+ tableWithData = sortedTablesWithData_1[_i];
74
+ if (!(tableWithData.startData.length !== 0)) return [3 /*break*/, 4];
75
+ return [4 /*yield*/, (0, entity_1.createEntity)(tableWithData.table)
76
+ .insert(tableWithData.startData, [{ exp: true, as: 'confirm' }], {
77
+ nullableDefaultColumns: Object.entries(tableWithData.table.columns)
78
+ .filter(function (_a) {
79
+ var _ = _a[0], value = _a[1];
80
+ return value.nullable || value.default !== false;
81
+ })
82
+ .map(function (_a) {
83
+ var key = _a[0], _ = _a[1];
84
+ return key;
85
+ })
86
+ })
87
+ .exec(client, ['count', tableWithData.startData.length])];
88
+ case 3:
89
+ insertResult = _d.sent();
90
+ if (!insertResult.ok) {
91
+ error = insertResult;
92
+ return [2 /*return*/, (0, never_catch_1.err)(undefined)];
93
+ }
94
+ _d.label = 4;
95
+ case 4:
96
+ _i++;
97
+ return [3 /*break*/, 2];
98
+ case 5:
99
+ // callback
100
+ return [4 /*yield*/, callback(client)];
101
+ case 6:
102
+ // callback
103
+ _d.sent();
104
+ differences = [];
105
+ _loop_1 = function (table, finalData, skipIt, lengthCheck) {
106
+ var primaryKeys, selectResult, result, usage, _loop_2, _e, _f, dbRow, i, _g, mode, number, result;
107
+ return __generator(this, function (_h) {
108
+ switch (_h.label) {
109
+ case 0:
110
+ primaryKeys = Object.entries(table.columns)
111
+ .filter(function (_a) {
112
+ var _ = _a[0], value = _a[1];
113
+ return !value.nullable && value.primary;
114
+ })
115
+ .map(function (_a) {
116
+ var key = _a[0], _ = _a[1];
117
+ return key;
118
+ });
119
+ return [4 /*yield*/, (0, entity_1.createEntity)(table).select(Object.keys(table.columns), true).exec(client, [])];
120
+ case 1:
121
+ selectResult = _h.sent();
122
+ if (!selectResult.ok) {
123
+ error = selectResult;
124
+ return [2 /*return*/, { value: (0, never_catch_1.err)(undefined) }];
125
+ }
126
+ if (!(typeof finalData === 'function')) return [3 /*break*/, 3];
127
+ return [4 /*yield*/, finalData(selectResult.value)];
128
+ case 2:
129
+ result = _h.sent();
130
+ if (!result.ok) {
131
+ differences.push(result.error);
132
+ }
133
+ return [2 /*return*/, "continue"];
134
+ case 3:
135
+ usage = new Array(finalData.length).fill(0);
136
+ _loop_2 = function (dbRow) {
137
+ var found, tempDifferences, candidateFinalData, i, finalRow, _j, _k, _l, _m, key, value, result, customCheckResult;
138
+ return __generator(this, function (_o) {
139
+ switch (_o.label) {
140
+ case 0:
141
+ found = false;
142
+ tempDifferences = [];
143
+ candidateFinalData = finalData.filter(function (_a) {
144
+ var finalRow = _a.row;
145
+ for (var _i = 0, primaryKeys_1 = primaryKeys; _i < primaryKeys_1.length; _i++) {
146
+ var primaryKey = primaryKeys_1[_i];
147
+ if (!(0, lodash_1.isEqual)(finalRow[primaryKey], dbRow[primaryKey])) {
148
+ return false;
149
+ }
150
+ }
151
+ return true;
152
+ });
153
+ i = 0;
154
+ _o.label = 1;
155
+ case 1:
156
+ if (!(i < candidateFinalData.length)) return [3 /*break*/, 8];
157
+ found = true;
158
+ finalRow = candidateFinalData[i].row;
159
+ _j = dbRow;
160
+ _k = [];
161
+ for (_l in _j)
162
+ _k.push(_l);
163
+ _m = 0;
164
+ _o.label = 2;
165
+ case 2:
166
+ if (!(_m < _k.length)) return [3 /*break*/, 6];
167
+ _l = _k[_m];
168
+ if (!(_l in _j)) return [3 /*break*/, 5];
169
+ key = _l;
170
+ value = finalRow[key];
171
+ if (!(typeof value === 'function')) return [3 /*break*/, 4];
172
+ return [4 /*yield*/, value(dbRow[key], dbRow, selectResult.value)];
173
+ case 3:
174
+ result = _o.sent();
175
+ if (!result.ok) {
176
+ tempDifferences.push({
177
+ dbRow: dbRow,
178
+ finalRow: finalRow,
179
+ key: key,
180
+ message: "->".concat(JSON.stringify(dbRow[key]), "<- did not accepted by match function")
181
+ });
182
+ found = false;
183
+ }
184
+ return [3 /*break*/, 5];
185
+ case 4:
186
+ if (!(0, lodash_1.isEqual)(dbRow[key], value)) {
187
+ tempDifferences.push({
188
+ dbRow: dbRow,
189
+ finalRow: finalRow,
190
+ key: key,
191
+ message: "->".concat(JSON.stringify(dbRow[key]), "<- is not equal to ->").concat(JSON.stringify(value), "<-")
192
+ });
193
+ found = false;
194
+ }
195
+ _o.label = 5;
196
+ case 5:
197
+ _m++;
198
+ return [3 /*break*/, 2];
199
+ case 6:
200
+ if (found) {
201
+ usage[finalData.indexOf(candidateFinalData[i])]++;
202
+ return [3 /*break*/, 8];
203
+ }
204
+ _o.label = 7;
205
+ case 7:
206
+ i++;
207
+ return [3 /*break*/, 1];
208
+ case 8:
209
+ if (!(!found && skipIt !== undefined)) return [3 /*break*/, 10];
210
+ return [4 /*yield*/, skipIt(dbRow)];
211
+ case 9:
212
+ customCheckResult = _o.sent();
213
+ if (customCheckResult.ok) {
214
+ found = true;
215
+ }
216
+ _o.label = 10;
217
+ case 10:
218
+ if (!found) {
219
+ if (tempDifferences.length === 0) {
220
+ tempDifferences.push("following row was not found ".concat(JSON.stringify(dbRow)));
221
+ }
222
+ differences.push.apply(differences, tempDifferences);
223
+ }
224
+ return [2 /*return*/];
225
+ }
226
+ });
227
+ };
228
+ _e = 0, _f = selectResult.value;
229
+ _h.label = 4;
230
+ case 4:
231
+ if (!(_e < _f.length)) return [3 /*break*/, 7];
232
+ dbRow = _f[_e];
233
+ return [5 /*yield**/, _loop_2(dbRow)];
234
+ case 5:
235
+ _h.sent();
236
+ _h.label = 6;
237
+ case 6:
238
+ _e++;
239
+ return [3 /*break*/, 4];
240
+ case 7:
241
+ for (i = 0; i < finalData.length; i++) {
242
+ _g = (_c = finalData[i].useTime) !== null && _c !== void 0 ? _c : ['equal', 1], mode = _g[0], number = _g[1];
243
+ if (number === -1) {
244
+ continue;
245
+ }
246
+ switch (mode) {
247
+ case 'equal':
248
+ if (number !== usage[i]) {
249
+ differences.push({
250
+ finalRow: finalData[i].row,
251
+ index: i,
252
+ message: "expect this final row to be used ".concat(number, " times, but It got used ").concat(usage[i], " times")
253
+ });
254
+ }
255
+ break;
256
+ case 'lessThanEqual':
257
+ if (number < usage[i]) {
258
+ differences.push({
259
+ finalRow: finalData[i].row,
260
+ index: i,
261
+ message: "expect this final row to be used less than ".concat(number, " times, but It got used ").concat(usage[i], " times")
262
+ });
263
+ }
264
+ break;
265
+ case 'moreThanEqual':
266
+ if (number > usage[i]) {
267
+ differences.push({
268
+ finalRow: finalData[i].row,
269
+ index: i,
270
+ message: "expect this final row to be more than ".concat(number, " times, but It got used ").concat(usage[i], " times")
271
+ });
272
+ }
273
+ break;
274
+ }
275
+ }
276
+ if (!(lengthCheck !== undefined)) return [3 /*break*/, 10];
277
+ if (!(typeof lengthCheck === 'function')) return [3 /*break*/, 9];
278
+ return [4 /*yield*/, lengthCheck(selectResult.value)];
279
+ case 8:
280
+ result = _h.sent();
281
+ if (!result.ok) {
282
+ differences.push("length check failed ".concat(result.error));
283
+ }
284
+ return [3 /*break*/, 10];
285
+ case 9:
286
+ if (selectResult.value.length !== lengthCheck) {
287
+ differences.push("length check failed expected(".concat(lengthCheck, ") received(").concat(selectResult.value.length, ")"));
288
+ }
289
+ _h.label = 10;
290
+ case 10: return [2 /*return*/];
291
+ }
292
+ });
293
+ };
294
+ _a = 0, sortedTablesWithData_2 = sortedTablesWithData;
295
+ _d.label = 7;
296
+ case 7:
297
+ if (!(_a < sortedTablesWithData_2.length)) return [3 /*break*/, 10];
298
+ _b = sortedTablesWithData_2[_a], table = _b.table, finalData = _b.finalData, skipIt = _b.skipIt, lengthCheck = _b.lengthCheck;
299
+ return [5 /*yield**/, _loop_1(table, finalData, skipIt, lengthCheck)];
300
+ case 8:
301
+ state_1 = _d.sent();
302
+ if (typeof state_1 === "object")
303
+ return [2 /*return*/, state_1.value];
304
+ _d.label = 9;
305
+ case 9:
306
+ _a++;
307
+ return [3 /*break*/, 7];
308
+ case 10:
309
+ if (differences.length !== 0) {
310
+ error = (0, never_catch_1.err)(differences);
311
+ }
312
+ if (rollback) {
313
+ return [2 /*return*/, (0, never_catch_1.err)(undefined)];
314
+ }
315
+ else {
316
+ return [2 /*return*/, (0, never_catch_1.ok)(undefined)];
317
+ }
318
+ return [2 /*return*/];
319
+ }
320
+ });
321
+ }); }, isolationLevel)];
322
+ case 1:
323
+ _a.sent();
324
+ if (error === undefined) {
325
+ return [2 /*return*/, undefined];
326
+ }
327
+ else {
328
+ throw error;
329
+ }
330
+ return [2 /*return*/];
331
+ }
332
+ });
333
+ });
334
+ };
335
+ exports.testTransaction = testTransaction;
336
+ var createTestTableData = function (table, startData, finalData, skipIt, lengthCheck) { return ({
337
+ table: table,
338
+ startData: startData,
339
+ finalData: finalData,
340
+ skipIt: skipIt,
341
+ lengthCheck: lengthCheck
342
+ }); };
343
+ exports.createTestTableData = createTestTableData;
334
344
  //# sourceMappingURL=testUtil.js.map