@decaf-ts/core 0.8.24 → 0.8.25

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 (102) 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/index.d.ts +1 -1
  7. package/lib/esm/index.js +1 -1
  8. package/lib/esm/query/Condition.js +21 -0
  9. package/lib/esm/query/Condition.js.map +1 -1
  10. package/lib/esm/query/Statement.d.ts +6 -2
  11. package/lib/esm/query/Statement.js +31 -5
  12. package/lib/esm/query/Statement.js.map +1 -1
  13. package/lib/esm/query/constants.d.ts +2 -0
  14. package/lib/esm/query/constants.js +2 -1
  15. package/lib/esm/query/constants.js.map +1 -1
  16. package/lib/esm/query/options.d.ts +30 -0
  17. package/lib/esm/ram/RamAdapter.d.ts +10 -5
  18. package/lib/esm/ram/RamAdapter.js +128 -7
  19. package/lib/esm/ram/RamAdapter.js.map +1 -1
  20. package/lib/esm/ram/RamStatement.d.ts +7 -0
  21. package/lib/esm/ram/RamStatement.js +109 -1
  22. package/lib/esm/ram/RamStatement.js.map +1 -1
  23. package/lib/esm/ram/types.d.ts +6 -16
  24. package/lib/esm/repository/Repository.d.ts +48 -0
  25. package/lib/esm/repository/Repository.js +78 -0
  26. package/lib/esm/repository/Repository.js.map +1 -1
  27. package/lib/esm/tasks/TaskContext.d.ts +9 -0
  28. package/lib/esm/tasks/TaskContext.js +39 -0
  29. package/lib/esm/tasks/TaskContext.js.map +1 -1
  30. package/lib/esm/tasks/TaskEngine.d.ts +14 -0
  31. package/lib/esm/tasks/TaskEngine.js +99 -2
  32. package/lib/esm/tasks/TaskEngine.js.map +1 -1
  33. package/lib/esm/tasks/TaskErrors.d.ts +20 -0
  34. package/lib/esm/tasks/TaskErrors.js +42 -0
  35. package/lib/esm/tasks/TaskErrors.js.map +1 -0
  36. package/lib/esm/tasks/TaskStateChangeError.d.ts +11 -0
  37. package/lib/esm/tasks/TaskStateChangeError.js +9 -0
  38. package/lib/esm/tasks/TaskStateChangeError.js.map +1 -0
  39. package/lib/esm/tasks/TaskTracker.d.ts +7 -5
  40. package/lib/esm/tasks/TaskTracker.js +72 -36
  41. package/lib/esm/tasks/TaskTracker.js.map +1 -1
  42. package/lib/esm/tasks/constants.d.ts +1 -0
  43. package/lib/esm/tasks/constants.js +1 -0
  44. package/lib/esm/tasks/constants.js.map +1 -1
  45. package/lib/esm/tasks/index.d.ts +1 -0
  46. package/lib/esm/tasks/index.js +1 -0
  47. package/lib/esm/tasks/index.js.map +1 -1
  48. package/lib/esm/tasks/logging.js +4 -1
  49. package/lib/esm/tasks/logging.js.map +1 -1
  50. package/lib/esm/tasks/models/TaskModel.d.ts +1 -0
  51. package/lib/esm/tasks/models/TaskModel.js +5 -0
  52. package/lib/esm/tasks/models/TaskModel.js.map +1 -1
  53. package/lib/esm/tasks/types.d.ts +2 -0
  54. package/lib/index.cjs +1 -1
  55. package/lib/index.d.ts +1 -1
  56. package/lib/query/Condition.cjs +21 -0
  57. package/lib/query/Condition.js.map +1 -1
  58. package/lib/query/Statement.cjs +31 -5
  59. package/lib/query/Statement.d.ts +6 -2
  60. package/lib/query/Statement.js.map +1 -1
  61. package/lib/query/constants.cjs +2 -1
  62. package/lib/query/constants.d.ts +2 -0
  63. package/lib/query/constants.js.map +1 -1
  64. package/lib/query/options.d.ts +30 -0
  65. package/lib/ram/RamAdapter.cjs +128 -7
  66. package/lib/ram/RamAdapter.d.ts +10 -5
  67. package/lib/ram/RamAdapter.js.map +1 -1
  68. package/lib/ram/RamStatement.cjs +109 -1
  69. package/lib/ram/RamStatement.d.ts +7 -0
  70. package/lib/ram/RamStatement.js.map +1 -1
  71. package/lib/ram/types.d.ts +6 -16
  72. package/lib/repository/Repository.cjs +78 -0
  73. package/lib/repository/Repository.d.ts +48 -0
  74. package/lib/repository/Repository.js.map +1 -1
  75. package/lib/tasks/TaskContext.cjs +39 -0
  76. package/lib/tasks/TaskContext.d.ts +9 -0
  77. package/lib/tasks/TaskContext.js.map +1 -1
  78. package/lib/tasks/TaskEngine.cjs +99 -2
  79. package/lib/tasks/TaskEngine.d.ts +14 -0
  80. package/lib/tasks/TaskEngine.js.map +1 -1
  81. package/lib/tasks/TaskErrors.cjs +50 -0
  82. package/lib/tasks/TaskErrors.d.ts +20 -0
  83. package/lib/tasks/TaskErrors.js.map +1 -0
  84. package/lib/tasks/TaskStateChangeError.cjs +13 -0
  85. package/lib/tasks/TaskStateChangeError.d.ts +11 -0
  86. package/lib/tasks/TaskStateChangeError.js.map +1 -0
  87. package/lib/tasks/TaskTracker.cjs +72 -36
  88. package/lib/tasks/TaskTracker.d.ts +7 -5
  89. package/lib/tasks/TaskTracker.js.map +1 -1
  90. package/lib/tasks/constants.cjs +1 -0
  91. package/lib/tasks/constants.d.ts +1 -0
  92. package/lib/tasks/constants.js.map +1 -1
  93. package/lib/tasks/index.cjs +1 -0
  94. package/lib/tasks/index.d.ts +1 -0
  95. package/lib/tasks/index.js.map +1 -1
  96. package/lib/tasks/logging.cjs +4 -1
  97. package/lib/tasks/logging.js.map +1 -1
  98. package/lib/tasks/models/TaskModel.cjs +5 -0
  99. package/lib/tasks/models/TaskModel.d.ts +1 -0
  100. package/lib/tasks/models/TaskModel.js.map +1 -1
  101. package/lib/tasks/types.d.ts +2 -0
  102. package/package.json +1 -1
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RamAdapter = void 0;
4
4
  const RamStatement_1 = require("./RamStatement.cjs");
5
+ const query_1 = require("./../query/index.cjs");
5
6
  const persistence_1 = require("./../persistence/index.cjs");
6
7
  const transactional_decorators_1 = require("@decaf-ts/transactional-decorators");
7
8
  const decorator_validation_1 = require("@decaf-ts/decorator-validation");
@@ -302,16 +303,14 @@ class RamAdapter extends persistence_1.Adapter {
302
303
  }
303
304
  /**
304
305
  * @description Gets or creates a table in the in-memory storage
305
- * @summary Retrieves the Map representing a table for a given model or table name.
306
- * If the table doesn't exist, it creates a new one. This is a helper method used
307
- * by other methods to access the correct storage location.
306
+ * @summary Retrieves the Map representing a table for a given model class.
307
+ * If the table doesn't exist, it creates a new one so callers can insert or
308
+ * query entities without null reference checks.
308
309
  * @template M - The model type for the table
309
- * @param {string | Constructor<M>} from - The model class or table name
310
+ * @param {Constructor<M>} from - The model class
310
311
  * @return {Map<string | number, any> | undefined} The table Map or undefined
311
312
  */
312
313
  tableFor(from) {
313
- if (typeof from === "string")
314
- from = decorator_validation_1.Model.get(from);
315
314
  const table = decorator_validation_1.Model.tableName(from);
316
315
  if (!this.client.has(table))
317
316
  this.client.set(table, new Map());
@@ -363,17 +362,108 @@ class RamAdapter extends persistence_1.Adapter {
363
362
  async raw(rawInput, docsOnly = true, ...args) {
364
363
  const { log, ctx } = this.logCtx(args, this.raw);
365
364
  log.debug(`performing raw query: ${JSON.stringify(rawInput)}`);
366
- const { where, sort, limit, skip, from, groupBy } = rawInput;
365
+ const { where, sort, limit, skip, from, groupBy, count: countField, min: minField, max: maxField, sum: sumField, avg: avgField, distinct: distinctField, } = rawInput;
367
366
  let { select } = rawInput;
368
367
  const collection = this.tableFor(from);
369
368
  if (!collection)
370
369
  throw new db_decorators_1.InternalError(`Table ${from} not found in RamAdapter`);
370
+ const clazz = from;
371
371
  const id = decorator_validation_1.Model.pk(from);
372
372
  const props = decoration_1.Metadata.get(from, decoration_1.Metadata.key(db_decorators_1.DBKeys.ID, id));
373
373
  let result = Array.from(collection.entries()).map(([pk, r]) => this.revert(r, from, persistence_1.Sequence.parseValue(props.type, pk), undefined, ctx));
374
374
  if (sort)
375
375
  result = result.sort(sort);
376
376
  result = where ? result.filter(where) : result;
377
+ // Handle aggregate operations
378
+ if ('count' in rawInput) {
379
+ // Count operation
380
+ if (!countField) {
381
+ // Count all records (COUNT(*))
382
+ return result.length;
383
+ }
384
+ else {
385
+ // Count specific field (non-null values) (COUNT(field))
386
+ const count = result.filter(r => r[countField] !== undefined && r[countField] !== null).length;
387
+ return count;
388
+ }
389
+ }
390
+ if (minField !== undefined) {
391
+ this.ensureFieldType(clazz, minField, "MIN operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
392
+ // Min operation
393
+ if (result.length === 0)
394
+ return null;
395
+ const values = result.map(r => r[minField]).filter(v => v !== undefined && v !== null);
396
+ if (values.length === 0)
397
+ return null;
398
+ // Find minimum value preserving original type
399
+ let minValue = values[0];
400
+ for (const v of values) {
401
+ const comparison = v instanceof Date ? v.getTime() : (typeof v === 'bigint' ? Number(v) : Number(v));
402
+ const minComparison = minValue instanceof Date ? minValue.getTime() : (typeof minValue === 'bigint' ? Number(minValue) : Number(minValue));
403
+ if (comparison < minComparison) {
404
+ minValue = v;
405
+ }
406
+ }
407
+ return minValue;
408
+ }
409
+ if (maxField !== undefined) {
410
+ this.ensureFieldType(clazz, maxField, "MAX operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
411
+ // Max operation
412
+ if (result.length === 0)
413
+ return null;
414
+ const values = result.map(r => r[maxField]).filter(v => v !== undefined && v !== null);
415
+ if (values.length === 0)
416
+ return null;
417
+ // Find maximum value preserving original type
418
+ let maxValue = values[0];
419
+ for (const v of values) {
420
+ const comparison = v instanceof Date ? v.getTime() : (typeof v === 'bigint' ? Number(v) : Number(v));
421
+ const maxComparison = maxValue instanceof Date ? maxValue.getTime() : (typeof maxValue === 'bigint' ? Number(maxValue) : Number(maxValue));
422
+ if (comparison > maxComparison) {
423
+ maxValue = v;
424
+ }
425
+ }
426
+ return maxValue;
427
+ }
428
+ if (sumField !== undefined) {
429
+ this.ensureFieldType(clazz, sumField, "SUM operation", (type) => this.isNumericType(type), "numeric");
430
+ if (result.length === 0)
431
+ return null;
432
+ const values = result
433
+ .map((r) => r[sumField])
434
+ .filter((v) => v !== undefined && v !== null);
435
+ if (values.length === 0)
436
+ return null;
437
+ const sum = values.reduce((acc, v) => acc + this.toNumericValue(v, sumField, "SUM operation"), 0);
438
+ return sum;
439
+ }
440
+ if (avgField !== undefined) {
441
+ this.ensureFieldType(clazz, avgField, "AVG operation", (type) => this.isNumericType(type), "numeric");
442
+ if (result.length === 0)
443
+ return null;
444
+ const values = result
445
+ .map((r) => r[avgField])
446
+ .filter((v) => v !== undefined && v !== null);
447
+ if (values.length === 0)
448
+ return null;
449
+ const total = values.reduce((acc, v) => acc + this.toNumericValue(v, avgField, "AVG operation"), 0);
450
+ const average = total / values.length;
451
+ return average;
452
+ }
453
+ if (distinctField !== undefined) {
454
+ // Distinct operation
455
+ const seen = new Set();
456
+ const distinctResults = [];
457
+ for (const item of result) {
458
+ const value = item[distinctField];
459
+ const key = JSON.stringify(value);
460
+ if (!seen.has(key)) {
461
+ seen.add(key);
462
+ distinctResults.push(value);
463
+ }
464
+ }
465
+ return distinctResults;
466
+ }
377
467
  if (groupBy && groupBy.length) {
378
468
  const groupedResults = [];
379
469
  const seen = new Map();
@@ -493,6 +583,37 @@ class RamAdapter extends persistence_1.Adapter {
493
583
  .define((0, db_decorators_1.onCreateUpdate)(handlers_1.createdByOnRamCreateUpdate), (0, decoration_1.propMetadata)(updatedByKey, {}))
494
584
  .apply();
495
585
  }
586
+ ensureFieldType(clazz, field, context, predicate, description) {
587
+ const type = this.resolveFieldType(clazz, field);
588
+ if (!type || !predicate(type)) {
589
+ throw new query_1.QueryError(`${context} requires ${description} attribute, but "${field}" is ${type || "unknown"}`);
590
+ }
591
+ }
592
+ resolveFieldType(clazz, field) {
593
+ const propKey = field;
594
+ const metaType = decoration_1.Metadata.type(clazz, propKey) ??
595
+ decoration_1.Metadata.getPropDesignTypes(clazz, propKey)?.designType;
596
+ return this.normalizeMetaType(metaType);
597
+ }
598
+ normalizeMetaType(metaType) {
599
+ if (!metaType)
600
+ return undefined;
601
+ if (typeof metaType === "string")
602
+ return metaType.toLowerCase();
603
+ if (typeof metaType === "function" && metaType.name)
604
+ return metaType.name.toLowerCase();
605
+ return undefined;
606
+ }
607
+ isNumericType(type) {
608
+ return type === "number" || type === "bigint";
609
+ }
610
+ toNumericValue(value, field, context) {
611
+ if (typeof value === "number")
612
+ return value;
613
+ if (typeof value === "bigint")
614
+ return Number(value);
615
+ throw new query_1.QueryError(`${context} on "${field}" requires numeric values, but got ${typeof value}`);
616
+ }
496
617
  getClient() {
497
618
  return new Map();
498
619
  }
@@ -228,14 +228,14 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
228
228
  delete<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, ...args: ContextualArgs<RamContext>): Promise<Record<string, any>>;
229
229
  /**
230
230
  * @description Gets or creates a table in the in-memory storage
231
- * @summary Retrieves the Map representing a table for a given model or table name.
232
- * If the table doesn't exist, it creates a new one. This is a helper method used
233
- * by other methods to access the correct storage location.
231
+ * @summary Retrieves the Map representing a table for a given model class.
232
+ * If the table doesn't exist, it creates a new one so callers can insert or
233
+ * query entities without null reference checks.
234
234
  * @template M - The model type for the table
235
- * @param {string | Constructor<M>} from - The model class or table name
235
+ * @param {Constructor<M>} from - The model class
236
236
  * @return {Map<string | number, any> | undefined} The table Map or undefined
237
237
  */
238
- protected tableFor<M extends Model>(from: string | Constructor<M>): Map<string | number, any> | undefined;
238
+ protected tableFor<M extends Model>(from: Constructor<M>): Map<string | number, any> | undefined;
239
239
  /**
240
240
  * @description Executes a raw query against the in-memory storage
241
241
  * @summary Performs a query operation on the in-memory data store using the provided query specification.
@@ -329,5 +329,10 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
329
329
  * RamAdapter->>Decoration: apply()
330
330
  */
331
331
  static decoration(): void;
332
+ private ensureFieldType;
333
+ private resolveFieldType;
334
+ private normalizeMetaType;
335
+ private isNumericType;
336
+ private toNumericValue;
332
337
  protected getClient(): RamStorage;
333
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RamAdapter.js","sourceRoot":"","sources":["../../src/ram/RamAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RamAdapter.js","sourceRoot":"","sources":["../../src/ram/RamAdapter.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ exports.RamStatement = void 0;
4
4
  const query_1 = require("./../query/index.cjs");
5
5
  const db_decorators_1 = require("@decaf-ts/db-decorators");
6
6
  const Statement_1 = require("./../query/Statement.cjs");
7
- const decoration_1 = require("@decaf-ts/decoration");
8
7
  const constants_1 = require("./../repository/constants.cjs");
8
+ const decoration_1 = require("@decaf-ts/decoration");
9
9
  /**
10
10
  * @description RAM-specific query statement builder
11
11
  * @summary Extends the base Statement class to provide query building functionality for the RAM adapter.
@@ -112,6 +112,14 @@ class RamStatement extends Statement_1.Statement {
112
112
  * @return {RawRamQuery<M>} The constructed RAM query object
113
113
  */
114
114
  build() {
115
+ if (this.minSelector)
116
+ this.ensureNumberOrDateSelector(this.minSelector, "MIN operation");
117
+ if (this.maxSelector)
118
+ this.ensureNumberOrDateSelector(this.maxSelector, "MAX operation");
119
+ if (this.sumSelector)
120
+ this.ensureNumericSelector(this.sumSelector, "SUM operation");
121
+ if (this.avgSelector)
122
+ this.ensureNumericSelector(this.avgSelector, "AVG operation");
115
123
  const result = {
116
124
  select: this.selectSelector,
117
125
  from: this.fromSelector,
@@ -125,6 +133,18 @@ class RamStatement extends Statement_1.Statement {
125
133
  skip: this.offsetSelector,
126
134
  groupBy: this.groupBySelectors,
127
135
  };
136
+ if (typeof this.countSelector !== "undefined")
137
+ result.count = this.countSelector;
138
+ if (this.minSelector)
139
+ result.min = this.minSelector;
140
+ if (this.maxSelector)
141
+ result.max = this.maxSelector;
142
+ if (this.sumSelector)
143
+ result.sum = this.sumSelector;
144
+ if (this.avgSelector)
145
+ result.avg = this.avgSelector;
146
+ if (this.distinctSelector)
147
+ result.distinct = this.distinctSelector;
128
148
  if (this.orderBySelectors?.length)
129
149
  result.sort = this.getSort();
130
150
  return result;
@@ -178,6 +198,29 @@ class RamStatement extends Statement_1.Statement {
178
198
  return m[attr1] < comparison;
179
199
  case query_1.Operator.SMALLER_EQ:
180
200
  return m[attr1] <= comparison;
201
+ case query_1.Operator.IN:
202
+ if (!Array.isArray(comparison))
203
+ throw new query_1.QueryError(`IN operator requires an array, got: ${typeof comparison}`);
204
+ return comparison.includes(m[attr1]);
205
+ case query_1.Operator.BETWEEN: {
206
+ if (!Array.isArray(comparison) || comparison.length !== 2)
207
+ throw new query_1.QueryError(`BETWEEN operator requires an array with 2 values [min, max], got: ${JSON.stringify(comparison)}`);
208
+ const attr = attr1;
209
+ const attrName = attr;
210
+ const attrType = this.determineAttributeType(m.constructor, attrName, "BETWEEN");
211
+ if (!this.isNumericType(attrType) && attrType !== "date") {
212
+ throw new query_1.QueryError(`BETWEEN operator requires numeric or date attributes, but "${attrName}" is ${attrType ||
213
+ "unknown"}`);
214
+ }
215
+ const [min, max] = comparison;
216
+ const value = m[attr];
217
+ const comparableValue = this.toComparableValue(value, attrType, attrName, "BETWEEN", { allowNull: true });
218
+ if (comparableValue === null)
219
+ return false;
220
+ const minComparable = this.toComparableValue(min, attrType, attrName, "BETWEEN min");
221
+ const maxComparable = this.toComparableValue(max, attrType, attrName, "BETWEEN max");
222
+ return (comparableValue >= minComparable && comparableValue <= maxComparable);
223
+ }
181
224
  default:
182
225
  throw new db_decorators_1.InternalError(`Invalid operator for standard comparisons: ${operator}`);
183
226
  }
@@ -200,6 +243,71 @@ class RamStatement extends Statement_1.Statement {
200
243
  },
201
244
  };
202
245
  }
246
+ ensureNumericSelector(selector, context) {
247
+ this.ensureSelectorType(selector, context, (type) => this.isNumericType(type), "numeric");
248
+ }
249
+ ensureNumberOrDateSelector(selector, context) {
250
+ this.ensureSelectorType(selector, context, (type) => this.isNumericType(type) || type === "date", "numeric or date");
251
+ }
252
+ ensureSelectorType(selector, context, predicate, description) {
253
+ if (!this.fromSelector) {
254
+ throw new db_decorators_1.InternalError(`${context} requires a target model. Call from() before aggregating.`);
255
+ }
256
+ const attr = selector;
257
+ const type = this.determineAttributeType(this.fromSelector, attr, context);
258
+ if (!predicate(type)) {
259
+ throw new query_1.QueryError(`${context} requires a ${description} attribute, but "${attr}" is ${type || "unknown"}`);
260
+ }
261
+ }
262
+ determineAttributeType(clazz, attr, context) {
263
+ const propKey = attr;
264
+ const metaType = decoration_1.Metadata.type(clazz, propKey) ??
265
+ decoration_1.Metadata.getPropDesignTypes(clazz, propKey)?.designType;
266
+ const resolved = this.normalizeMetaType(metaType);
267
+ if (!resolved) {
268
+ throw new query_1.QueryError(`${context} could not resolve property type for "${attr}"`);
269
+ }
270
+ return resolved;
271
+ }
272
+ normalizeMetaType(metaType) {
273
+ if (!metaType)
274
+ return undefined;
275
+ if (typeof metaType === "string")
276
+ return metaType.toLowerCase();
277
+ if (typeof metaType === "function" && metaType.name)
278
+ return metaType.name.toLowerCase();
279
+ return undefined;
280
+ }
281
+ isNumericType(type) {
282
+ return type === "number" || type === "bigint";
283
+ }
284
+ toComparableValue(value, attrType, attrName, context, options) {
285
+ if (value == null) {
286
+ if (options?.allowNull)
287
+ return null;
288
+ throw new query_1.QueryError(`${context} requires a value for "${attrName}"`);
289
+ }
290
+ switch (attrType) {
291
+ case "date":
292
+ if (!(value instanceof Date)) {
293
+ throw new query_1.QueryError(`${context} on date attribute "${attrName}" requires Date values`);
294
+ }
295
+ return value.getTime();
296
+ case "number":
297
+ if (typeof value !== "number") {
298
+ throw new query_1.QueryError(`${context} on numeric attribute "${attrName}" requires number values`);
299
+ }
300
+ return value;
301
+ case "bigint":
302
+ if (typeof value === "number")
303
+ return value;
304
+ if (typeof value === "bigint")
305
+ return Number(value);
306
+ throw new query_1.QueryError(`${context} on bigint attribute "${attrName}" requires numeric values`);
307
+ default:
308
+ throw new query_1.QueryError(`${context} unsupported type "${attrType}" for attribute "${attrName}"`);
309
+ }
310
+ }
203
311
  }
204
312
  exports.RamStatement = RamStatement;
205
313
  //# sourceMappingURL=RamStatement.js.map
@@ -82,4 +82,11 @@ export declare class RamStatement<M extends Model, R, A extends Adapter<M, any,
82
82
  * RamStatement-->>Caller: Return query with where predicate
83
83
  */
84
84
  protected parseCondition(condition: Condition<M>): RawRamQuery<any>;
85
+ private ensureNumericSelector;
86
+ private ensureNumberOrDateSelector;
87
+ private ensureSelectorType;
88
+ private determineAttributeType;
89
+ private normalizeMetaType;
90
+ private isNumericType;
91
+ private toComparableValue;
85
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RamStatement.js","sourceRoot":"","sources":["../../src/ram/RamStatement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RamStatement.js","sourceRoot":"","sources":["../../src/ram/RamStatement.ts"],"names":[],"mappings":"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"}
@@ -13,22 +13,6 @@ import { MultiLock } from "@decaf-ts/transactional-decorators";
13
13
  * @category Ram
14
14
  */
15
15
  export type RamStorage = Map<string, Map<string | number, any>>;
16
- /**
17
- * @description Query specification for RAM adapter
18
- * @summary Defines the structure of a query for retrieving data from the in-memory storage.
19
- * It specifies what fields to select, which model to query, filtering conditions,
20
- * sorting criteria, and pagination options.
21
- * @template M - The model type being queried
22
- * @typedef {Object} RawRamQuery
23
- * @property select - Fields to select from the model, or undefined for all fields
24
- * @property {Constructor<M>} from - The model constructor to query
25
- * @property {function(M): boolean} where - Predicate function for filtering entities
26
- * @property {function(M, M): number} [sort] - Optional comparator function for sorting results
27
- * @property {number} [limit] - Optional maximum number of results to return
28
- * @property {number} [skip] - Optional number of results to skip (for pagination)
29
- * @memberOf module:core
30
- * @category Ram
31
- */
32
16
  export type RawRamQuery<M extends Model = any> = {
33
17
  select: undefined | (keyof M)[];
34
18
  from: Constructor<M>;
@@ -37,6 +21,12 @@ export type RawRamQuery<M extends Model = any> = {
37
21
  groupBy?: (keyof M)[];
38
22
  limit?: number;
39
23
  skip?: number;
24
+ count?: keyof M | null;
25
+ min?: keyof M;
26
+ max?: keyof M;
27
+ sum?: keyof M;
28
+ avg?: keyof M;
29
+ distinct?: keyof M;
40
30
  };
41
31
  /**
42
32
  * @description Flags for RAM adapter operations
@@ -571,6 +571,84 @@ class Repository extends db_decorators_1.Repository {
571
571
  .select(selector)
572
572
  .from(this.class);
573
573
  }
574
+ /**
575
+ * @description Creates a count query
576
+ * @summary Starts building a query that will count records
577
+ * @template S - The select selector type
578
+ * @param {S} [selector] - Optional field to count (counts all if not specified)
579
+ * @return A count query builder
580
+ */
581
+ count(selector) {
582
+ return this.adapter
583
+ .Statement(this._overrides)
584
+ .count(selector)
585
+ .from(this.class);
586
+ }
587
+ /**
588
+ * @description Creates a min query
589
+ * @summary Starts building a query that will find the minimum value
590
+ * @template S - The select selector type
591
+ * @param {S} selector - Field to find minimum value of
592
+ * @return A min query builder
593
+ */
594
+ min(selector) {
595
+ return this.adapter
596
+ .Statement(this._overrides)
597
+ .min(selector)
598
+ .from(this.class);
599
+ }
600
+ /**
601
+ * @description Creates a max query
602
+ * @summary Starts building a query that will find the maximum value
603
+ * @template S - The select selector type
604
+ * @param {S} selector - Field to find maximum value of
605
+ * @return A max query builder
606
+ */
607
+ max(selector) {
608
+ return this.adapter
609
+ .Statement(this._overrides)
610
+ .max(selector)
611
+ .from(this.class);
612
+ }
613
+ /**
614
+ * @description Creates a sum query
615
+ * @summary Starts building a query that will sum values
616
+ * @template S - The select selector type
617
+ * @param {S} selector - Field to sum
618
+ * @return A sum query builder
619
+ */
620
+ sum(selector) {
621
+ return this.adapter
622
+ .Statement(this._overrides)
623
+ .sum(selector)
624
+ .from(this.class);
625
+ }
626
+ /**
627
+ * @description Creates an average query
628
+ * @summary Starts building a query that will compute the average value
629
+ * @template S - The select selector type
630
+ * @param {S} selector - Field to average
631
+ * @return An average query builder
632
+ */
633
+ avg(selector) {
634
+ return this.adapter
635
+ .Statement(this._overrides)
636
+ .avg(selector)
637
+ .from(this.class);
638
+ }
639
+ /**
640
+ * @description Creates a distinct query
641
+ * @summary Starts building a query that will find distinct values
642
+ * @template S - The select selector type
643
+ * @param {S} selector - Field to find distinct values of
644
+ * @return A distinct query builder
645
+ */
646
+ distinct(selector) {
647
+ return this.adapter
648
+ .Statement(this._overrides)
649
+ .distinct(selector)
650
+ .from(this.class);
651
+ }
574
652
  /**
575
653
  * @description Executes a query with the specified conditions and options.
576
654
  * @summary Provides a simplified way to query the database with common query parameters.
@@ -299,6 +299,54 @@ export declare class Repository<M extends Model<boolean>, A extends Adapter<any,
299
299
  * @return A query builder for the selected fields.
300
300
  */
301
301
  select<S extends readonly SelectSelector<M>[]>(selector: readonly [...S]): WhereOption<M, Pick<M, S[number]>[]>;
302
+ /**
303
+ * @description Creates a count query
304
+ * @summary Starts building a query that will count records
305
+ * @template S - The select selector type
306
+ * @param {S} [selector] - Optional field to count (counts all if not specified)
307
+ * @return A count query builder
308
+ */
309
+ count<S extends SelectSelector<M>>(selector?: S): WhereOption<M, number>;
310
+ /**
311
+ * @description Creates a min query
312
+ * @summary Starts building a query that will find the minimum value
313
+ * @template S - The select selector type
314
+ * @param {S} selector - Field to find minimum value of
315
+ * @return A min query builder
316
+ */
317
+ min<S extends SelectSelector<M>>(selector: S): WhereOption<M, M[S]>;
318
+ /**
319
+ * @description Creates a max query
320
+ * @summary Starts building a query that will find the maximum value
321
+ * @template S - The select selector type
322
+ * @param {S} selector - Field to find maximum value of
323
+ * @return A max query builder
324
+ */
325
+ max<S extends SelectSelector<M>>(selector: S): WhereOption<M, M[S]>;
326
+ /**
327
+ * @description Creates a sum query
328
+ * @summary Starts building a query that will sum values
329
+ * @template S - The select selector type
330
+ * @param {S} selector - Field to sum
331
+ * @return A sum query builder
332
+ */
333
+ sum<S extends SelectSelector<M>>(selector: S): WhereOption<M, number>;
334
+ /**
335
+ * @description Creates an average query
336
+ * @summary Starts building a query that will compute the average value
337
+ * @template S - The select selector type
338
+ * @param {S} selector - Field to average
339
+ * @return An average query builder
340
+ */
341
+ avg<S extends SelectSelector<M>>(selector: S): WhereOption<M, number>;
342
+ /**
343
+ * @description Creates a distinct query
344
+ * @summary Starts building a query that will find distinct values
345
+ * @template S - The select selector type
346
+ * @param {S} selector - Field to find distinct values of
347
+ * @return A distinct query builder
348
+ */
349
+ distinct<S extends SelectSelector<M>>(selector: S): WhereOption<M, M[S][]>;
302
350
  /**
303
351
  * @description Executes a query with the specified conditions and options.
304
352
  * @summary Provides a simplified way to query the database with common query parameters.