@decaf-ts/core 0.7.11 → 0.7.13

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 (168) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/identity/decorators.d.ts +1 -1
  7. package/lib/esm/identity/decorators.js +11 -4
  8. package/lib/esm/identity/decorators.js.map +1 -1
  9. package/lib/esm/index.d.ts +1 -1
  10. package/lib/esm/index.js +1 -1
  11. package/lib/esm/interfaces/ContextuallyLogged.d.ts +2 -2
  12. package/lib/esm/model/construction.d.ts +4 -5
  13. package/lib/esm/model/construction.js +1 -1
  14. package/lib/esm/model/construction.js.map +1 -1
  15. package/lib/esm/model/decorators.d.ts +1 -0
  16. package/lib/esm/model/decorators.js +13 -6
  17. package/lib/esm/model/decorators.js.map +1 -1
  18. package/lib/esm/model/types.d.ts +1 -1
  19. package/lib/esm/overrides/Metadata.d.ts +4 -2
  20. package/lib/esm/overrides/Model.d.ts +10 -0
  21. package/lib/esm/overrides/decoration.d.ts +1 -0
  22. package/lib/esm/overrides/decoration.js +6 -0
  23. package/lib/esm/overrides/decoration.js.map +1 -0
  24. package/lib/esm/overrides/index.d.ts +1 -0
  25. package/lib/esm/overrides/index.js +1 -0
  26. package/lib/esm/overrides/index.js.map +1 -1
  27. package/lib/esm/overrides/overrides.js +18 -1
  28. package/lib/esm/overrides/overrides.js.map +1 -1
  29. package/lib/esm/persistence/Adapter.d.ts +8 -4
  30. package/lib/esm/persistence/Adapter.js +4 -3
  31. package/lib/esm/persistence/Adapter.js.map +1 -1
  32. package/lib/esm/persistence/Context.d.ts +5 -0
  33. package/lib/esm/persistence/Context.js +7 -0
  34. package/lib/esm/persistence/Context.js.map +1 -0
  35. package/lib/esm/persistence/Dispatch.d.ts +2 -2
  36. package/lib/esm/persistence/Dispatch.js.map +1 -1
  37. package/lib/esm/persistence/ObserverHandler.js.map +1 -1
  38. package/lib/esm/persistence/Sequence.d.ts +1 -1
  39. package/lib/esm/persistence/Sequence.js +2 -1
  40. package/lib/esm/persistence/Sequence.js.map +1 -1
  41. package/lib/esm/persistence/constants.d.ts +4 -1
  42. package/lib/esm/persistence/constants.js +8 -0
  43. package/lib/esm/persistence/constants.js.map +1 -1
  44. package/lib/esm/persistence/index.d.ts +1 -0
  45. package/lib/esm/persistence/index.js +1 -0
  46. package/lib/esm/persistence/index.js.map +1 -1
  47. package/lib/esm/persistence/migrations.js +2 -1
  48. package/lib/esm/persistence/migrations.js.map +1 -1
  49. package/lib/esm/persistence/types.d.ts +18 -5
  50. package/lib/esm/query/Condition.d.ts +3 -1
  51. package/lib/esm/query/Condition.js +11 -3
  52. package/lib/esm/query/Condition.js.map +1 -1
  53. package/lib/esm/query/MethodQueryBuilder.d.ts +1 -6
  54. package/lib/esm/query/MethodQueryBuilder.js +14 -1
  55. package/lib/esm/query/MethodQueryBuilder.js.map +1 -1
  56. package/lib/esm/query/Paginator.d.ts +7 -0
  57. package/lib/esm/query/Paginator.js.map +1 -1
  58. package/lib/esm/query/Statement.d.ts +17 -5
  59. package/lib/esm/query/Statement.js +265 -11
  60. package/lib/esm/query/Statement.js.map +1 -1
  61. package/lib/esm/query/constants.d.ts +6 -0
  62. package/lib/esm/query/constants.js +8 -0
  63. package/lib/esm/query/constants.js.map +1 -1
  64. package/lib/esm/query/decorators.js +11 -1
  65. package/lib/esm/query/decorators.js.map +1 -1
  66. package/lib/esm/query/options.d.ts +14 -9
  67. package/lib/esm/query/types.d.ts +20 -1
  68. package/lib/esm/query/types.js.map +1 -1
  69. package/lib/esm/ram/RamAdapter.d.ts +3 -2
  70. package/lib/esm/ram/RamAdapter.js +6 -3
  71. package/lib/esm/ram/RamAdapter.js.map +1 -1
  72. package/lib/esm/ram/RamPaginator.d.ts +2 -2
  73. package/lib/esm/ram/RamPaginator.js +4 -3
  74. package/lib/esm/ram/RamPaginator.js.map +1 -1
  75. package/lib/esm/ram/RamStatement.d.ts +1 -9
  76. package/lib/esm/ram/RamStatement.js +1 -18
  77. package/lib/esm/ram/RamStatement.js.map +1 -1
  78. package/lib/esm/ram/types.d.ts +3 -3
  79. package/lib/esm/repository/Repository.d.ts +18 -16
  80. package/lib/esm/repository/Repository.js +34 -12
  81. package/lib/esm/repository/Repository.js.map +1 -1
  82. package/lib/esm/utils/ContextualLoggedClass.d.ts +1 -1
  83. package/lib/esm/utils/ContextualLoggedClass.js +3 -3
  84. package/lib/esm/utils/ContextualLoggedClass.js.map +1 -1
  85. package/lib/esm/utils/Services.d.ts +9 -7
  86. package/lib/esm/utils/Services.js +7 -4
  87. package/lib/esm/utils/Services.js.map +1 -1
  88. package/lib/identity/decorators.cjs +10 -3
  89. package/lib/identity/decorators.d.ts +1 -1
  90. package/lib/identity/decorators.js.map +1 -1
  91. package/lib/index.cjs +1 -1
  92. package/lib/index.d.ts +1 -1
  93. package/lib/interfaces/ContextuallyLogged.d.ts +2 -2
  94. package/lib/model/construction.d.ts +4 -5
  95. package/lib/model/construction.js.map +1 -1
  96. package/lib/model/decorators.cjs +14 -6
  97. package/lib/model/decorators.d.ts +1 -0
  98. package/lib/model/decorators.js.map +1 -1
  99. package/lib/model/types.d.ts +1 -1
  100. package/lib/overrides/Metadata.d.ts +4 -2
  101. package/lib/overrides/Model.d.ts +10 -0
  102. package/lib/overrides/decoration.cjs +8 -0
  103. package/lib/overrides/decoration.d.ts +1 -0
  104. package/lib/overrides/decoration.js.map +1 -0
  105. package/lib/overrides/index.cjs +1 -0
  106. package/lib/overrides/index.d.ts +1 -0
  107. package/lib/overrides/index.js.map +1 -1
  108. package/lib/overrides/overrides.cjs +30 -13
  109. package/lib/overrides/overrides.js.map +1 -1
  110. package/lib/persistence/Adapter.cjs +4 -3
  111. package/lib/persistence/Adapter.d.ts +8 -4
  112. package/lib/persistence/Adapter.js.map +1 -1
  113. package/lib/persistence/Context.cjs +11 -0
  114. package/lib/persistence/Context.d.ts +5 -0
  115. package/lib/persistence/Context.js.map +1 -0
  116. package/lib/persistence/Dispatch.d.ts +2 -2
  117. package/lib/persistence/Dispatch.js.map +1 -1
  118. package/lib/persistence/ObserverHandler.js.map +1 -1
  119. package/lib/persistence/Sequence.cjs +4 -3
  120. package/lib/persistence/Sequence.d.ts +1 -1
  121. package/lib/persistence/Sequence.js.map +1 -1
  122. package/lib/persistence/constants.cjs +9 -1
  123. package/lib/persistence/constants.d.ts +4 -1
  124. package/lib/persistence/constants.js.map +1 -1
  125. package/lib/persistence/index.cjs +1 -0
  126. package/lib/persistence/index.d.ts +1 -0
  127. package/lib/persistence/index.js.map +1 -1
  128. package/lib/persistence/migrations.cjs +2 -1
  129. package/lib/persistence/migrations.js.map +1 -1
  130. package/lib/persistence/types.d.ts +18 -5
  131. package/lib/query/Condition.cjs +11 -3
  132. package/lib/query/Condition.d.ts +3 -1
  133. package/lib/query/Condition.js.map +1 -1
  134. package/lib/query/MethodQueryBuilder.cjs +13 -0
  135. package/lib/query/MethodQueryBuilder.d.ts +1 -6
  136. package/lib/query/MethodQueryBuilder.js.map +1 -1
  137. package/lib/query/Paginator.d.ts +7 -0
  138. package/lib/query/Paginator.js.map +1 -1
  139. package/lib/query/Statement.cjs +262 -8
  140. package/lib/query/Statement.d.ts +17 -5
  141. package/lib/query/Statement.js.map +1 -1
  142. package/lib/query/constants.cjs +9 -1
  143. package/lib/query/constants.d.ts +6 -0
  144. package/lib/query/constants.js.map +1 -1
  145. package/lib/query/decorators.cjs +11 -1
  146. package/lib/query/decorators.js.map +1 -1
  147. package/lib/query/options.d.ts +14 -9
  148. package/lib/query/types.d.ts +20 -1
  149. package/lib/query/types.js.map +1 -1
  150. package/lib/ram/RamAdapter.cjs +4 -1
  151. package/lib/ram/RamAdapter.d.ts +3 -2
  152. package/lib/ram/RamAdapter.js.map +1 -1
  153. package/lib/ram/RamPaginator.cjs +4 -3
  154. package/lib/ram/RamPaginator.d.ts +2 -2
  155. package/lib/ram/RamPaginator.js.map +1 -1
  156. package/lib/ram/RamStatement.cjs +0 -17
  157. package/lib/ram/RamStatement.d.ts +1 -9
  158. package/lib/ram/RamStatement.js.map +1 -1
  159. package/lib/ram/types.d.ts +3 -3
  160. package/lib/repository/Repository.cjs +41 -19
  161. package/lib/repository/Repository.d.ts +18 -16
  162. package/lib/repository/Repository.js.map +1 -1
  163. package/lib/utils/ContextualLoggedClass.d.ts +1 -1
  164. package/lib/utils/ContextualLoggedClass.js.map +1 -1
  165. package/lib/utils/Services.cjs +9 -6
  166. package/lib/utils/Services.d.ts +9 -7
  167. package/lib/utils/Services.js.map +1 -1
  168. package/package.json +1 -1
@@ -18,6 +18,10 @@ const logging_1 = require("@decaf-ts/logging");
18
18
  const persistence_1 = require("./../persistence/index.cjs");
19
19
  const errors_1 = require("./errors.cjs");
20
20
  const index_1 = require("./../utils/index.cjs");
21
+ const Context_1 = require("./../persistence/Context.cjs");
22
+ const types_1 = require("./types.cjs");
23
+ const constants_1 = require("./constants.cjs");
24
+ const index_2 = require("./../repository/index.cjs");
21
25
  /**
22
26
  * @description Base class for database query statements
23
27
  * @summary Provides a foundation for building and executing database queries
@@ -73,6 +77,21 @@ class Statement extends index_1.ContextualLoggedClass {
73
77
  constructor(adapter) {
74
78
  super();
75
79
  this.adapter = adapter;
80
+ [this.execute, this.paginate].forEach((m) => {
81
+ (0, db_decorators_1.prefixMethod)(this, m, async (...args) => {
82
+ let execArgs = args;
83
+ if ((!execArgs.length ||
84
+ !(execArgs[execArgs.length - 1] instanceof Context_1.Context)) &&
85
+ this.fromSelector) {
86
+ const ctx = await this.adapter.context(persistence_1.PersistenceKeys.QUERY, {}, this.fromSelector);
87
+ execArgs = [...execArgs, ctx];
88
+ }
89
+ const { ctx, ctxArgs } = persistence_1.Adapter.logCtx(execArgs, m.name);
90
+ if (!ctx.get("allowRawStatements") && !this.prepared)
91
+ await this.prepare(ctx);
92
+ return ctxArgs;
93
+ }, m.name);
94
+ });
76
95
  }
77
96
  get log() {
78
97
  return this.adapter.log.for(Statement);
@@ -127,14 +146,7 @@ class Statement extends index_1.ContextualLoggedClass {
127
146
  return this;
128
147
  }
129
148
  async execute(...args) {
130
- let execArgs = args;
131
- if ((!execArgs.length ||
132
- !(execArgs[execArgs.length - 1] instanceof db_decorators_1.Context)) &&
133
- this.fromSelector) {
134
- const ctx = await this.adapter.context(db_decorators_1.OperationKeys.READ, {}, this.fromSelector);
135
- execArgs = [...execArgs, ctx];
136
- }
137
- const { ctx } = persistence_1.Adapter.logCtx(execArgs, this.toString());
149
+ const ctx = args.pop(); // handled by prefix
138
150
  try {
139
151
  const query = this.build();
140
152
  return (await this.raw(query, ctx));
@@ -157,6 +169,248 @@ class Statement extends index_1.ContextualLoggedClass {
157
169
  return results.map(processor);
158
170
  return processor(results);
159
171
  }
172
+ prepareCondition(condition, ctx) {
173
+ // @ts-expect-error accessing protected properties
174
+ // eslint-disable-next-line prefer-const
175
+ let { attr1, operator, comparison } = condition;
176
+ const result = {};
177
+ switch (operator) {
178
+ case constants_1.GroupOperator.AND:
179
+ case constants_1.GroupOperator.OR: {
180
+ let side1 = attr1, side2 = comparison;
181
+ if (typeof attr1 !== "string") {
182
+ const condition1 = this.prepareCondition(attr1, ctx);
183
+ side1 = condition1.method;
184
+ result.args = [...(result.args || []), ...(condition1.args || [])];
185
+ }
186
+ if (comparison instanceof Condition_1.Condition) {
187
+ const condition2 = this.prepareCondition(comparison, ctx);
188
+ side2 = condition2.method;
189
+ result.args = [...(result.args || []), ...(condition2.args || [])];
190
+ }
191
+ result.method = `${side1} ${operator.toLowerCase()} ${side2}`;
192
+ break;
193
+ }
194
+ case constants_1.Operator.EQUAL:
195
+ result.method = attr1;
196
+ result.args = [...(result.args || []), comparison];
197
+ break;
198
+ case constants_1.Operator.DIFFERENT:
199
+ result.method = `${attr1} diff`;
200
+ result.args = [...(result.args || []), comparison];
201
+ break;
202
+ case constants_1.Operator.REGEXP:
203
+ result.method = `${attr1} matches`;
204
+ result.args = [...(result.args || []), comparison];
205
+ break;
206
+ case constants_1.Operator.BIGGER:
207
+ result.method = `${attr1} bigger`;
208
+ result.args = [...(result.args || []), comparison];
209
+ break;
210
+ case constants_1.Operator.BIGGER_EQ:
211
+ result.method = `${attr1} bigger than equal`;
212
+ break;
213
+ case constants_1.Operator.SMALLER:
214
+ result.method = `${attr1} less`;
215
+ result.args = [...(result.args || []), comparison];
216
+ break;
217
+ case constants_1.Operator.SMALLER_EQ:
218
+ result.method = `${attr1} less than equal`;
219
+ result.args = [...(result.args || []), comparison];
220
+ break;
221
+ case constants_1.Operator.IN:
222
+ result.method = `${attr1} in`;
223
+ result.args = [...(result.args || []), comparison];
224
+ break;
225
+ default:
226
+ throw new errors_1.QueryError(`Unsupported operator ${operator}`);
227
+ }
228
+ return result;
229
+ }
230
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
231
+ squash(ctx) {
232
+ if (this.selectSelector && this.selectSelector.length)
233
+ return undefined;
234
+ if (this.groupBySelector)
235
+ return undefined;
236
+ if (this.countSelector)
237
+ return undefined;
238
+ if (this.maxSelector)
239
+ return undefined;
240
+ if (this.minSelector)
241
+ return undefined;
242
+ let attrFromWhere;
243
+ if (this.whereCondition) {
244
+ if (this.whereCondition["comparison"] instanceof Condition_1.Condition)
245
+ return undefined;
246
+ attrFromWhere = this.whereCondition["attr1"];
247
+ }
248
+ const order = this.orderBySelector
249
+ ? this.orderBySelector
250
+ : attrFromWhere
251
+ ? [attrFromWhere, index_2.OrderDirection.DSC]
252
+ : [decorator_validation_1.Model.pk(this.fromSelector), index_2.OrderDirection.DSC];
253
+ const [attrFromOrderBy, sort] = order;
254
+ const params = {
255
+ direction: sort,
256
+ };
257
+ if (this.limitSelector)
258
+ params.limit = this.limitSelector;
259
+ if (this.offsetSelector)
260
+ params.offset = this.offsetSelector;
261
+ const squashed = {
262
+ // listBy
263
+ class: this.fromSelector,
264
+ method: constants_1.PreparedStatementKeys.LIST_BY,
265
+ args: [attrFromOrderBy],
266
+ params: params,
267
+ };
268
+ if (attrFromWhere) {
269
+ // findBy
270
+ squashed.method = constants_1.PreparedStatementKeys.FIND_BY;
271
+ squashed.args = [
272
+ attrFromWhere,
273
+ this.whereCondition["comparison"],
274
+ ];
275
+ squashed.params = params;
276
+ }
277
+ return squashed;
278
+ //
279
+ //
280
+ //
281
+ // let attrs = rawStatement.method.split(
282
+ // new RegExp(
283
+ // `(${[QueryClause.FIND_BY, QueryClause.SELECT, QueryClause.ORDER_BY, QueryClause.GROUP_BY, QueryClause.AND, QueryClause.OR].join("|")})`,
284
+ // "i"
285
+ // )
286
+ // );
287
+ //
288
+ // attrs = attrs
289
+ // .map((s) => s.trim())
290
+ // .filter(Boolean)
291
+ // .filter(
292
+ // (s) =>
293
+ // ![
294
+ // QueryClause.FIND_BY,
295
+ // QueryClause.SELECT,
296
+ // QueryClause.ORDER_BY,
297
+ // QueryClause.GROUP_BY,
298
+ // toPascalCase(OrderDirection.ASC),
299
+ // toPascalCase(OrderDirection.DSC),
300
+ // ].find((c) => s.includes(c))
301
+ // );
302
+ //
303
+ // const fullOrderBy = rawStatement.method.split(QueryClause.ORDER_BY);
304
+ // let orderBy: any;
305
+ // if (fullOrderBy.length) {
306
+ // orderBy = fullOrderBy[1]
307
+ // .split(
308
+ // new RegExp(
309
+ // `${[toPascalCase(OrderDirection.ASC), toPascalCase(OrderDirection.DSC), QueryClause.GROUP_BY + ".*", QueryClause.THEN_BY].join("|")}`,
310
+ // "i"
311
+ // )
312
+ // )
313
+ // .map((s) => s.trim())
314
+ // .filter(Boolean);
315
+ // orderBy = [
316
+ // orderBy[0] as any,
317
+ // fullOrderBy[1].includes(toPascalCase(OrderDirection.ASC))
318
+ // ? OrderDirection.ASC
319
+ // : OrderDirection.DSC,
320
+ // ];
321
+ // }
322
+ //
323
+ // const canBeSquashed = (!attrs.length
324
+ // || (attrs.length === 1 && attrs[0] === orderBy[0]
325
+ //
326
+ // if (attrs.length === 1 && attrs[0] === orderBy[0]) {
327
+ // // there's an order by
328
+ // const attr = attrs[0];
329
+ // if (attrFromWhere && attrFromWhere !== attr) {
330
+ // return rawStatement;
331
+ // }
332
+ // return Object.assign({}, rawStatement, {
333
+ // method: PreparedStatementKeys.LIST_BY,
334
+ // args: [toCamelCase(attr), orderBy[1]],
335
+ // // args: [toCamelCase(attr), orderBy[1], this.size],
336
+ // });
337
+ // } else {
338
+ // // there's no orderBy
339
+ // return Object.assign({}, rawStatement, {
340
+ // method: rawStatement.method.replace(QueryClause.FIND_BY, PreparedStatementKeys.LIST_BY),
341
+ // args: [...rawStatement.args],
342
+ // // args: [...rawStatement.args, this.size],
343
+ // });
344
+ // }
345
+ }
346
+ async prepare(ctx) {
347
+ ctx =
348
+ ctx ||
349
+ (await this.adapter.context(persistence_1.PersistenceKeys.QUERY, {}, this.fromSelector));
350
+ if (ctx.get("squashSimpleQueries")) {
351
+ const squashed = this.squash(ctx);
352
+ if (squashed) {
353
+ this.prepared = squashed;
354
+ return this;
355
+ }
356
+ }
357
+ const args = [];
358
+ const params = {};
359
+ const prepared = {
360
+ class: this.fromSelector,
361
+ args,
362
+ params,
363
+ };
364
+ const method = [types_1.QueryClause.FIND_BY];
365
+ if (this.whereCondition) {
366
+ const parsed = this.prepareCondition(this.whereCondition, ctx);
367
+ method.push(parsed.method);
368
+ if (parsed.args && parsed.args.length)
369
+ args.push(...parsed.args);
370
+ }
371
+ if (this.selectSelector)
372
+ method.push(types_1.QueryClause.SELECT, this.selectSelector.join(` ${types_1.QueryClause.AND.toLowerCase()} `));
373
+ if (this.orderBySelector)
374
+ method.push(types_1.QueryClause.ORDER_BY, ...this.orderBySelector);
375
+ if (this.groupBySelector)
376
+ method.push(types_1.QueryClause.GROUP_BY, this.groupBySelector);
377
+ if (this.limitSelector)
378
+ params.limit = this.limitSelector;
379
+ if (this.offsetSelector) {
380
+ params.skip = this.offsetSelector;
381
+ }
382
+ prepared.method = (0, logging_1.toCamelCase)(method.join(" "));
383
+ prepared.params = params;
384
+ this.prepared = prepared;
385
+ if (!ctx.get("squashSimpleQueries") ||
386
+ (this.selectSelector && this.selectSelector.length) ||
387
+ this.groupBySelector ||
388
+ this.countSelector ||
389
+ this.maxSelector ||
390
+ this.minSelector) {
391
+ return this;
392
+ }
393
+ this.prepared = prepared;
394
+ return this;
395
+ }
396
+ /**
397
+ * @description Creates a paginator for the query
398
+ * @summary Builds the query and wraps it in a RamPaginator to enable pagination of results.
399
+ * This allows retrieving large result sets in smaller chunks.
400
+ * @param {number} size - The page size (number of results per page)
401
+ * @return {Promise<Paginator<M, R, RawRamQuery<M>>>} A promise that resolves to a paginator for the query
402
+ */
403
+ async paginate(size, ...args) {
404
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
405
+ const ctx = args.pop(); // handled by prefix. kept for example for overrides
406
+ try {
407
+ const query = this.build();
408
+ return this.adapter.Paginator(query, size, this.fromSelector);
409
+ }
410
+ catch (e) {
411
+ throw new errors_1.QueryError(e);
412
+ }
413
+ }
160
414
  toString() {
161
415
  return `${this.adapter.flavour} statement`;
162
416
  }
@@ -2,13 +2,14 @@ import { Model } from "@decaf-ts/decorator-validation";
2
2
  import type { Executor, RawExecutor } from "../interfaces";
3
3
  import type { FromSelector, GroupBySelector, OrderBySelector, SelectSelector } from "./selectors";
4
4
  import { Condition } from "./Condition";
5
- import type { CountOption, DistinctOption, LimitOption, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, SelectOption, WhereOption } from "./options";
5
+ import type { CountOption, DistinctOption, LimitOption, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, PreparableStatementExecutor, SelectOption, StatementExecutor, WhereOption } from "./options";
6
6
  import { Paginatable } from "../interfaces/Paginatable";
7
7
  import { Paginator } from "./Paginator";
8
8
  import { Adapter, type ContextOf } from "../persistence";
9
9
  import { Logger } from "@decaf-ts/logging";
10
10
  import { Constructor } from "@decaf-ts/decoration";
11
11
  import { type ContextualArgs, ContextualLoggedClass, type MaybeContextualArg } from "../utils/index";
12
+ import { PreparedStatement } from "./types";
12
13
  /**
13
14
  * @description Base class for database query statements
14
15
  * @summary Provides a foundation for building and executing database queries
@@ -73,6 +74,7 @@ export declare abstract class Statement<M extends Model, A extends Adapter<any,
73
74
  protected groupBySelector?: GroupBySelector<M>;
74
75
  protected limitSelector?: number;
75
76
  protected offsetSelector?: number;
77
+ protected prepared?: PreparedStatement<M>;
76
78
  protected constructor(adapter: Adapter<any, any, Q, any>);
77
79
  protected get log(): Logger;
78
80
  select<S extends readonly SelectSelector<M>[]>(): SelectOption<M, M[]>;
@@ -83,14 +85,24 @@ export declare abstract class Statement<M extends Model, A extends Adapter<any,
83
85
  count<S extends SelectSelector<M>>(selector?: S): CountOption<M, number>;
84
86
  from(selector: FromSelector<M>): WhereOption<M, R>;
85
87
  where(condition: Condition<M>): OrderAndGroupOption<M, R>;
86
- orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<R>;
88
+ orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<M, R>;
87
89
  groupBy(selector: GroupBySelector<M>): LimitOption<M, R>;
88
- limit(value: number): OffsetOption<R>;
89
- offset(value: number): Executor<R>;
90
+ limit(value: number): OffsetOption<M, R>;
91
+ offset(value: number): PreparableStatementExecutor<M, R>;
90
92
  execute(...args: MaybeContextualArg<ContextOf<A>>): Promise<R>;
91
93
  raw<R>(rawInput: Q, ...args: ContextualArgs<ContextOf<A>>): Promise<R>;
94
+ protected prepareCondition(condition: Condition<any>, ctx: ContextOf<A>): PreparedStatement<any>;
95
+ protected squash(ctx: ContextOf<A>): PreparedStatement<any> | undefined;
96
+ prepare(ctx?: ContextOf<A>): Promise<StatementExecutor<M, R>>;
92
97
  protected abstract build(): Q;
93
98
  protected abstract parseCondition(condition: Condition<M>, ...args: any[]): Q;
94
- abstract paginate(size: number, ...args: MaybeContextualArg<ContextOf<A>>): Promise<Paginator<M, R, Q>>;
99
+ /**
100
+ * @description Creates a paginator for the query
101
+ * @summary Builds the query and wraps it in a RamPaginator to enable pagination of results.
102
+ * This allows retrieving large result sets in smaller chunks.
103
+ * @param {number} size - The page size (number of results per page)
104
+ * @return {Promise<Paginator<M, R, RawRamQuery<M>>>} A promise that resolves to a paginator for the query
105
+ */
106
+ paginate(size: number, ...args: MaybeContextualArg<ContextOf<A>>): Promise<Paginator<M, R, Q>>;
95
107
  toString(): string;
96
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yEAAuD;AAQvD,+CAAwC;AACxC,2DAAsE;AACtE,+CAAuD;AAgBvD,4DAA0E;AAC1E,yCAAsC;AAGtC,gDAIwB;AACxB,0DAAiD;AAEjD,uCAAsC;AACtC,+CAA6E;AAC7E,qDAAqD;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAsB,SAMpB,SAAQ,6BAAmC;IAiB3C,YAAgC,OAAkC;QAChE,KAAK,EAAE,CAAC;QADsB,YAAO,GAAP,OAAO,CAA2B;QAEhE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAA,4BAAY,EACV,IAAI,EACJ,CAAC,EACD,KAAK,EAAE,GAAG,IAAsC,EAAE,EAAE;gBAClD,IAAI,QAAQ,GAAG,IAAI,CAAC;gBACpB,IACE,CAAC,CAAC,QAAQ,CAAC,MAAM;oBACf,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,iBAAO,CAAC,CAAC;oBACtD,IAAI,CAAC,YAAY,EACjB,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CACpC,6BAAe,CAAC,KAAK,EACrB,EAAE,EACF,IAAI,CAAC,YAAY,CAClB,CAAC;oBACF,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAChC,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,qBAAO,CAAC,MAAM,CACrC,QAAQ,EACR,CAAC,CAAC,IAAI,CACP,CAAC;gBAEF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAClD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC,EACD,CAAC,CAAC,IAAI,CACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAuB,GAAG;QACxB,OAAQ,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAWD,MAAM,CACJ,QAA0B;QAE1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC5C,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,OAAO,IAAoE,CAAC;IAC9E,CAAC;IAGD,QAAQ,CACN,QAAW;QAEX,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAiC,CAAC;IAC3C,CAAC;IAGD,GAAG,CAA8B,QAAW;QAC1C,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,OAAO,IAA0B,CAAC;IACpC,CAAC;IAGD,GAAG,CAA8B,QAAW;QAC1C,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,OAAO,IAA0B,CAAC;IACpC,CAAC;IAGD,KAAK,CAA8B,QAAY;QAC7C,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAA8B,CAAC;IACxC,CAAC;IAGM,IAAI,CAAC,QAAyB;QACnC,IAAI,CAAC,YAAY,GAAG,CAClB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC5C,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,MAAM,IAAI,mBAAU,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,KAAK,CAAC,SAAuB;QAClC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,OAAO,CACZ,QAA4B;QAE5B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,OAAO,CAAC,QAA4B;QACzC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,KAAK,CAAC,KAAa;QACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,MAAM,CAAC,KAAa;QACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAC,GAAG,IAAsC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAkB,CAAC,CAAC,oBAAoB;QAC5D,IAAI,CAAC;YACH,MAAM,KAAK,GAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAM,CAAC;QAC3C,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,6BAAa,CAAC,CAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,QAAW,EAAE,GAAG,IAAkC;QAC7D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAI,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,OAAO,CAAC;QACzC,MAAM,MAAM,GAAG,4BAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,SAAS,eAAe,CAExC,CAAM;YAEN,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,EACD,IAAI,CAAC,YAAgC,EACrC,EAAE,EACF,SAAS,EACT,GAAG,CACG,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;QAEpB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAM,CAAC;QAC/D,OAAO,SAAS,CAAC,OAAO,CAAM,CAAC;IACjC,CAAC;IAES,gBAAgB,CAAC,SAAyB,EAAE,GAAiB;QACrE,kDAAkD;QAClD,wCAAwC;QACxC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAEhD,MAAM,MAAM,GAA2B,EAAS,CAAC;QACjD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,yBAAa,CAAC,GAAG,CAAC;YACvB,KAAK,yBAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,IAAI,KAAK,GAAW,KAAe,EACjC,KAAK,GAAW,UAAiB,CAAC;gBACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,KAAuB,EACvB,GAAG,CACJ,CAAC;oBACF,KAAK,GAAG,UAAU,CAAC,MAAgB,CAAC;oBACpC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;gBAED,IAAI,UAAU,YAAY,qBAAS,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC1D,KAAK,GAAG,UAAU,CAAC,MAAgB,CAAC;oBACpC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;gBAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,IAAI,KAAK,EAAE,CAAC;gBAC9D,MAAM;YACR,CAAC;YACD,KAAK,oBAAQ,CAAC,KAAK;gBACjB,MAAM,CAAC,MAAM,GAAG,KAAe,CAAC;gBAChC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,oBAAQ,CAAC,SAAS;gBACrB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,OAAO,CAAC;gBAChC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,oBAAQ,CAAC,MAAM;gBAClB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,UAAU,CAAC;gBACnC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,oBAAQ,CAAC,MAAM;gBAClB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC;gBAClC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,oBAAQ,CAAC,SAAS;gBACrB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,oBAAoB,CAAC;gBAC7C,MAAM;YACR,KAAK,oBAAQ,CAAC,OAAO;gBACnB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,OAAO,CAAC;gBAChC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,oBAAQ,CAAC,UAAU;gBACtB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,kBAAkB,CAAC;gBAC3C,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,oBAAQ,CAAC,EAAE;gBACd,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC;gBAC9B,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnD,MAAM;YACR;gBACE,MAAM,IAAI,mBAAU,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6DAA6D;IACnD,MAAM,CAAC,GAAiB;QAChC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QACxE,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,SAAS,CAAC;QAC3C,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QACzC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QAEvC,IAAI,aAAiC,CAAC;QACtC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,YAAY,qBAAS;gBACxD,OAAO,SAAS,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAW,CAAC;QACzD,CAAC;QAED,MAAM,KAAK,GAAuB,IAAI,CAAC,eAAe;YACpD,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,aAAa;gBACb,CAAC,CAAC,CAAC,aAAwB,EAAE,sBAAc,CAAC,GAAG,CAAC;gBAChD,CAAC,CAAC,CAAC,4BAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,sBAAc,CAAC,GAAG,CAAC,CAAC;QAExD,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAEtC,MAAM,MAAM,GAAyB;YACnC,SAAS,EAAE,IAAI;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1D,IAAI,IAAI,CAAC,cAAc;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;QAE7D,MAAM,QAAQ,GAAyB;YACrC,SAAS;YACT,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,MAAM,EAAE,iCAAqB,CAAC,OAAO;YACrC,IAAI,EAAE,CAAC,eAAe,CAAC;YACvB,MAAM,EAAE,MAAM;SACS,CAAC;QAE1B,IAAI,aAAa,EAAE,CAAC;YAClB,SAAS;YACT,QAAQ,CAAC,MAAM,GAAG,iCAAqB,CAAC,OAAO,CAAC;YAChD,QAAQ,CAAC,IAAI,GAAG;gBACd,aAAa;gBACZ,IAAI,CAAC,cAA+B,CAAC,YAAY,CAAW;aAC9D,CAAC;YACF,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC;QAED,OAAO,QAAQ,CAAC;QAChB,EAAE;QACF,EAAE;QACF,EAAE;QACF,yCAAyC;QACzC,gBAAgB;QAChB,+IAA+I;QAC/I,UAAU;QACV,MAAM;QACN,KAAK;QACL,EAAE;QACF,gBAAgB;QAChB,0BAA0B;QAC1B,qBAAqB;QACrB,aAAa;QACb,aAAa;QACb,WAAW;QACX,+BAA+B;QAC/B,8BAA8B;QAC9B,gCAAgC;QAChC,gCAAgC;QAChC,4CAA4C;QAC5C,4CAA4C;QAC5C,qCAAqC;QACrC,OAAO;QACP,EAAE;QACF,uEAAuE;QACvE,oBAAoB;QACpB,4BAA4B;QAC5B,6BAA6B;QAC7B,cAAc;QACd,oBAAoB;QACpB,iJAAiJ;QACjJ,cAAc;QACd,UAAU;QACV,QAAQ;QACR,4BAA4B;QAC5B,wBAAwB;QACxB,gBAAgB;QAChB,yBAAyB;QACzB,gEAAgE;QAChE,6BAA6B;QAC7B,8BAA8B;QAC9B,OAAO;QACP,IAAI;QACJ,EAAE;QACF,uCAAuC;QACvC,sDAAsD;QACtD,EAAE;QACF,uDAAuD;QACvD,2BAA2B;QAC3B,2BAA2B;QAC3B,mDAAmD;QACnD,2BAA2B;QAC3B,MAAM;QACN,6CAA6C;QAC7C,6CAA6C;QAC7C,6CAA6C;QAC7C,2DAA2D;QAC3D,QAAQ;QACR,WAAW;QACX,0BAA0B;QAC1B,6CAA6C;QAC7C,+FAA+F;QAC/F,oCAAoC;QACpC,kDAAkD;QAClD,QAAQ;QACR,IAAI;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9B,GAAG;YACD,GAAG;gBACH,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CACzB,6BAAe,CAAC,KAAK,EACrB,EAAE,EACF,IAAI,CAAC,YAAY,CAClB,CAAC,CAAC;QAEL,IAAK,GAAoB,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAmB,CAAC,CAAC;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAwB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAkC,EAAS,CAAC;QAExD,MAAM,QAAQ,GAA2B;YACvC,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,IAAI;YACJ,MAAM;SACA,CAAC;QAET,MAAM,MAAM,GAAa,CAAC,mBAAW,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAClC,IAAI,CAAC,cAAc,EACnB,GAAmB,CACpB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;gBACnC,IAAI,CAAC,IAAI,CAAC,GAAI,MAAM,CAAC,IAA4B,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,CAAC,cAAc;YACrB,MAAM,CAAC,IAAI,CACT,mBAAW,CAAC,MAAM,EAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,mBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAC/D,CAAC;QACJ,IAAI,IAAI,CAAC,eAAe;YACtB,MAAM,CAAC,IAAI,CAAC,mBAAW,CAAC,QAAQ,EAAE,GAAI,IAAI,CAAC,eAA4B,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,eAAe;YACtB,MAAM,CAAC,IAAI,CAAC,mBAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAyB,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,aAAa;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;QACpC,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,IAAA,qBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IACE,CAAE,GAAoB,CAAC,GAAG,CAAC,qBAAqB,CAAC;YACjD,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YACnD,IAAI,CAAC,eAAe;YACpB,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,WAAW,EAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAKD;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CACZ,IAAY,EACZ,GAAG,IAAsC;QAEzC,6DAA6D;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAkB,CAAC,CAAC,oDAAoD;QAC5F,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,mBAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,YAAY,CAAC;IAC7C,CAAC;CACF;AA9cD,8BA8cC;AAxYC;IADC,IAAA,eAAK,GAAE;;;;uCASP;AAGD;IADC,IAAA,eAAK,GAAE;;yDAEI,CAAC,oBAAD,CAAC;;yCAIZ;AAGD;IADC,IAAA,eAAK,GAAE;;yDACmC,CAAC,oBAAD,CAAC;;oCAG3C;AAGD;IADC,IAAA,eAAK,GAAE;;yDACmC,CAAC,oBAAD,CAAC;;oCAG3C;AAGD;IADC,IAAA,eAAK,GAAE;;yDACsC,CAAC,oBAAD,CAAC;;sCAG9C;AAGM;IADN,IAAA,eAAK,GAAE;;;;qCAQP;AAGM;IADN,IAAA,eAAK,GAAE;;qCACgB,qBAAS;;sCAGhC;AAGM;IADN,IAAA,eAAK,GAAE;;;;wCAMP;AAGM;IADN,IAAA,eAAK,GAAE;;;;wCAIP;AAGM;IADN,IAAA,eAAK,GAAE;;;;sCAIP;AAGM;IADN,IAAA,eAAK,GAAE;;;;uCAIP;AAGK;IADL,IAAA,eAAK,GAAE;;;;wCASP"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroupOperator = exports.Operator = void 0;
3
+ exports.PreparedStatementKeys = exports.GroupOperator = exports.Operator = void 0;
4
+ const types_1 = require("./types.cjs");
4
5
  /**
5
6
  * @description Comparison operators for query conditions
6
7
  * @summary Enum defining the available operators for comparing values in database queries
@@ -45,4 +46,11 @@ var GroupOperator;
45
46
  /** Logical OR operator - at least one condition must be true */
46
47
  GroupOperator["OR"] = "OR";
47
48
  })(GroupOperator || (exports.GroupOperator = GroupOperator = {}));
49
+ var PreparedStatementKeys;
50
+ (function (PreparedStatementKeys) {
51
+ PreparedStatementKeys["LIST_BY"] = "listBy";
52
+ PreparedStatementKeys["FIND_BY"] = "findBy";
53
+ PreparedStatementKeys["FIND_ONE_BY"] = "findOneBy";
54
+ PreparedStatementKeys["PAGE_BY"] = "paginateBy";
55
+ })(PreparedStatementKeys || (exports.PreparedStatementKeys = PreparedStatementKeys = {}));
48
56
  //# sourceMappingURL=constants.js.map
@@ -38,3 +38,9 @@ export declare enum GroupOperator {
38
38
  /** Logical OR operator - at least one condition must be true */
39
39
  OR = "OR"
40
40
  }
41
+ export declare enum PreparedStatementKeys {
42
+ LIST_BY = "listBy",
43
+ FIND_BY = "findBy",
44
+ FIND_ONE_BY = "findOneBy",
45
+ PAGE_BY = "paginateBy"
46
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/query/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,IAAY,QAqBX;AArBD,WAAY,QAAQ;IAClB,2BAA2B;IAC3B,2BAAe,CAAA;IACf,gCAAgC;IAChC,mCAAuB,CAAA;IACvB,kCAAkC;IAClC,6BAAiB,CAAA;IACjB,4CAA4C;IAC5C,mCAAuB,CAAA;IACvB,+BAA+B;IAC/B,+BAAmB,CAAA;IACnB,yCAAyC;IACzC,qCAAyB,CAAA;IACzB,uBAAuB;IACvB,8BAA8B;IAC9B,uBAAW,CAAA;IACX,8BAA8B;IAC9B,qBAAS,CAAA;IACT,aAAa;IACb,kCAAkC;IAClC,6BAAiB,CAAA;AACnB,CAAC,EArBW,QAAQ,wBAAR,QAAQ,QAqBnB;AAED;;;;;;GAMG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,yDAAyD;IACzD,4BAAW,CAAA;IACX,gEAAgE;IAChE,0BAAS,CAAA;AACX,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/query/constants.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAEtC;;;;;;GAMG;AACH,IAAY,QAqBX;AArBD,WAAY,QAAQ;IAClB,2BAA2B;IAC3B,2BAAe,CAAA;IACf,gCAAgC;IAChC,mCAAuB,CAAA;IACvB,kCAAkC;IAClC,6BAAiB,CAAA;IACjB,4CAA4C;IAC5C,mCAAuB,CAAA;IACvB,+BAA+B;IAC/B,+BAAmB,CAAA;IACnB,yCAAyC;IACzC,qCAAyB,CAAA;IACzB,uBAAuB;IACvB,8BAA8B;IAC9B,uBAAW,CAAA;IACX,8BAA8B;IAC9B,qBAAS,CAAA;IACT,aAAa;IACb,kCAAkC;IAClC,6BAAiB,CAAA;AACnB,CAAC,EArBW,QAAQ,wBAAR,QAAQ,QAqBnB;AAED;;;;;;GAMG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,yDAAyD;IACzD,4BAAW,CAAA;IACX,gEAAgE;IAChE,0BAAS,CAAA;AACX,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAED,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,2CAAkB,CAAA;IAClB,2CAA6B,CAAA;IAC7B,kDAAyB,CAAA;IACzB,+CAAsB,CAAA;AACxB,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC"}
@@ -68,7 +68,17 @@ function query(options = {}) {
68
68
  });
69
69
  };
70
70
  }
71
- return (0, decoration_1.apply)((0, decoration_1.methodMetadata)(decoration_1.Metadata.key(constants_1.PersistenceKeys.QUERY, prop), options), prepared(), innerQuery(options))(obj, prop, descriptor);
71
+ const fields = MethodQueryBuilder_1.MethodQueryBuilder.getFieldsFromMethodName(prop);
72
+ // const paramNames = descriptor.value
73
+ // .toString()
74
+ // .match(/\(([^)]*)\)/)?.[1]
75
+ // .split(",")
76
+ // .map((x) => x.trim())
77
+ // .filter(Boolean);
78
+ return (0, decoration_1.apply)((0, decoration_1.methodMetadata)(decoration_1.Metadata.key(constants_1.PersistenceKeys.QUERY, prop), {
79
+ ...options,
80
+ fields,
81
+ }), prepared(), innerQuery(options))(obj, prop, descriptor);
72
82
  };
73
83
  }
74
84
  return decoration_1.Decoration.for(constants_1.PersistenceKeys.QUERY)
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/query/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/query/decorators.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,11 @@ import { Model } from "@decaf-ts/decorator-validation";
4
4
  import { Condition } from "./Condition";
5
5
  import { Paginatable } from "../interfaces/Paginatable";
6
6
  import { Constructor } from "@decaf-ts/decoration";
7
+ export interface StatementExecutor<M extends Model, R> extends Executor<R>, Paginatable<M, R, any> {
8
+ }
9
+ export interface PreparableStatementExecutor<M extends Model, R> extends StatementExecutor<M, R> {
10
+ prepare(...args: any[]): Promise<StatementExecutor<M, R>>;
11
+ }
7
12
  /**
8
13
  * @summary GroupBy Option interface
9
14
  * @description Exposes the GROUP BY method and remaining options
@@ -12,7 +17,7 @@ import { Constructor } from "@decaf-ts/decoration";
12
17
  * @memberOf module:core
13
18
  */
14
19
  export interface GroupByOption<M extends Model, R> extends Executor<R> {
15
- groupBy(selector: GroupBySelector<M>): Executor<R>;
20
+ groupBy(selector: GroupBySelector<M>): PreparableStatementExecutor<M, R>;
16
21
  }
17
22
  /**
18
23
  * @summary Offset Option interface
@@ -21,8 +26,8 @@ export interface GroupByOption<M extends Model, R> extends Executor<R> {
21
26
  * @interface GroupByOption
22
27
  * @memberOf module:core
23
28
  */
24
- export interface OffsetOption<R> extends Executor<R> {
25
- offset(selector: OffsetSelector): Executor<R>;
29
+ export interface OffsetOption<M extends Model, R> extends PreparableStatementExecutor<M, R> {
30
+ offset(selector: OffsetSelector): PreparableStatementExecutor<M, R>;
26
31
  }
27
32
  /**
28
33
  * @summary Limit Option interface
@@ -31,8 +36,8 @@ export interface OffsetOption<R> extends Executor<R> {
31
36
  * @interface LimitOption
32
37
  * @memberOf module:core
33
38
  */
34
- export interface LimitOption<M extends Model, R> extends Executor<R>, Paginatable<M, R, any> {
35
- limit(selector: LimitSelector): OffsetOption<R>;
39
+ export interface LimitOption<M extends Model, R> extends PreparableStatementExecutor<M, R> {
40
+ limit(selector: LimitSelector): OffsetOption<M, R>;
36
41
  }
37
42
  /**
38
43
  * @summary OrderBy Option interface
@@ -41,8 +46,8 @@ export interface LimitOption<M extends Model, R> extends Executor<R>, Paginatabl
41
46
  * @interface OrderByOption
42
47
  * @memberOf module:core
43
48
  */
44
- export interface OrderByOption<M extends Model, R> extends Executor<R>, Paginatable<M, R, any> {
45
- orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<R>;
49
+ export interface OrderByOption<M extends Model, R> extends PreparableStatementExecutor<M, R> {
50
+ orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<M, R>;
46
51
  }
47
52
  /**
48
53
  * @summary OrderBy Option interface
@@ -51,7 +56,7 @@ export interface OrderByOption<M extends Model, R> extends Executor<R>, Paginata
51
56
  * @interface ThenByOption
52
57
  * @memberOf module:core
53
58
  */
54
- export interface ThenByOption<M extends Model, R> extends LimitOption<M, R>, OffsetOption<R>, Executor<R>, Paginatable<M, R, any> {
59
+ export interface ThenByOption<M extends Model, R> extends LimitOption<M, R>, OffsetOption<M, R>, PreparableStatementExecutor<M, R> {
55
60
  thenBy(selector: OrderBySelector<M>): ThenByOption<M, R>;
56
61
  }
57
62
  /**
@@ -64,7 +69,7 @@ export interface ThenByOption<M extends Model, R> extends LimitOption<M, R>, Off
64
69
  * @extends OffsetOption
65
70
  * @memberOf module:core
66
71
  */
67
- export interface OrderAndGroupOption<M extends Model, R> extends OrderByOption<M, R>, Executor<R>, GroupByOption<M, R>, LimitOption<M, R>, OffsetOption<R> {
72
+ export interface OrderAndGroupOption<M extends Model, R> extends OrderByOption<M, R>, PreparableStatementExecutor<M, R>, GroupByOption<M, R>, LimitOption<M, R>, OffsetOption<M, R> {
68
73
  }
69
74
  /**
70
75
  * @summary Where Option interface
@@ -1,5 +1,8 @@
1
1
  import { Condition } from "./Condition";
2
2
  import { OrderBySelector } from "./selectors";
3
+ import { Model } from "@decaf-ts/decorator-validation";
4
+ import { Constructor } from "@decaf-ts/decoration";
5
+ import { OrderDirection } from "../repository/constants";
3
6
  /**
4
7
  * @description
5
8
  * Options for configuring query building behavior.
@@ -17,6 +20,22 @@ export type QueryOptions = {
17
20
  allowOrderBy?: boolean;
18
21
  throws?: boolean;
19
22
  };
23
+ export type OrderLimitOffsetExtract = {
24
+ orderBy?: OrderBySelector<any>[];
25
+ limit?: number;
26
+ offset?: number;
27
+ };
28
+ export type DirectionLimitOffset = {
29
+ direction?: OrderDirection;
30
+ limit?: number;
31
+ offset?: number;
32
+ };
33
+ export type PreparedStatement<M extends Model> = {
34
+ class: Constructor<M>;
35
+ method: string;
36
+ args: any[];
37
+ params: DirectionLimitOffset;
38
+ };
20
39
  /**
21
40
  * @description
22
41
  * Structured query object representing parsed query clauses.
@@ -34,7 +53,7 @@ export type QueryOptions = {
34
53
  export interface QueryAssist {
35
54
  action: "find";
36
55
  select: undefined | string[];
37
- where: Condition<any>;
56
+ where?: Condition<any>;
38
57
  groupBy?: string[];
39
58
  orderBy?: OrderBySelector<any>[];
40
59
  limit: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":";;;AA6CA;;;;;;;;;;GAUG;AACH,IAAY,WASX;AATD,WAAY,WAAW;IACrB,iCAAkB,CAAA;IAClB,gCAAiB,CAAA;IACjB,0BAAW,CAAA;IACX,wBAAS,CAAA;IACT,mCAAoB,CAAA;IACpB,mCAAoB,CAAA;IACpB,4BAAa,CAAA;IACb,iCAAkB,CAAA;AACpB,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":";;;AAmEA;;;;;;;;;;GAUG;AACH,IAAY,WASX;AATD,WAAY,WAAW;IACrB,iCAAkB,CAAA;IAClB,gCAAiB,CAAA;IACjB,0BAAW,CAAA;IACX,wBAAS,CAAA;IACT,mCAAoB,CAAA;IACpB,mCAAoB,CAAA;IACpB,4BAAa,CAAA;IACb,iCAAkB,CAAA;AACpB,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB"}
@@ -9,6 +9,7 @@ const db_decorators_1 = require("@decaf-ts/db-decorators");
9
9
  const handlers_1 = require("./handlers.cjs");
10
10
  const constants_1 = require("./constants.cjs");
11
11
  const decoration_1 = require("@decaf-ts/decoration");
12
+ const RamPaginator_1 = require("./RamPaginator.cjs");
12
13
  /**
13
14
  * @description In-memory adapter for data persistence
14
15
  * @summary The RamAdapter provides an in-memory implementation of the persistence layer.
@@ -55,7 +56,6 @@ const decoration_1 = require("@decaf-ts/decoration");
55
56
  class RamAdapter extends persistence_1.Adapter {
56
57
  constructor(conf = {}, alias) {
57
58
  super(conf, constants_1.RamFlavour, alias);
58
- this.Context = db_decorators_1.Context;
59
59
  this.indexes = {};
60
60
  this.lock = new transactional_decorators_1.Lock();
61
61
  }
@@ -403,6 +403,9 @@ class RamAdapter extends persistence_1.Adapter {
403
403
  Statement() {
404
404
  return new RamStatement_1.RamStatement(this);
405
405
  }
406
+ Paginator(query, size, clazz) {
407
+ return new RamPaginator_1.RamPaginator(this, query, size, clazz);
408
+ }
406
409
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
407
410
  for(config, ...args) {
408
411
  if (!this.proxies)
@@ -5,7 +5,8 @@ import { Dispatch } from "../persistence/Dispatch";
5
5
  import { Adapter } from "../persistence";
6
6
  import { Model } from "@decaf-ts/decorator-validation";
7
7
  import { BaseError, OperationKeys, PrimaryKeyType } from "@decaf-ts/db-decorators";
8
- import { Constructor } from "@decaf-ts/decoration";
8
+ import type { Constructor } from "@decaf-ts/decoration";
9
+ import { RamPaginator } from "./RamPaginator";
9
10
  /**
10
11
  * @description In-memory adapter for data persistence
11
12
  * @summary The RamAdapter provides an in-memory implementation of the persistence layer.
@@ -71,7 +72,6 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
71
72
  */
72
73
  flags<M extends Model<boolean>>(operation: OperationKeys, model: Constructor<M>, flags: Partial<RamFlags>): Promise<RamFlags>;
73
74
  protected Dispatch(): Dispatch<RamAdapter>;
74
- Context: Constructor<RamContext>;
75
75
  private indexes;
76
76
  private lock;
77
77
  /**
@@ -296,6 +296,7 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
296
296
  * @return {RamStatement<M, any>} A new statement builder instance
297
297
  */
298
298
  Statement<M extends Model<boolean>>(): RamStatement<M, any, Adapter<any, any, RawRamQuery<M>, RamContext>>;
299
+ Paginator<M extends Model<boolean>>(query: RawRamQuery, size: number, clazz: Constructor<M>): RamPaginator<M, any>;
299
300
  for(config: Partial<RamConfig>, ...args: any[]): typeof this;
300
301
  /**
301
302
  * @description Sets up RAM-specific decorations for model properties