tspace-mysql 1.9.0 → 1.9.1-beta.2

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 (118) hide show
  1. package/README.md +4580 -133
  2. package/dist/lib/config/index.d.ts +2 -2
  3. package/dist/lib/config/index.js +24 -16
  4. package/dist/lib/config/index.js.map +1 -1
  5. package/dist/lib/constants/index.d.ts +10 -1
  6. package/dist/lib/constants/index.js +11 -2
  7. package/dist/lib/constants/index.js.map +1 -1
  8. package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +27 -23
  9. package/dist/lib/core/Abstracts/AbstractBuilder.js +11 -13
  10. package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
  11. package/dist/lib/core/Abstracts/AbstractDB.d.ts +5 -2
  12. package/dist/lib/core/Abstracts/AbstractDB.js.map +1 -1
  13. package/dist/lib/core/Abstracts/AbstractModel.d.ts +7 -2
  14. package/dist/lib/core/Abstracts/AbstractModel.js.map +1 -1
  15. package/dist/lib/core/Abstracts/AbstractView.js.map +1 -1
  16. package/dist/lib/core/Blueprint.d.ts +37 -17
  17. package/dist/lib/core/Blueprint.js +38 -14
  18. package/dist/lib/core/Blueprint.js.map +1 -1
  19. package/dist/lib/core/Builder.d.ts +314 -42
  20. package/dist/lib/core/Builder.js +686 -391
  21. package/dist/lib/core/Builder.js.map +1 -1
  22. package/dist/lib/core/Cache/DBCache.js +19 -20
  23. package/dist/lib/core/Cache/DBCache.js.map +1 -1
  24. package/dist/lib/core/Cache/MemoryCache.js +3 -3
  25. package/dist/lib/core/Cache/MemoryCache.js.map +1 -1
  26. package/dist/lib/core/Cache/RedisCache.js +27 -17
  27. package/dist/lib/core/Cache/RedisCache.js.map +1 -1
  28. package/dist/lib/core/Cache/index.js +37 -17
  29. package/dist/lib/core/Cache/index.js.map +1 -1
  30. package/dist/lib/core/Contracts/AlterTable.d.ts +152 -0
  31. package/dist/lib/core/Contracts/AlterTable.js +243 -0
  32. package/dist/lib/core/Contracts/AlterTable.js.map +1 -0
  33. package/dist/lib/core/Contracts/Audit.d.ts +1 -1
  34. package/dist/lib/core/Contracts/Audit.js +2 -5
  35. package/dist/lib/core/Contracts/Audit.js.map +1 -1
  36. package/dist/lib/core/Contracts/Logger.d.ts +1 -1
  37. package/dist/lib/core/Contracts/Logger.js.map +1 -1
  38. package/dist/lib/core/DB.d.ts +103 -11
  39. package/dist/lib/core/DB.js +158 -32
  40. package/dist/lib/core/DB.js.map +1 -1
  41. package/dist/lib/core/Decorator.d.ts +144 -16
  42. package/dist/lib/core/Decorator.js +156 -14
  43. package/dist/lib/core/Decorator.js.map +1 -1
  44. package/dist/lib/core/Driver/index.d.ts +50 -14
  45. package/dist/lib/core/Driver/index.js +13 -9
  46. package/dist/lib/core/Driver/index.js.map +1 -1
  47. package/dist/lib/core/Driver/mariadb/MariadbDriver.js +84 -29
  48. package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
  49. package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.d.ts +48 -12
  50. package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js +189 -28
  51. package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js.map +1 -1
  52. package/dist/lib/core/Driver/mongodb/MongodbDriver.d.ts +24 -0
  53. package/dist/lib/core/Driver/mongodb/MongodbDriver.js +261 -0
  54. package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -0
  55. package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.d.ts +141 -0
  56. package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js +571 -0
  57. package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js.map +1 -0
  58. package/dist/lib/core/Driver/mysql/MysqlDriver.js +115 -97
  59. package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
  60. package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.d.ts +48 -12
  61. package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js +189 -28
  62. package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js.map +1 -1
  63. package/dist/lib/core/Driver/postgres/PostgresDriver.js +106 -73
  64. package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
  65. package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.d.ts +53 -12
  66. package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js +318 -48
  67. package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js.map +1 -1
  68. package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +21 -0
  69. package/dist/lib/core/Driver/sqlite/SqliteDriver.js +213 -0
  70. package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -0
  71. package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.d.ts +146 -0
  72. package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js +705 -0
  73. package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js.map +1 -0
  74. package/dist/lib/core/Join.d.ts +63 -5
  75. package/dist/lib/core/Join.js +92 -15
  76. package/dist/lib/core/Join.js.map +1 -1
  77. package/dist/lib/core/JoinModel.d.ts +65 -9
  78. package/dist/lib/core/JoinModel.js +81 -52
  79. package/dist/lib/core/JoinModel.js.map +1 -1
  80. package/dist/lib/core/Meta.d.ts +22 -16
  81. package/dist/lib/core/Meta.js +28 -21
  82. package/dist/lib/core/Meta.js.map +1 -1
  83. package/dist/lib/core/Model.d.ts +644 -134
  84. package/dist/lib/core/Model.js +1361 -631
  85. package/dist/lib/core/Model.js.map +1 -1
  86. package/dist/lib/{tools/index.d.ts → core/Package.d.ts} +11 -3
  87. package/dist/lib/{tools/index.js → core/Package.js} +20 -7
  88. package/dist/lib/core/Package.js.map +1 -0
  89. package/dist/lib/core/Pool.js +42 -30
  90. package/dist/lib/core/Pool.js.map +1 -1
  91. package/dist/lib/core/Queue.d.ts +249 -0
  92. package/dist/lib/core/Queue.js +726 -0
  93. package/dist/lib/core/Queue.js.map +1 -0
  94. package/dist/lib/core/RelationManager.d.ts +4 -4
  95. package/dist/lib/core/RelationManager.js +168 -41
  96. package/dist/lib/core/RelationManager.js.map +1 -1
  97. package/dist/lib/core/Repository.d.ts +73 -207
  98. package/dist/lib/core/Repository.js +122 -234
  99. package/dist/lib/core/Repository.js.map +1 -1
  100. package/dist/lib/core/Schema.d.ts +211 -1
  101. package/dist/lib/core/Schema.js +370 -65
  102. package/dist/lib/core/Schema.js.map +1 -1
  103. package/dist/lib/core/StateManager.d.ts +31 -12
  104. package/dist/lib/core/StateManager.js +11 -5
  105. package/dist/lib/core/StateManager.js.map +1 -1
  106. package/dist/lib/core/UtilityTypes.d.ts +103 -81
  107. package/dist/lib/core/UtilityTypes.js.map +1 -1
  108. package/dist/lib/core/index.d.ts +4 -0
  109. package/dist/lib/core/index.js +6 -2
  110. package/dist/lib/core/index.js.map +1 -1
  111. package/dist/lib/types/decorator/index.d.ts +1 -1
  112. package/dist/lib/types/index.d.ts +120 -30
  113. package/dist/lib/types/repository/index.d.ts +68 -37
  114. package/dist/lib/utils/index.d.ts +13 -2
  115. package/dist/lib/utils/index.js +81 -2
  116. package/dist/lib/utils/index.js.map +1 -1
  117. package/package.json +14 -6
  118. package/dist/lib/tools/index.js.map +0 -1
@@ -0,0 +1,571 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongodbQueryBuilder = void 0;
4
+ const __1 = require("..");
5
+ class MongodbQueryBuilder extends __1.QueryBuilder {
6
+ constructor(state) {
7
+ super(state);
8
+ }
9
+ select = () => {
10
+ let PIPELINE = [];
11
+ if (this.$state.get('SELECT')?.length &&
12
+ !this.$state.get('SELECT').some(v => v === '*')) {
13
+ const parseSelect = (arr) => {
14
+ const result = {};
15
+ for (const str of arr) {
16
+ const match = str.match(/`[^`]+`\.`([^`]+)`/);
17
+ if (!match)
18
+ continue;
19
+ const key = match[1];
20
+ result[key] = true;
21
+ }
22
+ return result;
23
+ };
24
+ const project = parseSelect(this.$state.get('SELECT'));
25
+ if (Object.keys(project).length) {
26
+ PIPELINE.push({
27
+ $project: project
28
+ });
29
+ }
30
+ }
31
+ if (this.$state.get('JOIN')?.length) {
32
+ const parseJoin = (join) => {
33
+ const type = /LEFT JOIN/i.test(join) ? "LEFT" :
34
+ /RIGHT JOIN/i.test(join) ? "RIGHT" :
35
+ "INNER";
36
+ const regex = /(INNER|LEFT|RIGHT)\s+JOIN\s+`(\w+)`\s+ON\s+`(\w+)`\.`(\w+)`\s*=\s*`(\w+)`\.`(\w+)`/i;
37
+ const match = join.match(regex);
38
+ if (!match)
39
+ return null;
40
+ const [, , from, localTable, localField, foreignTable, foreignField] = match;
41
+ return {
42
+ type,
43
+ from,
44
+ localField,
45
+ foreignField,
46
+ as: from
47
+ };
48
+ };
49
+ const joins = this.$state.get('JOIN');
50
+ for (const join of joins) {
51
+ const parsed = parseJoin(join);
52
+ if (!parsed)
53
+ continue;
54
+ if (parsed.type === "RIGHT") {
55
+ throw new Error("RIGHT JOIN is not supported in MongoDB aggregation pipeline.");
56
+ }
57
+ PIPELINE.push({
58
+ $lookup: {
59
+ from: parsed.from,
60
+ localField: parsed.localField,
61
+ foreignField: parsed.foreignField,
62
+ as: parsed.as
63
+ }
64
+ });
65
+ PIPELINE.push({
66
+ $unwind: {
67
+ path: `$${parsed.as}`,
68
+ preserveNullAndEmptyArrays: parsed.type === "INNER" ? false : true
69
+ }
70
+ });
71
+ }
72
+ }
73
+ if (this.$state.get('WHERE')?.length) {
74
+ PIPELINE.push({
75
+ $match: this._parseWheres(this.$state.get('WHERE'))
76
+ });
77
+ }
78
+ if (this.$state.get('SELECT')?.length &&
79
+ !this.$state.get('SELECT').some(v => v === '*')) {
80
+ const aggregate = this.$state.get('SELECT')
81
+ .map(col => {
82
+ const match = col.match(/\b(COUNT|AVG|SUM|MAX|MIN)\s*\((.*?)\)\s+AS\s+`?(\w+)`?/i);
83
+ if (!match)
84
+ return null;
85
+ return {
86
+ fn: match[1].toUpperCase(),
87
+ field: String(match[2].match(/`[^`]+`\.`([^`]+)`/)?.[1] ?? ''),
88
+ as: match[3]
89
+ };
90
+ })
91
+ .find(Boolean);
92
+ if (aggregate) {
93
+ switch (aggregate.fn) {
94
+ case 'COUNT':
95
+ PIPELINE.push({
96
+ $count: aggregate.as
97
+ });
98
+ break;
99
+ case 'SUM':
100
+ PIPELINE.push({
101
+ $group: {
102
+ _id: null,
103
+ [aggregate.as]: { $sum: `$${aggregate.field}` }
104
+ }
105
+ });
106
+ break;
107
+ case 'AVG':
108
+ PIPELINE.push({
109
+ $group: {
110
+ _id: null,
111
+ [aggregate.as]: { $avg: `$${aggregate.field}` }
112
+ }
113
+ });
114
+ break;
115
+ case 'MAX':
116
+ PIPELINE.push({
117
+ $group: {
118
+ _id: null,
119
+ [aggregate.as]: { $max: `$${aggregate.field}` }
120
+ }
121
+ });
122
+ break;
123
+ case 'MIN':
124
+ PIPELINE.push({
125
+ $group: {
126
+ _id: null,
127
+ [aggregate.as]: { $min: `$${aggregate.field}` }
128
+ }
129
+ });
130
+ break;
131
+ }
132
+ }
133
+ }
134
+ if (this.$state.get('ORDER_BY').length) {
135
+ PIPELINE.push({
136
+ $sort: this.$state.get('ORDER_BY')
137
+ });
138
+ }
139
+ if (this.$state.get('OFFSET')) {
140
+ PIPELINE.push({
141
+ $skip: this.$state.get('OFFSET')
142
+ });
143
+ }
144
+ if (this.$state.get('LIMIT')) {
145
+ PIPELINE.push({
146
+ $limit: this.$state.get('LIMIT')
147
+ });
148
+ }
149
+ const collection = this.$state.get('TABLE_NAME')?.replace(/\`/g, "");
150
+ const pipeline = `db.${collection}.aggregate(${JSON.stringify(PIPELINE)}).toArray()`;
151
+ return pipeline;
152
+ };
153
+ insert() {
154
+ const query = this.$state.get("INSERT");
155
+ if (!query)
156
+ return '';
157
+ const parseInsert = (input) => {
158
+ const normalizeColumn = (col) => col.replace(/`/g, '').split('.').pop() || '';
159
+ const splitValues = (str) => {
160
+ const result = [];
161
+ let current = '';
162
+ let inQuote = false;
163
+ for (let i = 0; i < str.length; i++) {
164
+ const char = str[i];
165
+ if (char === "'") {
166
+ inQuote = !inQuote;
167
+ continue;
168
+ }
169
+ if (char === ',' && !inQuote) {
170
+ result.push(current.trim());
171
+ current = '';
172
+ continue;
173
+ }
174
+ current += char;
175
+ }
176
+ if (current)
177
+ result.push(current.trim());
178
+ return result;
179
+ };
180
+ const parseValue = (val) => {
181
+ const v = val.trim();
182
+ if (!isNaN(Number(v)))
183
+ return Number(v);
184
+ if (v.toLowerCase() === 'true')
185
+ return true;
186
+ if (v.toLowerCase() === 'false')
187
+ return false;
188
+ if (v.toLowerCase() === 'null')
189
+ return null;
190
+ return v;
191
+ };
192
+ const columns = input.columns.map(normalizeColumn);
193
+ return input.values.map(row => {
194
+ const values = splitValues(row).map(parseValue);
195
+ const obj = {
196
+ "_id": this._objectId()
197
+ };
198
+ columns.forEach((col, i) => {
199
+ obj[col] = values[i];
200
+ });
201
+ return obj;
202
+ });
203
+ };
204
+ const collection = this.$state.get('TABLE_NAME')?.replace(/\`/g, "");
205
+ return `db.${collection}.insertMany(${JSON.stringify(parseInsert(query))})`;
206
+ }
207
+ update() {
208
+ const query = this.$state.get("UPDATE");
209
+ if (!query || !query.length)
210
+ return '';
211
+ const parseValue = (val) => {
212
+ const v = val.trim().replace(/^'|'$/g, '');
213
+ if (!isNaN(Number(v)))
214
+ return Number(v);
215
+ if (v.toLowerCase() === 'true')
216
+ return true;
217
+ if (v.toLowerCase() === 'false')
218
+ return false;
219
+ if (v.toLowerCase() === 'null')
220
+ return null;
221
+ return v;
222
+ };
223
+ const parseSet = (input) => {
224
+ const result = {};
225
+ input.forEach(pair => {
226
+ const [key, value] = pair.split('=');
227
+ const k = key.replace(/`/g, '').split('.').pop()?.trim() || '';
228
+ result[k] = parseValue(value);
229
+ });
230
+ return result;
231
+ };
232
+ const collection = this.$state.get('TABLE_NAME')?.replace(/`/g, "");
233
+ const update = {
234
+ $set: parseSet(query)
235
+ };
236
+ const filter = this._parseWheres(this.$state.get('WHERE'));
237
+ return `db.${collection}.updateMany(${JSON.stringify(filter)}, ${JSON.stringify(update)})`;
238
+ }
239
+ remove() {
240
+ const isDelete = this.$state.get("DELETE");
241
+ if (!isDelete) {
242
+ throw new Error("Bad query builder: DELETE state not enabled. Please check your query configuration.");
243
+ }
244
+ const collection = this.$state
245
+ .get("TABLE_NAME")
246
+ ?.replace(/`/g, "");
247
+ const filter = this._parseWheres(this.$state.get('WHERE'));
248
+ return `db.${collection}.deleteMany(${JSON.stringify(filter)})`;
249
+ }
250
+ any() {
251
+ if (this.$state.get("INSERT"))
252
+ return this.insert();
253
+ if (this.$state.get("UPDATE"))
254
+ return this.update();
255
+ if (this.$state.get("DELETE"))
256
+ return this.remove();
257
+ return this.select();
258
+ }
259
+ getColumns({ database, table }) {
260
+ throw new Error("Method not implemented.");
261
+ return '';
262
+ }
263
+ getSchema({ database, table }) {
264
+ throw new Error("Method not implemented.");
265
+ return '';
266
+ }
267
+ getTables(database) {
268
+ throw new Error("Method not implemented.");
269
+ return '';
270
+ }
271
+ hasTable({ database, table }) {
272
+ throw new Error("Method not implemented.");
273
+ return '';
274
+ }
275
+ createDatabase(database) {
276
+ throw new Error("Method not implemented.");
277
+ return '';
278
+ }
279
+ createTable({ database, table, schema, }) {
280
+ throw new Error("Method not implemented.");
281
+ return '';
282
+ }
283
+ addColumn({ table, column, type, attributes, after, }) {
284
+ throw new Error("Method not implemented.");
285
+ return '';
286
+ }
287
+ changeColumn({ table, column, type, attributes, }) {
288
+ throw new Error("Method not implemented.");
289
+ return '';
290
+ }
291
+ getChildFKs({ database, table }) {
292
+ throw new Error("Method not implemented.");
293
+ return '';
294
+ }
295
+ getFKs({ database, table }) {
296
+ throw new Error("Method not implemented.");
297
+ return '';
298
+ }
299
+ hasFK({ database, table, constraint, }) {
300
+ throw new Error("Method not implemented.");
301
+ return '';
302
+ }
303
+ addFK({ table, tableRef, key, constraint, foreign, }) {
304
+ throw new Error("Method not implemented.");
305
+ return '';
306
+ }
307
+ dropFK({ table, constraint, }) {
308
+ throw new Error("Method not implemented.");
309
+ return '';
310
+ }
311
+ getIndexes({ database, table }) {
312
+ throw new Error("Method not implemented.");
313
+ return '';
314
+ }
315
+ hasIndex({ database, table, name, }) {
316
+ throw new Error("Method not implemented.");
317
+ return '';
318
+ }
319
+ addIndex({ table, name, columns, }) {
320
+ throw new Error("Method not implemented.");
321
+ return '';
322
+ }
323
+ dropIndex({ table, name, }) {
324
+ throw new Error("Method not implemented.");
325
+ return '';
326
+ }
327
+ hasUnique({ database, table, name, }) {
328
+ throw new Error("Method not implemented.");
329
+ return '';
330
+ }
331
+ addUnique({ table, name, columns }) {
332
+ throw new Error("Method not implemented.");
333
+ return '';
334
+ }
335
+ dropUnique({ table, name, }) {
336
+ throw new Error("Method not implemented.");
337
+ return '';
338
+ }
339
+ hasPrimaryKey({ database, table, }) {
340
+ throw new Error("Method not implemented.");
341
+ return '';
342
+ }
343
+ addPrimaryKey({ table, columns, }) {
344
+ throw new Error("Method not implemented.");
345
+ return '';
346
+ }
347
+ dropPrimaryKey({ table }) {
348
+ throw new Error("Method not implemented.");
349
+ return '';
350
+ }
351
+ getDatabase(database) {
352
+ throw new Error("Method not implemented.");
353
+ return '';
354
+ }
355
+ dropDatabase(database) {
356
+ throw new Error("Method not implemented.");
357
+ return '';
358
+ }
359
+ dropView(view) {
360
+ throw new Error("Method not implemented.");
361
+ return '';
362
+ }
363
+ dropTable(table) {
364
+ const sql = [
365
+ `${this.$constants("DROP_TABLE")}`,
366
+ `\`${table.replace(/`/g, "")}\``
367
+ ].join(" ");
368
+ return this.format(sql);
369
+ }
370
+ truncate(table) {
371
+ return `db.${table}.deleteMany({})`;
372
+ }
373
+ sleep(second) {
374
+ throw new Error("Method not implemented.");
375
+ return '';
376
+ }
377
+ format(pipeline) {
378
+ if (typeof pipeline === "string")
379
+ pipeline = [pipeline];
380
+ return pipeline
381
+ .filter((s) => s !== "" || s == null)
382
+ .join(" ")
383
+ .replace(/\s+/g, " ");
384
+ }
385
+ getActiveConnections() {
386
+ throw new Error("Method not implemented.");
387
+ return '';
388
+ }
389
+ getMaxConnections() {
390
+ throw new Error("Method not implemented.");
391
+ return '';
392
+ }
393
+ lockTable(mode) {
394
+ throw new Error("Method not implemented.");
395
+ return '';
396
+ }
397
+ unlockTable() {
398
+ throw new Error("Method not implemented.");
399
+ return '';
400
+ }
401
+ bindJoin(values) {
402
+ return "";
403
+ }
404
+ bindWhere(values) {
405
+ return "";
406
+ }
407
+ bindOrderBy(values) {
408
+ return ``;
409
+ }
410
+ bindGroupBy(values) {
411
+ return ``;
412
+ }
413
+ bindSelect(values) {
414
+ return ``;
415
+ }
416
+ bindFrom({ from, alias, rawAlias, }) {
417
+ return ``;
418
+ }
419
+ bindLimit(limit) {
420
+ return ``;
421
+ }
422
+ bindOffset(offset) {
423
+ return ``;
424
+ }
425
+ bindHaving(having) {
426
+ return ``;
427
+ }
428
+ bindRowLevelLock(mode) {
429
+ return '';
430
+ }
431
+ _objectId() {
432
+ const timestamp = Math.floor(Date.now() / 1000)
433
+ .toString(16)
434
+ .padStart(8, '0');
435
+ const random = Array.from({ length: 10 }, () => Math.floor(Math.random() * 16).toString(16)).join('');
436
+ const counter = Math.floor(Math.random() * 0xffffff)
437
+ .toString(16)
438
+ .padStart(6, '0');
439
+ return timestamp + random + counter;
440
+ }
441
+ ;
442
+ _parseWheres = (wheres = []) => {
443
+ const normalizeColumn = (column = '') => {
444
+ const clean = column.replace(/`/g, '');
445
+ return clean.split('.').pop() || '';
446
+ };
447
+ const parseValue = (value) => {
448
+ if (Array.isArray(value))
449
+ return value.map(parseValue);
450
+ if (typeof value === 'string') {
451
+ const trimmed = value.trim();
452
+ const unquoted = trimmed.replace(/^'+|'+$/g, '');
453
+ if (!isNaN(Number(unquoted)))
454
+ return Number(unquoted);
455
+ if (unquoted.toLowerCase() === 'true')
456
+ return true;
457
+ if (unquoted.toLowerCase() === 'false')
458
+ return false;
459
+ return unquoted;
460
+ }
461
+ return value;
462
+ };
463
+ const likeToRegex = (value) => {
464
+ const v = parseValue(value);
465
+ return '^' + v.replace(/%/g, '.*').replace(/_/g, '.') + '$';
466
+ };
467
+ const buildCondition = (w) => {
468
+ const field = normalizeColumn(w.column ?? '');
469
+ const op = (w.operator || '=').toUpperCase();
470
+ const val = w.value;
471
+ const baseCondition = (() => {
472
+ switch (op) {
473
+ case '=':
474
+ return { [field]: parseValue(val) };
475
+ case '!=':
476
+ case '<>':
477
+ return { [field]: { $ne: parseValue(val) } };
478
+ case '>':
479
+ return { [field]: { $gt: parseValue(val) } };
480
+ case '>=':
481
+ return { [field]: { $gte: parseValue(val) } };
482
+ case '<':
483
+ return { [field]: { $lt: parseValue(val) } };
484
+ case '<=':
485
+ return { [field]: { $lte: parseValue(val) } };
486
+ case 'IN':
487
+ return { [field]: { $in: (val || []).map(parseValue) } };
488
+ case 'NOT IN':
489
+ return { [field]: { $nin: (val || []).map(parseValue) } };
490
+ case 'IS NULL':
491
+ return { [field]: null };
492
+ case 'IS NOT NULL':
493
+ return { [field]: { $ne: null } };
494
+ case 'BETWEEN':
495
+ if (!Array.isArray(val))
496
+ return {};
497
+ return {
498
+ [field]: {
499
+ $gte: parseValue(val[0]),
500
+ $lte: parseValue(val[1])
501
+ }
502
+ };
503
+ case 'LIKE':
504
+ return {
505
+ [field]: {
506
+ $regex: likeToRegex(val),
507
+ $options: 'i'
508
+ }
509
+ };
510
+ case 'NOT LIKE':
511
+ return {
512
+ [field]: {
513
+ $not: {
514
+ $regex: likeToRegex(val),
515
+ $options: 'i'
516
+ }
517
+ }
518
+ };
519
+ case 'EXISTS':
520
+ return { [field]: { $exists: Boolean(val) } };
521
+ default:
522
+ throw new Error(`Unsupported operator: ${op}`);
523
+ }
524
+ })();
525
+ if (w.nested && Array.isArray(w.nested)) {
526
+ const nestedGroup = buildGroup(w.nested);
527
+ const conditionType = (w.condition || this.$constants('AND')).toUpperCase();
528
+ if (conditionType === this.$constants('OR')) {
529
+ return {
530
+ $or: [baseCondition, nestedGroup]
531
+ };
532
+ }
533
+ return {
534
+ $and: [baseCondition, nestedGroup]
535
+ };
536
+ }
537
+ return baseCondition;
538
+ };
539
+ const buildGroup = (lists = []) => {
540
+ if (!lists.length)
541
+ return {};
542
+ const groups = [];
543
+ for (const w of lists) {
544
+ const cond = buildCondition(w);
545
+ if (!cond)
546
+ continue;
547
+ const type = (w.condition || this.$constants('AND')).toUpperCase();
548
+ if (groups.length === 0) {
549
+ groups.push(cond);
550
+ continue;
551
+ }
552
+ if (type === this.$constants('OR')) {
553
+ const last = groups.pop();
554
+ groups.push({
555
+ $or: [last, cond]
556
+ });
557
+ }
558
+ else {
559
+ const last = groups.pop();
560
+ groups.push({
561
+ $and: [last, cond]
562
+ });
563
+ }
564
+ }
565
+ return groups[0] || {};
566
+ };
567
+ return buildGroup(wheres);
568
+ };
569
+ }
570
+ exports.MongodbQueryBuilder = MongodbQueryBuilder;
571
+ //# sourceMappingURL=MongodbQueryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongodbQueryBuilder.js","sourceRoot":"","sources":["../../../../../src/lib/core/Driver/mongodb/MongodbQueryBuilder.ts"],"names":[],"mappings":"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"}