@mrnafisia/type-query 1.0.40 → 1.0.41

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 (53) hide show
  1. package/README.md +2 -2
  2. package/dist/U.d.ts +2 -2
  3. package/dist/U.js +27 -27
  4. package/dist/context.d.ts +987 -987
  5. package/dist/context.js +85 -85
  6. package/dist/dictionary.d.ts +12 -12
  7. package/dist/dictionary.js +179 -179
  8. package/dist/entity.d.ts +3476 -3474
  9. package/dist/entity.d.ts.map +1 -1
  10. package/dist/entity.js +977 -960
  11. package/dist/entity.js.map +1 -1
  12. package/dist/error.d.ts +4 -4
  13. package/dist/error.js +6 -6
  14. package/dist/index.d.ts +36 -36
  15. package/dist/index.js +60 -60
  16. package/dist/model.d.ts +1005 -1005
  17. package/dist/model.js +282 -282
  18. package/dist/parser.d.ts +11 -11
  19. package/dist/parser.js +120 -120
  20. package/dist/pool.d.ts +5 -5
  21. package/dist/pool.js +121 -121
  22. package/dist/schema.d.ts +25 -25
  23. package/dist/schema.js +395 -395
  24. package/dist/testUtil.d.ts +4 -4
  25. package/dist/testUtil.js +333 -330
  26. package/dist/testUtil.js.map +1 -1
  27. package/dist/types/context.d.ts +55 -55
  28. package/dist/types/context.d.ts.map +1 -1
  29. package/dist/types/context.js +2 -2
  30. package/dist/types/entity.d.ts +70 -70
  31. package/dist/types/entity.d.ts.map +1 -1
  32. package/dist/types/entity.js +2 -2
  33. package/dist/types/json.d.ts +8 -8
  34. package/dist/types/json.d.ts.map +1 -1
  35. package/dist/types/json.js +2 -2
  36. package/dist/types/model.d.ts +23 -23
  37. package/dist/types/model.d.ts.map +1 -1
  38. package/dist/types/model.js +2 -2
  39. package/dist/types/pool.d.ts +18 -18
  40. package/dist/types/pool.d.ts.map +1 -1
  41. package/dist/types/pool.js +2 -2
  42. package/dist/types/postgres.d.ts +9 -9
  43. package/dist/types/postgres.d.ts.map +1 -1
  44. package/dist/types/postgres.js +2 -2
  45. package/dist/types/table.d.ts +234 -234
  46. package/dist/types/table.d.ts.map +1 -1
  47. package/dist/types/table.js +2 -2
  48. package/dist/types/testUtil.d.ts +26 -26
  49. package/dist/types/testUtil.d.ts.map +1 -1
  50. package/dist/types/testUtil.js +2 -2
  51. package/dist/utils.d.ts +67 -67
  52. package/dist/utils.js +220 -220
  53. package/package.json +39 -39
package/dist/testUtil.js CHANGED
@@ -1,331 +1,334 @@
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 (_) 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, key, value, result, customCheckResult;
134
- return __generator(this, function (_m) {
135
- switch (_m.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
- _m.label = 1;
151
- case 1:
152
- if (!(i < candidateFinalData.length)) return [3 /*break*/, 8];
153
- found = true;
154
- finalRow = candidateFinalData[i].row;
155
- _j = [];
156
- for (_k in dbRow)
157
- _j.push(_k);
158
- _l = 0;
159
- _m.label = 2;
160
- case 2:
161
- if (!(_l < _j.length)) return [3 /*break*/, 6];
162
- key = _j[_l];
163
- value = finalRow[key];
164
- if (!(typeof value === 'function')) return [3 /*break*/, 4];
165
- return [4 /*yield*/, value(dbRow[key], dbRow, selectResult.value)];
166
- case 3:
167
- result = _m.sent();
168
- if (!result.ok) {
169
- tempDifferences.push({
170
- dbRow: dbRow,
171
- finalRow: finalRow,
172
- key: key,
173
- message: "->".concat(JSON.stringify(dbRow[key]), "<- did not accepted by match function")
174
- });
175
- found = false;
176
- }
177
- return [3 /*break*/, 5];
178
- case 4:
179
- if (!(0, lodash_1.isEqual)(dbRow[key], value)) {
180
- tempDifferences.push({
181
- dbRow: dbRow,
182
- finalRow: finalRow,
183
- key: key,
184
- message: "->".concat(JSON.stringify(dbRow[key]), "<- is not equal to ->").concat(JSON.stringify(value), "<-")
185
- });
186
- found = false;
187
- }
188
- _m.label = 5;
189
- case 5:
190
- _l++;
191
- return [3 /*break*/, 2];
192
- case 6:
193
- if (found) {
194
- usage[finalData.indexOf(candidateFinalData[i])]++;
195
- return [3 /*break*/, 8];
196
- }
197
- _m.label = 7;
198
- case 7:
199
- i++;
200
- return [3 /*break*/, 1];
201
- case 8:
202
- if (!(!found && skipIt !== undefined)) return [3 /*break*/, 10];
203
- return [4 /*yield*/, skipIt(dbRow)];
204
- case 9:
205
- customCheckResult = _m.sent();
206
- if (customCheckResult.ok) {
207
- found = true;
208
- }
209
- _m.label = 10;
210
- case 10:
211
- if (!found) {
212
- if (tempDifferences.length === 0) {
213
- tempDifferences.push("following row was not found ".concat(JSON.stringify(dbRow)));
214
- }
215
- differences.push.apply(differences, tempDifferences);
216
- }
217
- return [2 /*return*/];
218
- }
219
- });
220
- };
221
- _e = 0, _f = selectResult.value;
222
- _h.label = 4;
223
- case 4:
224
- if (!(_e < _f.length)) return [3 /*break*/, 7];
225
- dbRow = _f[_e];
226
- return [5 /*yield**/, _loop_2(dbRow)];
227
- case 5:
228
- _h.sent();
229
- _h.label = 6;
230
- case 6:
231
- _e++;
232
- return [3 /*break*/, 4];
233
- case 7:
234
- for (i = 0; i < finalData.length; i++) {
235
- _g = (_c = finalData[i].useTime) !== null && _c !== void 0 ? _c : ['equal', 1], mode = _g[0], number = _g[1];
236
- if (number === -1) {
237
- continue;
238
- }
239
- switch (mode) {
240
- case 'equal':
241
- if (number !== usage[i]) {
242
- differences.push({
243
- finalRow: finalData[i].row,
244
- index: i,
245
- message: "expect this final row to be used ".concat(number, " times, but It got used ").concat(usage[i], " times")
246
- });
247
- }
248
- break;
249
- case 'lessThanEqual':
250
- if (number < usage[i]) {
251
- differences.push({
252
- finalRow: finalData[i].row,
253
- index: i,
254
- message: "expect this final row to be used less than ".concat(number, " times, but It got used ").concat(usage[i], " times")
255
- });
256
- }
257
- break;
258
- case 'moreThanEqual':
259
- if (number > usage[i]) {
260
- differences.push({
261
- finalRow: finalData[i].row,
262
- index: i,
263
- message: "expect this final row to be more than ".concat(number, " times, but It got used ").concat(usage[i], " times")
264
- });
265
- }
266
- break;
267
- }
268
- }
269
- if (!(lengthCheck !== undefined)) return [3 /*break*/, 10];
270
- if (!(typeof lengthCheck === 'function')) return [3 /*break*/, 9];
271
- return [4 /*yield*/, lengthCheck(selectResult.value)];
272
- case 8:
273
- result = _h.sent();
274
- if (!result.ok) {
275
- differences.push("length check failed ".concat(result.error));
276
- }
277
- return [3 /*break*/, 10];
278
- case 9:
279
- if (selectResult.value.length !== lengthCheck) {
280
- differences.push("length check failed expected(".concat(lengthCheck, ") received(").concat(selectResult.value.length, ")"));
281
- }
282
- _h.label = 10;
283
- case 10: return [2 /*return*/];
284
- }
285
- });
286
- };
287
- _a = 0, sortedTablesWithData_2 = sortedTablesWithData;
288
- _d.label = 7;
289
- case 7:
290
- if (!(_a < sortedTablesWithData_2.length)) return [3 /*break*/, 10];
291
- _b = sortedTablesWithData_2[_a], table = _b.table, finalData = _b.finalData, skipIt = _b.skipIt, lengthCheck = _b.lengthCheck;
292
- return [5 /*yield**/, _loop_1(table, finalData, skipIt, lengthCheck)];
293
- case 8:
294
- state_1 = _d.sent();
295
- if (typeof state_1 === "object")
296
- return [2 /*return*/, state_1.value];
297
- _d.label = 9;
298
- case 9:
299
- _a++;
300
- return [3 /*break*/, 7];
301
- case 10:
302
- if (differences.length !== 0) {
303
- error = (0, never_catch_1.err)(differences);
304
- }
305
- if (rollback) {
306
- return [2 /*return*/, (0, never_catch_1.err)(undefined)];
307
- }
308
- else {
309
- return [2 /*return*/, (0, never_catch_1.ok)(undefined)];
310
- }
311
- return [2 /*return*/];
312
- }
313
- });
314
- }); }, isolationLevel)];
315
- case 1:
316
- _a.sent();
317
- if (error === undefined) {
318
- return [2 /*return*/, undefined];
319
- }
320
- else {
321
- throw error;
322
- }
323
- return [2 /*return*/];
324
- }
325
- });
326
- });
327
- };
328
- exports.testTransaction = testTransaction;
329
- var createTestTableData = function (table, startData, finalData, skipIt, lengthCheck) { return ({ table: table, startData: startData, finalData: finalData, skipIt: skipIt, lengthCheck: lengthCheck }); };
330
- 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).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;
331
334
  //# sourceMappingURL=testUtil.js.map