@mrnafisia/type-query 1.2.11 → 2.0.0

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 (124) hide show
  1. package/dist/prd.tsconfig.tsbuildinfo +1 -0
  2. package/dist/src/Table.d.ts +82 -0
  3. package/dist/src/Table.d.ts.map +1 -0
  4. package/dist/{types/pool.js → src/Table.js} +3 -3
  5. package/dist/{types → src}/Table.js.map +1 -1
  6. package/dist/src/context.d.ts +76 -0
  7. package/dist/src/context.d.ts.map +1 -0
  8. package/dist/src/context.js +70 -0
  9. package/dist/src/context.js.map +1 -0
  10. package/dist/src/createModelParser.d.ts +33 -0
  11. package/dist/src/createModelParser.d.ts.map +1 -0
  12. package/dist/src/createModelParser.js +178 -0
  13. package/dist/src/createModelParser.js.map +1 -0
  14. package/dist/src/ddl.d.ts +11 -0
  15. package/dist/src/ddl.d.ts.map +1 -0
  16. package/dist/src/ddl.js +83 -0
  17. package/dist/src/ddl.js.map +1 -0
  18. package/dist/src/entity.d.ts +100 -0
  19. package/dist/src/entity.d.ts.map +1 -0
  20. package/dist/src/entity.js +425 -0
  21. package/dist/src/entity.js.map +1 -0
  22. package/dist/src/index.d.ts +10 -0
  23. package/dist/src/index.d.ts.map +1 -0
  24. package/dist/src/index.js +54 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/keywords.d.ts +143 -0
  27. package/dist/src/keywords.d.ts.map +1 -0
  28. package/dist/src/keywords.js +169 -0
  29. package/dist/src/keywords.js.map +1 -0
  30. package/dist/src/resolve.d.ts +15 -0
  31. package/dist/src/resolve.d.ts.map +1 -0
  32. package/dist/src/resolve.js +535 -0
  33. package/dist/src/resolve.js.map +1 -0
  34. package/dist/src/testTransaction.d.ts +19 -0
  35. package/dist/src/testTransaction.d.ts.map +1 -0
  36. package/dist/src/testTransaction.js +85 -0
  37. package/dist/src/testTransaction.js.map +1 -0
  38. package/dist/src/transaction.d.ts +6 -0
  39. package/dist/src/transaction.d.ts.map +1 -0
  40. package/dist/src/transaction.js +28 -0
  41. package/dist/src/transaction.js.map +1 -0
  42. package/dist/src/utils.d.ts +70 -0
  43. package/dist/src/utils.d.ts.map +1 -0
  44. package/dist/src/utils.js +229 -0
  45. package/dist/src/utils.js.map +1 -0
  46. package/package.json +42 -38
  47. package/dist/U.d.ts +0 -3
  48. package/dist/U.d.ts.map +0 -1
  49. package/dist/U.js +0 -29
  50. package/dist/U.js.map +0 -1
  51. package/dist/cast.d.ts +0 -15
  52. package/dist/cast.d.ts.map +0 -1
  53. package/dist/cast.js +0 -151
  54. package/dist/cast.js.map +0 -1
  55. package/dist/context.d.ts +0 -949
  56. package/dist/context.d.ts.map +0 -1
  57. package/dist/context.js +0 -85
  58. package/dist/context.js.map +0 -1
  59. package/dist/dictionary.d.ts +0 -13
  60. package/dist/dictionary.d.ts.map +0 -1
  61. package/dist/dictionary.js +0 -180
  62. package/dist/dictionary.js.map +0 -1
  63. package/dist/entity.d.ts +0 -3469
  64. package/dist/entity.d.ts.map +0 -1
  65. package/dist/entity.js +0 -1067
  66. package/dist/entity.js.map +0 -1
  67. package/dist/error.d.ts +0 -5
  68. package/dist/error.d.ts.map +0 -1
  69. package/dist/error.js +0 -8
  70. package/dist/error.js.map +0 -1
  71. package/dist/index.d.ts +0 -19
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/index.js +0 -35
  74. package/dist/index.js.map +0 -1
  75. package/dist/model.d.ts +0 -967
  76. package/dist/model.d.ts.map +0 -1
  77. package/dist/model.js +0 -244
  78. package/dist/model.js.map +0 -1
  79. package/dist/pool.d.ts +0 -7
  80. package/dist/pool.d.ts.map +0 -1
  81. package/dist/pool.js +0 -123
  82. package/dist/pool.js.map +0 -1
  83. package/dist/schema.d.ts +0 -26
  84. package/dist/schema.d.ts.map +0 -1
  85. package/dist/schema.js +0 -406
  86. package/dist/schema.js.map +0 -1
  87. package/dist/testUtil.d.ts +0 -5
  88. package/dist/testUtil.d.ts.map +0 -1
  89. package/dist/testUtil.js +0 -338
  90. package/dist/testUtil.js.map +0 -1
  91. package/dist/types/Context.d.ts +0 -52
  92. package/dist/types/Context.d.ts.map +0 -1
  93. package/dist/types/Context.js +0 -3
  94. package/dist/types/Context.js.map +0 -1
  95. package/dist/types/Entity.d.ts +0 -71
  96. package/dist/types/Entity.d.ts.map +0 -1
  97. package/dist/types/Entity.js +0 -3
  98. package/dist/types/Entity.js.map +0 -1
  99. package/dist/types/Json.d.ts +0 -9
  100. package/dist/types/Json.d.ts.map +0 -1
  101. package/dist/types/Json.js +0 -3
  102. package/dist/types/Json.js.map +0 -1
  103. package/dist/types/Model.d.ts +0 -22
  104. package/dist/types/Model.d.ts.map +0 -1
  105. package/dist/types/Model.js +0 -3
  106. package/dist/types/Model.js.map +0 -1
  107. package/dist/types/Table.d.ts +0 -234
  108. package/dist/types/Table.d.ts.map +0 -1
  109. package/dist/types/Table.js +0 -3
  110. package/dist/types/pool.d.ts +0 -19
  111. package/dist/types/pool.d.ts.map +0 -1
  112. package/dist/types/pool.js.map +0 -1
  113. package/dist/types/postgres.d.ts +0 -10
  114. package/dist/types/postgres.d.ts.map +0 -1
  115. package/dist/types/postgres.js +0 -3
  116. package/dist/types/postgres.js.map +0 -1
  117. package/dist/types/testUtil.d.ts +0 -27
  118. package/dist/types/testUtil.d.ts.map +0 -1
  119. package/dist/types/testUtil.js +0 -3
  120. package/dist/types/testUtil.js.map +0 -1
  121. package/dist/utils.d.ts +0 -68
  122. package/dist/utils.d.ts.map +0 -1
  123. package/dist/utils.js +0 -221
  124. package/dist/utils.js.map +0 -1
@@ -0,0 +1,535 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.resolveResult = exports.resolveReturning = exports.resolveColumn = exports.resolveExpression = exports.partialQuery = void 0;
30
+ const U = __importStar(require("./utils"));
31
+ const decimal_js_1 = __importDefault(require("decimal.js"));
32
+ const never_catch_1 = require("never-catch");
33
+ const keywords_1 = require("./keywords");
34
+ const partialQuery = (text = '', params = []) => ({ text, params });
35
+ exports.partialQuery = partialQuery;
36
+ const resolveExpression = (expression, paramsStart, ignore = false) => {
37
+ if (expression === undefined) {
38
+ return ignore ? (0, never_catch_1.ok)(partialQuery()) : (0, never_catch_1.err)('undefined');
39
+ }
40
+ if (expression === null ||
41
+ typeof expression === 'boolean' ||
42
+ expression instanceof decimal_js_1.default ||
43
+ expression instanceof Date ||
44
+ typeof expression === 'number' ||
45
+ typeof expression === 'bigint') {
46
+ return (0, never_catch_1.ok)(partialQuery(U.stringify(expression, true)));
47
+ }
48
+ if (typeof expression === 'string') {
49
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}`, [U.stringify(expression, false)]));
50
+ }
51
+ if (!Array.isArray(expression)) {
52
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}::JSONB`, [
53
+ U.stringify(expression, false)
54
+ ]));
55
+ }
56
+ const tokens = [];
57
+ const operator = expression[0];
58
+ if (operator === keywords_1.OperatorCode.Value) {
59
+ if (expression[1] === undefined) {
60
+ return ignore
61
+ ? (0, never_catch_1.ok)(partialQuery())
62
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> undefined`);
63
+ }
64
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}`, [
65
+ U.stringify(expression[1], false)
66
+ ]));
67
+ }
68
+ if (operator === keywords_1.OperatorCode.IsNull ||
69
+ operator === keywords_1.OperatorCode.IsNotNull ||
70
+ operator === keywords_1.OperatorCode.IsTrue ||
71
+ operator === keywords_1.OperatorCode.IsFalse ||
72
+ operator === keywords_1.OperatorCode.Not) {
73
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
74
+ if (!expressionResult.ok) {
75
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${expressionResult.error}`);
76
+ }
77
+ if (expressionResult.value.text === '') {
78
+ return ignore
79
+ ? (0, never_catch_1.ok)(partialQuery())
80
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> neutral`);
81
+ }
82
+ switch (operator) {
83
+ case keywords_1.OperatorCode.IsNull:
84
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IS NULL`, expressionResult.value.params));
85
+ case keywords_1.OperatorCode.IsNotNull:
86
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IS NOT NULL`, expressionResult.value.params));
87
+ case keywords_1.OperatorCode.IsTrue:
88
+ return (0, never_catch_1.ok)(partialQuery(expressionResult.value.text, expressionResult.value.params));
89
+ case keywords_1.OperatorCode.IsFalse:
90
+ case keywords_1.OperatorCode.Not:
91
+ return (0, never_catch_1.ok)(partialQuery(`NOT ${expressionResult.value.text}`, expressionResult.value.params));
92
+ }
93
+ }
94
+ if (operator === keywords_1.OperatorCode.Sum ||
95
+ operator === keywords_1.OperatorCode.Subtract ||
96
+ operator === keywords_1.OperatorCode.Multiply ||
97
+ operator === keywords_1.OperatorCode.Divide ||
98
+ operator === keywords_1.OperatorCode.Power ||
99
+ operator === keywords_1.OperatorCode.Concat ||
100
+ operator === keywords_1.OperatorCode.And ||
101
+ operator === keywords_1.OperatorCode.Or) {
102
+ const params = [];
103
+ for (const item of expression[1]) {
104
+ const itemResult = resolveExpression(item, paramsStart, ignore);
105
+ if (!itemResult.ok) {
106
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${expression[1].indexOf(item)} -> ${itemResult.error}`);
107
+ }
108
+ if (itemResult.value.text === '') {
109
+ if (ignore) {
110
+ continue;
111
+ }
112
+ else {
113
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${expression[1].indexOf(item)} -> neutral`);
114
+ }
115
+ }
116
+ params.push(...itemResult.value.params);
117
+ paramsStart += itemResult.value.params.length;
118
+ tokens.push(itemResult.value.text);
119
+ }
120
+ switch (tokens.length) {
121
+ case 0:
122
+ return ignore
123
+ ? (0, never_catch_1.ok)(partialQuery())
124
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> no operands given`);
125
+ case 1:
126
+ return (0, never_catch_1.ok)(partialQuery(tokens[0], params));
127
+ default:
128
+ switch (operator) {
129
+ case keywords_1.OperatorCode.Sum:
130
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' + ')})`, params));
131
+ case keywords_1.OperatorCode.Subtract:
132
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' - ')})`, params));
133
+ case keywords_1.OperatorCode.Multiply:
134
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' * ')})`, params));
135
+ case keywords_1.OperatorCode.Divide:
136
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' / ')})`, params));
137
+ case keywords_1.OperatorCode.Concat:
138
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' || ')})`, params));
139
+ case keywords_1.OperatorCode.And:
140
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' AND ')})`, params));
141
+ case keywords_1.OperatorCode.Or:
142
+ return (0, never_catch_1.ok)(partialQuery(`(${tokens.join(' OR ')})`, params));
143
+ }
144
+ if (operator === keywords_1.OperatorCode.Power) {
145
+ const tmp = tokens.pop();
146
+ tokens.splice(0, 0, 'a');
147
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(', POWER(').substring(3) +
148
+ ', ' +
149
+ tmp +
150
+ ')'.repeat(tokens.length - 1), params));
151
+ }
152
+ }
153
+ }
154
+ if (operator === keywords_1.OperatorCode.Function) {
155
+ const params = [];
156
+ for (const item of expression[2]) {
157
+ const itemResult = resolveExpression(item, paramsStart, ignore);
158
+ if (!itemResult.ok) {
159
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> parameters -> ${expression[2].indexOf(item)} -> ${itemResult.error}`);
160
+ }
161
+ if (itemResult.value.text === '') {
162
+ return ignore
163
+ ? (0, never_catch_1.ok)(partialQuery())
164
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> parameters -> ${expression[2].indexOf(item)} -> neutral`);
165
+ }
166
+ params.push(...itemResult.value.params);
167
+ paramsStart += itemResult.value.params.length;
168
+ tokens.push(itemResult.value.text);
169
+ }
170
+ return (0, never_catch_1.ok)(partialQuery(`${expression[1]}(${tokens.join(', ')})${expression[3]}`, params));
171
+ }
172
+ if (operator === keywords_1.OperatorCode.SwitchCase) {
173
+ const params = [];
174
+ for (const item of expression[1]) {
175
+ const whenResult = resolveExpression(item.when, paramsStart, ignore);
176
+ if (!whenResult.ok) {
177
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> when -> ${whenResult.error}`);
178
+ }
179
+ if (whenResult.value.text === '') {
180
+ if (ignore) {
181
+ continue;
182
+ }
183
+ else {
184
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> when -> neutral`);
185
+ }
186
+ }
187
+ params.push(...whenResult.value.params);
188
+ paramsStart += whenResult.value.params.length;
189
+ const thenResult = resolveExpression(item.then, paramsStart, ignore);
190
+ if (!thenResult.ok) {
191
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> then -> ${thenResult.error}`);
192
+ }
193
+ if (thenResult.value.text === '') {
194
+ if (ignore) {
195
+ continue;
196
+ }
197
+ else {
198
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> ${expression[1].indexOf(item)} -> then -> neutral`);
199
+ }
200
+ }
201
+ params.push(...thenResult.value.params);
202
+ paramsStart += thenResult.value.params.length;
203
+ if (tokens.length === 0) {
204
+ tokens.push('CASE');
205
+ }
206
+ tokens.push(`WHEN ${whenResult.value.text} THEN ${thenResult.value.text}`);
207
+ }
208
+ if (tokens.length === 0 && !ignore) {
209
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> cases -> empty`);
210
+ }
211
+ const otherwiseResult = resolveExpression(expression[2], paramsStart, ignore);
212
+ if (!otherwiseResult.ok) {
213
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> ${otherwiseResult.error}`);
214
+ }
215
+ params.push(...otherwiseResult.value.params);
216
+ if (otherwiseResult.value.text === '') {
217
+ if (ignore) {
218
+ if (tokens.length === 0) {
219
+ return (0, never_catch_1.ok)(partialQuery());
220
+ }
221
+ else {
222
+ tokens.push('END');
223
+ }
224
+ }
225
+ else {
226
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> neutral`);
227
+ }
228
+ }
229
+ else {
230
+ if (tokens.length !== 0) {
231
+ tokens.push('ELSE', otherwiseResult.value.text, 'END');
232
+ }
233
+ else {
234
+ tokens.push(otherwiseResult.value.text);
235
+ }
236
+ }
237
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(' '), params));
238
+ }
239
+ if (operator === keywords_1.OperatorCode.Column) {
240
+ return (0, never_catch_1.ok)(partialQuery(`${expression[1]}`));
241
+ }
242
+ if (operator === keywords_1.OperatorCode.Raw) {
243
+ const rawExpression = expression[1](paramsStart);
244
+ return (0, never_catch_1.ok)(partialQuery(rawExpression.expression, rawExpression.params));
245
+ }
246
+ if (operator === keywords_1.OperatorCode.Ignore) {
247
+ const expressionResult = resolveExpression(expression[1], paramsStart, true);
248
+ if (!expressionResult.ok) {
249
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> expression -> ${expressionResult.error}`);
250
+ }
251
+ if (expressionResult.value.text !== '') {
252
+ return (0, never_catch_1.ok)(partialQuery(expressionResult.value.text, expressionResult.value.params));
253
+ }
254
+ const otherwiseResult = resolveExpression(expression[2], paramsStart, false);
255
+ if (!otherwiseResult.ok) {
256
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> ${otherwiseResult.error}`);
257
+ }
258
+ if (otherwiseResult.value.text === '') {
259
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> otherwise -> neutral`);
260
+ }
261
+ return (0, never_catch_1.ok)(partialQuery(otherwiseResult.value.text, otherwiseResult.value.params));
262
+ }
263
+ if (operator === keywords_1.OperatorCode.IsEqual ||
264
+ operator === keywords_1.OperatorCode.IsNotEqual ||
265
+ operator === keywords_1.OperatorCode.IsGreater ||
266
+ operator === keywords_1.OperatorCode.IsGreaterEqual ||
267
+ operator === keywords_1.OperatorCode.IsLess ||
268
+ operator === keywords_1.OperatorCode.IsLessEqual ||
269
+ operator === keywords_1.OperatorCode.Like ||
270
+ operator === keywords_1.OperatorCode.JsonExist ||
271
+ operator === keywords_1.OperatorCode.JsonRightExist ||
272
+ operator === keywords_1.OperatorCode.JsonLeftExist ||
273
+ operator === keywords_1.OperatorCode.JsonRemove ||
274
+ operator === keywords_1.OperatorCode.JsonIndex ||
275
+ operator === keywords_1.OperatorCode.JsonIndexText) {
276
+ const params = [];
277
+ const expression1Result = resolveExpression(expression[1], paramsStart, ignore);
278
+ if (!expression1Result.ok) {
279
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expression1Result.error}`);
280
+ }
281
+ if (expression1Result.value.text === '') {
282
+ return ignore
283
+ ? (0, never_catch_1.ok)(partialQuery())
284
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
285
+ }
286
+ params.push(...expression1Result.value.params);
287
+ paramsStart += expression1Result.value.params.length;
288
+ const expression2Result = resolveExpression(expression[2], paramsStart, ignore);
289
+ if (!expression2Result.ok) {
290
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${expression2Result.error}`);
291
+ }
292
+ if (expression2Result.value.text === '') {
293
+ return ignore
294
+ ? (0, never_catch_1.ok)(partialQuery())
295
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> neutral`);
296
+ }
297
+ params.push(...expression2Result.value.params);
298
+ switch (operator) {
299
+ case keywords_1.OperatorCode.IsEqual:
300
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} = ${expression2Result.value.text}`, params));
301
+ case keywords_1.OperatorCode.IsNotEqual:
302
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} <> ${expression2Result.value.text}`, params));
303
+ case keywords_1.OperatorCode.IsGreater:
304
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} > ${expression2Result.value.text}`, params));
305
+ case keywords_1.OperatorCode.IsGreaterEqual:
306
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} >= ${expression2Result.value.text}`, params));
307
+ case keywords_1.OperatorCode.IsLess:
308
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} < ${expression2Result.value.text}`, params));
309
+ case keywords_1.OperatorCode.IsLessEqual:
310
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} <= ${expression2Result.value.text}`, params));
311
+ case keywords_1.OperatorCode.Like:
312
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} LIKE ${expression2Result.value.text}`, params));
313
+ case keywords_1.OperatorCode.JsonExist:
314
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} ? ${expression2Result.value.text}`, params));
315
+ case keywords_1.OperatorCode.JsonRightExist:
316
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} @> ${expression2Result.value.text}`, params));
317
+ case keywords_1.OperatorCode.JsonLeftExist:
318
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} <@ ${expression2Result.value.text}`, params));
319
+ case keywords_1.OperatorCode.JsonRemove:
320
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} - ${expression2Result.value.text}`, params));
321
+ case keywords_1.OperatorCode.JsonIndex:
322
+ return (0, never_catch_1.ok)(partialQuery(`${expression1Result.value.text} -> ${expression2Result.value.text}`, params));
323
+ case keywords_1.OperatorCode.JsonIndexText:
324
+ return (0, never_catch_1.ok)(partialQuery(expression[3] === undefined
325
+ ? `${expression1Result.value.text} ->> ${expression2Result.value.text}`
326
+ : `(${expression1Result.value.text} ->> ${expression2Result.value.text})${expression[3]}`, params));
327
+ }
328
+ }
329
+ if (operator === keywords_1.OperatorCode.InList ||
330
+ operator === keywords_1.OperatorCode.NotInList ||
331
+ operator === keywords_1.OperatorCode.LikeAll ||
332
+ operator === keywords_1.OperatorCode.LikeSome ||
333
+ operator === keywords_1.OperatorCode.JsonSomeExist ||
334
+ operator === keywords_1.OperatorCode.JsonAllExist ||
335
+ operator === keywords_1.OperatorCode.JsonRemoveAll) {
336
+ const params = [];
337
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
338
+ if (!expressionResult.ok) {
339
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expressionResult.error}`);
340
+ }
341
+ if (expressionResult.value.text === '') {
342
+ return ignore
343
+ ? (0, never_catch_1.ok)(partialQuery())
344
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
345
+ }
346
+ params.push(...expressionResult.value.params);
347
+ paramsStart += expressionResult.value.params.length;
348
+ for (const item of expression[2]) {
349
+ const itemResult = resolveExpression(item, paramsStart, ignore);
350
+ if (!itemResult.ok) {
351
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${expression[2].indexOf(item)} -> ${itemResult.error}`);
352
+ }
353
+ if (itemResult.value.text === '') {
354
+ if (ignore) {
355
+ continue;
356
+ }
357
+ else {
358
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${expression[1].indexOf(item)} -> neutral`);
359
+ }
360
+ }
361
+ params.push(...itemResult.value.params);
362
+ paramsStart += itemResult.value.params.length;
363
+ tokens.push(itemResult.value.text);
364
+ }
365
+ switch (tokens.length) {
366
+ case 0:
367
+ return ignore
368
+ ? (0, never_catch_1.ok)(partialQuery())
369
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> empty`);
370
+ case 1:
371
+ switch (operator) {
372
+ case keywords_1.OperatorCode.InList:
373
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} = ${tokens[0]}`, params));
374
+ case keywords_1.OperatorCode.NotInList:
375
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} <> ${tokens[0]}`, params));
376
+ case keywords_1.OperatorCode.LikeAll:
377
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE ${tokens[0]}`, params));
378
+ case keywords_1.OperatorCode.LikeSome:
379
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE ${tokens[0]}`, params));
380
+ case keywords_1.OperatorCode.JsonSomeExist:
381
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ? ${tokens[0]}`, params));
382
+ case keywords_1.OperatorCode.JsonAllExist:
383
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ? ${tokens[0]}`, params));
384
+ case keywords_1.OperatorCode.JsonRemoveAll:
385
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} - ${tokens[0]}`, params));
386
+ }
387
+ default:
388
+ switch (operator) {
389
+ case keywords_1.OperatorCode.InList:
390
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} IN (${tokens.join(', ')})`, params));
391
+ case keywords_1.OperatorCode.NotInList:
392
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} NOT IN (${tokens.join(', ')})`, params));
393
+ case keywords_1.OperatorCode.LikeAll:
394
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE ALL(ARRAY[${tokens.join(', ')}])`, params));
395
+ case keywords_1.OperatorCode.LikeSome:
396
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} LIKE SOME(ARRAY[${tokens.join(', ')}])`, params));
397
+ case keywords_1.OperatorCode.JsonSomeExist:
398
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ?| ARRAY[${tokens.join(', ')}]`, params));
399
+ case keywords_1.OperatorCode.JsonAllExist:
400
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} ?& ARRAY[${tokens.join(', ')}]`, params));
401
+ case keywords_1.OperatorCode.JsonRemoveAll:
402
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} - ARRAY[${tokens.join(', ')}]`, params));
403
+ }
404
+ }
405
+ }
406
+ if (operator === keywords_1.OperatorCode.Between) {
407
+ const params = [];
408
+ const expressionResult = resolveExpression(expression[1], paramsStart, ignore);
409
+ if (!expressionResult.ok) {
410
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> ${expressionResult.error}`);
411
+ }
412
+ if (expressionResult.value.text === '') {
413
+ return ignore
414
+ ? (0, never_catch_1.ok)(partialQuery())
415
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> first operand -> neutral`);
416
+ }
417
+ params.push(...expressionResult.value.params);
418
+ paramsStart += expressionResult.value.params.length;
419
+ const startExpressionResult = resolveExpression(expression[2], paramsStart, ignore);
420
+ if (!startExpressionResult.ok) {
421
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> ${startExpressionResult.error}`);
422
+ }
423
+ if (startExpressionResult.value.text === '') {
424
+ return ignore
425
+ ? (0, never_catch_1.ok)(partialQuery())
426
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> second operand -> neutral`);
427
+ }
428
+ params.push(...startExpressionResult.value.params);
429
+ paramsStart += startExpressionResult.value.params.length;
430
+ const endExpressionResult = resolveExpression(expression[3], paramsStart, ignore);
431
+ if (!endExpressionResult.ok) {
432
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> third operand -> ${endExpressionResult.error}`);
433
+ }
434
+ if (endExpressionResult.value.text === '') {
435
+ return ignore
436
+ ? (0, never_catch_1.ok)(partialQuery())
437
+ : (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> third operand -> neutral`);
438
+ }
439
+ params.push(...endExpressionResult.value.params);
440
+ return (0, never_catch_1.ok)(partialQuery(`${expressionResult.value.text} BETWEEN ${startExpressionResult.value.text} AND ${endExpressionResult.value.text}`, params));
441
+ }
442
+ if (operator === keywords_1.OperatorCode.SubQuery ||
443
+ operator === keywords_1.OperatorCode.SubQueryExist) {
444
+ const subQueryResult = expression[1].getData(Array(paramsStart - 1).fill(undefined));
445
+ if (!subQueryResult.ok) {
446
+ return (0, never_catch_1.err)(`${keywords_1.Dictionary.OperatorDescriptions[operator]} -> ${subQueryResult.error}`);
447
+ }
448
+ switch (operator) {
449
+ case keywords_1.OperatorCode.SubQuery:
450
+ return (0, never_catch_1.ok)(partialQuery(`(${subQueryResult.value.sql})`, subQueryResult.value.params));
451
+ case keywords_1.OperatorCode.SubQueryExist:
452
+ return (0, never_catch_1.ok)(partialQuery(`EXISTS(${subQueryResult.value.sql})`, subQueryResult.value.params));
453
+ }
454
+ }
455
+ return (0, never_catch_1.ok)(partialQuery(`$${paramsStart++}::JSONB`, [
456
+ U.stringify(expression, false)
457
+ ]));
458
+ };
459
+ exports.resolveExpression = resolveExpression;
460
+ const resolveColumn = (table, column, full = true, alias) => {
461
+ let prefix;
462
+ if (full) {
463
+ if (alias !== undefined) {
464
+ prefix = `"${alias}".`;
465
+ }
466
+ else {
467
+ prefix = `"${table.schemaName}"."${table.tableName}".`;
468
+ }
469
+ }
470
+ else {
471
+ prefix = '';
472
+ }
473
+ return prefix + `"${table.columns[column].title ?? column}"`;
474
+ };
475
+ exports.resolveColumn = resolveColumn;
476
+ const resolveReturning = (getColumnTitleAndAlias, columns, paramsStart) => {
477
+ const tokens = [];
478
+ const params = [];
479
+ for (const column of columns) {
480
+ if (typeof column === 'object') {
481
+ const resolvedExpResult = resolveExpression(column.expression, paramsStart, false);
482
+ if (!resolvedExpResult.ok) {
483
+ return (0, never_catch_1.err)(`returning -> ${column.name} -> ${resolvedExpResult.error}`);
484
+ }
485
+ if (resolvedExpResult.value.text === '') {
486
+ return (0, never_catch_1.err)(`returning -> ${column.name} -> neutral`);
487
+ }
488
+ params.push(...resolvedExpResult.value.params);
489
+ paramsStart += resolvedExpResult.value.params.length;
490
+ tokens.push(`(${resolvedExpResult.value.text}) AS "${column.name}"`);
491
+ }
492
+ else {
493
+ const [title, alias] = getColumnTitleAndAlias(column);
494
+ if (title === undefined) {
495
+ if (alias !== undefined) {
496
+ tokens.push(`"${alias}".` +
497
+ `"${column.substring((alias + '_').length)}"` +
498
+ ` AS "${column}"`);
499
+ }
500
+ else {
501
+ tokens.push(`"${column}"`);
502
+ }
503
+ }
504
+ else {
505
+ tokens.push((alias !== undefined ? `"${alias}".` : '') +
506
+ `"${title}"` +
507
+ ` AS "${column}"`);
508
+ }
509
+ }
510
+ }
511
+ if (tokens.length === 0) {
512
+ return (0, never_catch_1.err)('returning -> empty');
513
+ }
514
+ return (0, never_catch_1.ok)(partialQuery(tokens.join(', '), params));
515
+ };
516
+ exports.resolveReturning = resolveReturning;
517
+ const resolveResult = (rows, mode) => {
518
+ if (mode[0] === 'count') {
519
+ return rows.length === mode[1]
520
+ ? (0, never_catch_1.ok)(undefined)
521
+ : (0, never_catch_1.err)(false);
522
+ }
523
+ if (mode[0] === 'get' &&
524
+ rows.length !== (mode[1] === 'one' ? 1 : mode[1])) {
525
+ return (0, never_catch_1.err)(false);
526
+ }
527
+ if (mode[0] === 'get' && mode[1] === 'one') {
528
+ return (0, never_catch_1.ok)(rows[0]);
529
+ }
530
+ else {
531
+ return (0, never_catch_1.ok)(rows);
532
+ }
533
+ };
534
+ exports.resolveResult = resolveResult;
535
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Pool, PoolClient } from 'pg';
2
+ import { NullableType, Schema, Table } from './Table';
3
+ import { NullableAndDefaultColumns } from './entity';
4
+ import { TransactionIsolationLevel } from './transaction';
5
+ type TestTableData<S extends Schema = Schema> = {
6
+ table: Table<S>;
7
+ startData: ({
8
+ [key in Exclude<keyof S, keyof NullableAndDefaultColumns<S>>]: NullableType<S[key]['type'], S[key]['nullable']>;
9
+ } & {
10
+ [key in keyof NullableAndDefaultColumns<S>]?: NullableType<S[key]['type'], S[key]['nullable']>;
11
+ })[];
12
+ finalData: {
13
+ [key in keyof S]: NullableType<S[key]['type'], S[key]['nullable']>;
14
+ }[];
15
+ };
16
+ declare const isEqual: (a: unknown, b: unknown) => boolean;
17
+ declare const testTransaction: (tablesWithData: TestTableData[], callback: (client: PoolClient) => Promise<void>, pool: Pool, isolationLevel?: TransactionIsolationLevel, rollback?: boolean) => Promise<void>;
18
+ export { type TestTableData, isEqual, testTransaction };
19
+ //# sourceMappingURL=testTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testTransaction.d.ts","sourceRoot":"","sources":["../../src/testTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAgB,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAe,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGvE,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC5C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,SAAS,EAAE,CAAC;SACP,GAAG,IAAI,OAAO,CACX,MAAM,CAAC,EACP,MAAM,yBAAyB,CAAC,CAAC,CAAC,CACrC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;KACvD,GAAG;SACC,GAAG,IAAI,MAAM,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CACtD,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EACd,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CACrB;KACJ,CAAC,EAAE,CAAC;IACL,SAAS,EAAE;SACN,GAAG,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;KACrE,EAAE,CAAC;CACP,CAAC;AAEF,QAAA,MAAM,OAAO,MAAO,OAAO,KAAK,OAAO,KAAG,OAqBzC,CAAC;AAEF,QAAA,MAAM,eAAe,mBACD,aAAa,EAAE,qBACZ,UAAU,KAAK,QAAQ,IAAI,CAAC,QACzC,IAAI,qEAGX,QAAQ,IAAI,CA6FT,CAAC;AAEP,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC"}