@mrnafisia/type-query 1.2.6 → 1.2.8

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