@mrnafisia/type-query 1.0.49 → 1.0.51

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 (44) hide show
  1. package/README.md +2 -2
  2. package/dist/U.d.ts +2 -2
  3. package/dist/U.js +28 -28
  4. package/dist/context.d.ts +987 -987
  5. package/dist/context.js +84 -84
  6. package/dist/dictionary.d.ts +12 -12
  7. package/dist/dictionary.js +179 -179
  8. package/dist/entity.d.ts +3585 -3585
  9. package/dist/entity.js +1053 -1053
  10. package/dist/error.d.ts +4 -4
  11. package/dist/error.js +7 -7
  12. package/dist/index.d.ts +18 -18
  13. package/dist/index.js +56 -56
  14. package/dist/model.d.ts +1005 -1005
  15. package/dist/model.js +282 -282
  16. package/dist/parser.d.ts +11 -11
  17. package/dist/parser.d.ts.map +1 -1
  18. package/dist/parser.js +123 -120
  19. package/dist/parser.js.map +1 -1
  20. package/dist/pool.d.ts +5 -5
  21. package/dist/pool.js +122 -122
  22. package/dist/schema.d.ts +25 -25
  23. package/dist/schema.js +405 -405
  24. package/dist/testUtil.d.ts +4 -4
  25. package/dist/testUtil.js +343 -343
  26. package/dist/types/context.d.ts +51 -51
  27. package/dist/types/context.js +2 -2
  28. package/dist/types/entity.d.ts +70 -70
  29. package/dist/types/entity.js +2 -2
  30. package/dist/types/json.d.ts +8 -8
  31. package/dist/types/json.js +2 -2
  32. package/dist/types/model.d.ts +23 -23
  33. package/dist/types/model.js +2 -2
  34. package/dist/types/pool.d.ts +18 -18
  35. package/dist/types/pool.js +2 -2
  36. package/dist/types/postgres.d.ts +9 -9
  37. package/dist/types/postgres.js +2 -2
  38. package/dist/types/table.d.ts +233 -233
  39. package/dist/types/table.js +2 -2
  40. package/dist/types/testUtil.d.ts +26 -26
  41. package/dist/types/testUtil.js +2 -2
  42. package/dist/utils.d.ts +67 -67
  43. package/dist/utils.js +220 -220
  44. package/package.json +40 -40
package/dist/testUtil.js CHANGED
@@ -1,344 +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)
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;
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;
344
344
  //# sourceMappingURL=testUtil.js.map