@decaf-ts/core 0.8.25 → 0.8.26

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 (110) 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/index.d.ts +5 -0
  7. package/lib/esm/identity/index.js +5 -0
  8. package/lib/esm/identity/index.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/index.d.ts +5 -0
  12. package/lib/esm/interfaces/index.js +5 -0
  13. package/lib/esm/interfaces/index.js.map +1 -1
  14. package/lib/esm/migrations/index.d.ts +5 -0
  15. package/lib/esm/migrations/index.js +5 -0
  16. package/lib/esm/migrations/index.js.map +1 -1
  17. package/lib/esm/model/decorators.d.ts +3 -0
  18. package/lib/esm/model/decorators.js.map +1 -1
  19. package/lib/esm/model/index.d.ts +5 -0
  20. package/lib/esm/model/index.js +5 -0
  21. package/lib/esm/model/index.js.map +1 -1
  22. package/lib/esm/overrides/index.d.ts +5 -0
  23. package/lib/esm/overrides/index.js +5 -0
  24. package/lib/esm/overrides/index.js.map +1 -1
  25. package/lib/esm/persistence/index.d.ts +5 -0
  26. package/lib/esm/persistence/index.js +5 -0
  27. package/lib/esm/persistence/index.js.map +1 -1
  28. package/lib/esm/query/Statement.d.ts +9 -4
  29. package/lib/esm/query/Statement.js +62 -4
  30. package/lib/esm/query/Statement.js.map +1 -1
  31. package/lib/esm/query/index.d.ts +5 -0
  32. package/lib/esm/query/index.js +5 -0
  33. package/lib/esm/query/index.js.map +1 -1
  34. package/lib/esm/query/options.d.ts +72 -8
  35. package/lib/esm/ram/RamAdapter.d.ts +3 -0
  36. package/lib/esm/ram/RamAdapter.js +88 -22
  37. package/lib/esm/ram/RamAdapter.js.map +1 -1
  38. package/lib/esm/ram/RamStatement.js +9 -3
  39. package/lib/esm/ram/RamStatement.js.map +1 -1
  40. package/lib/esm/ram/index.js +5 -0
  41. package/lib/esm/ram/index.js.map +1 -1
  42. package/lib/esm/ram/types.d.ts +1 -0
  43. package/lib/esm/repository/Repository.d.ts +3 -3
  44. package/lib/esm/repository/Repository.js +1 -1
  45. package/lib/esm/repository/Repository.js.map +1 -1
  46. package/lib/esm/repository/index.d.ts +5 -0
  47. package/lib/esm/repository/index.js +5 -0
  48. package/lib/esm/repository/index.js.map +1 -1
  49. package/lib/esm/services/index.d.ts +5 -0
  50. package/lib/esm/services/index.js +5 -0
  51. package/lib/esm/services/index.js.map +1 -1
  52. package/lib/esm/tasks/index.d.ts +5 -0
  53. package/lib/esm/tasks/index.js +5 -0
  54. package/lib/esm/tasks/index.js.map +1 -1
  55. package/lib/esm/utils/index.d.ts +5 -0
  56. package/lib/esm/utils/index.js +5 -0
  57. package/lib/esm/utils/index.js.map +1 -1
  58. package/lib/identity/index.cjs +5 -0
  59. package/lib/identity/index.d.ts +5 -0
  60. package/lib/identity/index.js.map +1 -1
  61. package/lib/index.cjs +1 -1
  62. package/lib/index.d.ts +1 -1
  63. package/lib/interfaces/index.cjs +5 -0
  64. package/lib/interfaces/index.d.ts +5 -0
  65. package/lib/interfaces/index.js.map +1 -1
  66. package/lib/migrations/index.cjs +5 -0
  67. package/lib/migrations/index.d.ts +5 -0
  68. package/lib/migrations/index.js.map +1 -1
  69. package/lib/model/decorators.d.ts +3 -0
  70. package/lib/model/decorators.js.map +1 -1
  71. package/lib/model/index.cjs +5 -0
  72. package/lib/model/index.d.ts +5 -0
  73. package/lib/model/index.js.map +1 -1
  74. package/lib/overrides/index.cjs +5 -0
  75. package/lib/overrides/index.d.ts +5 -0
  76. package/lib/overrides/index.js.map +1 -1
  77. package/lib/persistence/index.cjs +5 -0
  78. package/lib/persistence/index.d.ts +5 -0
  79. package/lib/persistence/index.js.map +1 -1
  80. package/lib/query/Statement.cjs +62 -4
  81. package/lib/query/Statement.d.ts +9 -4
  82. package/lib/query/Statement.js.map +1 -1
  83. package/lib/query/index.cjs +5 -0
  84. package/lib/query/index.d.ts +5 -0
  85. package/lib/query/index.js.map +1 -1
  86. package/lib/query/options.d.ts +72 -8
  87. package/lib/ram/RamAdapter.cjs +88 -22
  88. package/lib/ram/RamAdapter.d.ts +3 -0
  89. package/lib/ram/RamAdapter.js.map +1 -1
  90. package/lib/ram/RamStatement.cjs +8 -2
  91. package/lib/ram/RamStatement.js.map +1 -1
  92. package/lib/ram/index.cjs +5 -0
  93. package/lib/ram/index.js.map +1 -1
  94. package/lib/ram/types.d.ts +1 -0
  95. package/lib/repository/Repository.cjs +1 -1
  96. package/lib/repository/Repository.d.ts +3 -3
  97. package/lib/repository/Repository.js.map +1 -1
  98. package/lib/repository/index.cjs +5 -0
  99. package/lib/repository/index.d.ts +5 -0
  100. package/lib/repository/index.js.map +1 -1
  101. package/lib/services/index.cjs +5 -0
  102. package/lib/services/index.d.ts +5 -0
  103. package/lib/services/index.js.map +1 -1
  104. package/lib/tasks/index.cjs +5 -0
  105. package/lib/tasks/index.d.ts +5 -0
  106. package/lib/tasks/index.js.map +1 -1
  107. package/lib/utils/index.cjs +5 -0
  108. package/lib/utils/index.d.ts +5 -0
  109. package/lib/utils/index.js.map +1 -1
  110. package/package.json +1 -1
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var _a, _b, _c, _d, _e, _f;
11
+ var _a, _b, _c, _d, _e, _f, _g;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.Statement = void 0;
14
14
  const decorator_validation_1 = require("@decaf-ts/decorator-validation");
@@ -79,6 +79,7 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
79
79
  super();
80
80
  this.adapter = adapter;
81
81
  this.overrides = overrides;
82
+ this._inCountMode = false;
82
83
  [this.execute, this.paginate].forEach((m) => {
83
84
  (0, db_decorators_1.prefixMethod)(this, m, (...args) => {
84
85
  return this.executionPrefix(m, ...args);
@@ -111,6 +112,18 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
111
112
  return this;
112
113
  }
113
114
  distinct(selector) {
115
+ // When chained after count(), make it a count distinct
116
+ if (this._inCountMode) {
117
+ // Use the count selector as the field to count distinct on
118
+ this.countDistinctSelector = this.countSelector;
119
+ this.countSelector = undefined;
120
+ this._inCountMode = false;
121
+ return this;
122
+ }
123
+ // Standalone distinct requires a selector
124
+ if (!selector) {
125
+ throw new errors_2.QueryError("distinct() requires a selector when not chained after count()");
126
+ }
114
127
  this.distinctSelector = selector;
115
128
  return this;
116
129
  }
@@ -132,6 +145,7 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
132
145
  }
133
146
  count(selector) {
134
147
  this.countSelector = selector ?? null;
148
+ this._inCountMode = true;
135
149
  return this;
136
150
  }
137
151
  from(selector) {
@@ -197,19 +211,47 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
197
211
  return this;
198
212
  }
199
213
  async execute(...args) {
200
- const { log, ctxArgs } = this.logCtx(args, this.execute);
214
+ const { log, ctx, ctxArgs } = this.logCtx(args, this.execute);
201
215
  try {
202
216
  if (this.prepared)
203
217
  return this.executePrepared(...args);
204
218
  log.silly(`Building raw statement...`);
205
219
  const query = this.build();
206
220
  log.silly(`executing raw statement`);
207
- return (await this.raw(query, ...ctxArgs));
221
+ const results = (await this.raw(query, ...ctxArgs));
222
+ if (this.hasAggregation()) {
223
+ return results;
224
+ }
225
+ if (!this.selectSelector) {
226
+ const pkAttr = decorator_validation_1.Model.pk(this.fromSelector);
227
+ const processor = function recordProcessor(r) {
228
+ const id = r[pkAttr];
229
+ return this.adapter.revert(r, this.fromSelector, id, undefined, ctx);
230
+ }.bind(this);
231
+ if (this.groupBySelectors?.length) {
232
+ return this.revertGroupedResults(results, processor);
233
+ }
234
+ if (Array.isArray(results))
235
+ return results.map(processor);
236
+ return processor(results);
237
+ }
238
+ return results;
208
239
  }
209
240
  catch (e) {
210
241
  throw new errors_2.QueryError(e);
211
242
  }
212
243
  }
244
+ revertGroupedResults(value, processor) {
245
+ if (Array.isArray(value))
246
+ return value.map(processor);
247
+ if (value && typeof value === "object") {
248
+ return Object.entries(value).reduce((acc, [key, val]) => {
249
+ acc[key] = this.revertGroupedResults(val, processor);
250
+ return acc;
251
+ }, {});
252
+ }
253
+ return value;
254
+ }
213
255
  async executePrepared(...argz) {
214
256
  const repo = Repository_1.Repository.forModel(this.fromSelector, this.adapter.alias);
215
257
  const { method, args, params } = this.prepared;
@@ -221,6 +263,9 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
221
263
  if (!allowRawStatements)
222
264
  throw new errors_1.UnsupportedError("Raw statements are not allowed in the current configuration");
223
265
  const results = await this.adapter.raw(rawInput, true, ...ctxArgs);
266
+ if (this.hasAggregation()) {
267
+ return results;
268
+ }
224
269
  if (!this.selectSelector) {
225
270
  return results;
226
271
  }
@@ -299,6 +344,8 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
299
344
  return undefined;
300
345
  if (typeof this.countSelector !== "undefined")
301
346
  return undefined;
347
+ if (this.countDistinctSelector)
348
+ return undefined;
302
349
  if (this.maxSelector)
303
350
  return undefined;
304
351
  if (this.minSelector)
@@ -403,11 +450,22 @@ class Statement extends ContextualLoggedClass_1.ContextualLoggedClass {
403
450
  return !((this.selectSelector && this.selectSelector.length) ||
404
451
  (this.groupBySelectors && this.groupBySelectors.length) ||
405
452
  typeof this.countSelector !== "undefined" ||
453
+ this.countDistinctSelector ||
406
454
  this.maxSelector ||
407
455
  this.minSelector ||
408
456
  this.sumSelector ||
409
457
  this.avgSelector);
410
458
  }
459
+ hasAggregation() {
460
+ return (typeof this.countSelector !== "undefined" ||
461
+ typeof this.countDistinctSelector !== "undefined" ||
462
+ typeof this.maxSelector !== "undefined" ||
463
+ typeof this.minSelector !== "undefined" ||
464
+ typeof this.sumSelector !== "undefined" ||
465
+ typeof this.avgSelector !== "undefined" ||
466
+ typeof this.distinctSelector !== "undefined" ||
467
+ ((this.groupBySelectors?.length || 0) > 0));
468
+ }
411
469
  /**
412
470
  * @description Creates a paginator for the query
413
471
  * @summary Builds the query and wraps it in a RamPaginator to enable pagination of results.
@@ -499,7 +557,7 @@ __decorate([
499
557
  __decorate([
500
558
  (0, logging_1.final)(),
501
559
  __metadata("design:type", Function),
502
- __metadata("design:paramtypes", [Object]),
560
+ __metadata("design:paramtypes", [typeof (_g = typeof Key !== "undefined" && Key) === "function" ? _g : Object]),
503
561
  __metadata("design:returntype", Object)
504
562
  ], Statement.prototype, "groupBy", null);
505
563
  __decorate([
@@ -3,7 +3,7 @@ import type { Executor, RawExecutor } from "../interfaces";
3
3
  import type { FromSelector, GroupBySelector, OrderBySelector, OrderDirectionInput, SelectSelector } from "./selectors";
4
4
  import { Condition } from "./Condition";
5
5
  import { Logger } from "@decaf-ts/logging";
6
- import type { CountOption, DistinctOption, GroupByResult, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, OrderByResult, OrderByThenByOption, PreparableStatementExecutor, SelectOption, StatementExecutor, SumOption, AvgOption, WhereOption } from "./options";
6
+ import type { CountDistinctOption, CountOption, DistinctOption, GroupByResult, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, OrderByResult, OrderByThenByOption, PreparableStatementExecutor, SelectOption, StatementExecutor, SumOption, AvgOption, WhereOption } from "./options";
7
7
  import { Paginatable } from "../interfaces/Paginatable";
8
8
  import { Paginator } from "./Paginator";
9
9
  import { Adapter } from "../persistence/Adapter";
@@ -70,8 +70,10 @@ export declare abstract class Statement<M extends Model, A extends Adapter<any,
70
70
  protected maxSelector?: SelectSelector<M>;
71
71
  protected minSelector?: SelectSelector<M>;
72
72
  protected countSelector?: SelectSelector<M> | null;
73
+ protected countDistinctSelector?: SelectSelector<M> | null;
73
74
  protected sumSelector?: SelectSelector<M>;
74
75
  protected avgSelector?: SelectSelector<M>;
76
+ private _inCountMode;
75
77
  protected fromSelector: Constructor<M>;
76
78
  protected whereCondition?: Condition<M>;
77
79
  protected orderBySelectors?: OrderBySelector<M>[];
@@ -85,30 +87,33 @@ export declare abstract class Statement<M extends Model, A extends Adapter<any,
85
87
  select<S extends readonly SelectSelector<M>[]>(): SelectOption<M, M[]>;
86
88
  select<S extends readonly SelectSelector<M>[]>(selector: readonly [...S]): SelectOption<M, Pick<M, S[number]>[]>;
87
89
  distinct<S extends SelectSelector<M>>(selector: S): DistinctOption<M, M[S][]>;
90
+ distinct(): CountDistinctOption<M>;
88
91
  max<S extends SelectSelector<M>>(selector: S): MaxOption<M, M[S]>;
89
92
  min<S extends SelectSelector<M>>(selector: S): MinOption<M, M[S]>;
90
93
  sum<S extends SelectSelector<M>>(selector: S): SumOption<M, number>;
91
94
  avg<S extends SelectSelector<M>>(selector: S): AvgOption<M, number>;
92
- count<S extends SelectSelector<M>>(selector?: S): CountOption<M, number>;
95
+ count<S extends SelectSelector<M>>(selector?: S): CountOption<M>;
93
96
  from(selector: FromSelector<M>): WhereOption<M, R>;
94
97
  where(condition: Condition<M>): OrderAndGroupOption<M, R>;
95
98
  orderBy(selector: OrderBySelector<M>): OrderByResult<M, R>;
96
99
  orderBy(attribute: keyof M, direction: OrderDirectionInput): OrderByResult<M, R>;
97
- thenBy(selector: GroupBySelector<M>): GroupByResult<M, R>;
100
+ thenBy(selector: GroupBySelector<M>): GroupByResult<M>;
98
101
  thenBy(selector: OrderBySelector<M>): OrderByThenByOption<M, R>;
99
102
  thenBy(attribute: keyof M, direction: OrderDirectionInput): OrderByThenByOption<M, R>;
100
103
  private normalizeOrderCriterion;
101
104
  private normalizeOrderDirection;
102
- groupBy(selector: GroupBySelector<M>): GroupByResult<M, R>;
105
+ groupBy<Key extends GroupBySelector<M>>(selector: Key): GroupByResult<M, [Key]>;
103
106
  limit(value: number): OffsetOption<M, R>;
104
107
  offset(value: number): PreparableStatementExecutor<M, R>;
105
108
  execute(...args: MaybeContextualArg<ContextOf<A>>): Promise<R>;
109
+ private revertGroupedResults;
106
110
  protected executePrepared(...argz: ContextualArgs<ContextOf<A>>): Promise<R>;
107
111
  raw<R>(rawInput: Q, ...args: ContextualArgs<ContextOf<A>>): Promise<R>;
108
112
  protected prepareCondition(condition: Condition<any>, ctx: ContextOf<A>): PreparedStatement<any>;
109
113
  protected squash(ctx: ContextOf<A>): PreparedStatement<any> | undefined;
110
114
  prepare(ctx?: ContextOf<A>): Promise<StatementExecutor<M, R>>;
111
115
  protected isSimpleQuery(): boolean;
116
+ protected hasAggregation(): boolean;
112
117
  protected abstract build(): Q;
113
118
  protected abstract parseCondition(condition: Condition<M>, ...args: any[]): Q;
114
119
  /**
@@ -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":"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"}
@@ -14,6 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ /**
18
+ * @description Exports for the query module.
19
+ * @summary This file exports all the necessary components for the query functionality, including Condition, constants, errors, and more.
20
+ * @module core/query
21
+ */
17
22
  __exportStar(require("./Condition.cjs"), exports);
18
23
  __exportStar(require("./constants.cjs"), exports);
19
24
  __exportStar(require("./errors.cjs"), exports);
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @description Exports for the query module.
3
+ * @summary This file exports all the necessary components for the query functionality, including Condition, constants, errors, and more.
4
+ * @module core/query
5
+ */
1
6
  export * from "./Condition";
2
7
  export * from "./constants";
3
8
  export * from "./errors";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,kDAA4B;AAC5B,+CAAyB;AACzB,gDAA0B;AAC1B,kDAA4B;AAC5B,kDAA4B;AAC5B,kDAA4B;AAC5B,mDAA6B;AAC7B,2DAAqC;AACrC,8CAAwB;AACxB,8CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,kDAA4B;AAC5B,kDAA4B;AAC5B,+CAAyB;AACzB,gDAA0B;AAC1B,kDAA4B;AAC5B,kDAA4B;AAC5B,kDAA4B;AAC5B,mDAA6B;AAC7B,2DAAqC;AACrC,8CAAwB;AACxB,8CAAwB"}
@@ -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
+ type NormalizedGroupKey<M extends Model, K extends keyof M> = M[K] extends PropertyKey ? M[K] : PropertyKey;
8
+ type GroupByReturnValue<M extends Model, Keys extends readonly GroupBySelector<M>[]> = Keys extends [
9
+ infer Head extends keyof M,
10
+ ...infer Tail extends readonly GroupBySelector<M>[]
11
+ ] ? Record<NormalizedGroupKey<M, Head>, GroupByReturnValue<M, Tail>> : M[];
7
12
  export interface StatementExecutor<M extends Model, R> extends Executor<R>, Paginatable<M, R, any> {
8
13
  }
9
14
  export interface PreparableStatementExecutor<M extends Model, R> extends StatementExecutor<M, R> {
@@ -16,11 +21,11 @@ export interface PreparableStatementExecutor<M extends Model, R> extends Stateme
16
21
  * @interface GroupByOption
17
22
  * @memberOf module:core
18
23
  */
19
- export interface GroupByResult<M extends Model, R> extends PreparableStatementExecutor<M, R>, OrderByOption<M, R>, LimitOption<M, R>, OffsetOption<M, R> {
20
- thenBy(selector: GroupBySelector<M>): GroupByResult<M, R>;
24
+ export interface GroupByResult<M extends Model, Keys extends readonly GroupBySelector<M>[] = readonly GroupBySelector<M>[]> extends PreparableStatementExecutor<M, GroupByReturnValue<M, Keys>>, OrderByOption<M, GroupByReturnValue<M, Keys>>, LimitOption<M, GroupByReturnValue<M, Keys>>, OffsetOption<M, GroupByReturnValue<M, Keys>> {
25
+ thenBy<Key extends GroupBySelector<M>>(selector: Key): GroupByResult<M, [...Keys, Key]>;
21
26
  }
22
- export interface GroupByOption<M extends Model, R> extends Executor<R> {
23
- groupBy(selector: GroupBySelector<M>): GroupByResult<M, R>;
27
+ export interface GroupByOption<M extends Model> {
28
+ groupBy<Key extends GroupBySelector<M>>(selector: Key): GroupByResult<M, [Key]>;
24
29
  }
25
30
  /**
26
31
  * @summary Offset Option interface
@@ -85,7 +90,7 @@ export interface OrderByThenByOption<M extends Model, R> extends LimitOption<M,
85
90
  * @extends OffsetOption
86
91
  * @memberOf module:core
87
92
  */
88
- export interface OrderAndGroupOption<M extends Model, R> extends OrderByOption<M, R>, PreparableStatementExecutor<M, R>, GroupByOption<M, R>, LimitOption<M, R>, OffsetOption<M, R> {
93
+ export interface OrderAndGroupOption<M extends Model, R> extends OrderByOption<M, R>, PreparableStatementExecutor<M, R>, GroupByOption<M>, LimitOption<M, R>, OffsetOption<M, R> {
89
94
  }
90
95
  /**
91
96
  * @summary Where Option interface
@@ -150,15 +155,73 @@ export interface MaxOption<M extends Model, R> extends FromOption<M, R> {
150
155
  */
151
156
  export interface MinOption<M extends Model, R> extends FromOption<M, R> {
152
157
  }
158
+ /**
159
+ * @summary Count Distinct Where Option Interface
160
+ * @description Exposes the remaining options after COUNT DISTINCT...FROM
161
+ *
162
+ * @interface CountDistinctWhereOption
163
+ * @memberOf module:core
164
+ */
165
+ export interface CountDistinctWhereOption<M extends Model> extends OrderAndGroupOption<M, number> {
166
+ /**
167
+ * @summary filter the records by a condition
168
+ * @param {Condition} condition
169
+ */
170
+ where(condition: Condition<M>): CountDistinctWhereOption<M>;
171
+ }
172
+ /**
173
+ * @summary Count Where Option Interface
174
+ * @description Exposes the remaining options after COUNT...FROM with distinct() available
175
+ *
176
+ * @interface CountWhereOption
177
+ * @memberOf module:core
178
+ */
179
+ export interface CountWhereOption<M extends Model> extends OrderAndGroupOption<M, number> {
180
+ /**
181
+ * @summary Makes the count distinct
182
+ * @description When chained after count(), counts only distinct values
183
+ * @return A count distinct query builder
184
+ */
185
+ distinct(): CountDistinctWhereOption<M>;
186
+ /**
187
+ * @summary filter the records by a condition
188
+ * @param {Condition} condition
189
+ */
190
+ where(condition: Condition<M>): CountWhereOption<M>;
191
+ }
153
192
  /**
154
193
  * @summary Count Option Interface
155
194
  * @description Exposes the remaining options after a COUNT
156
195
  *
157
196
  * @interface CountOption
158
- * @extends FromOption
159
197
  * @memberOf module:core
160
198
  */
161
- export interface CountOption<M extends Model, R> extends FromOption<M, R> {
199
+ export interface CountOption<M extends Model> {
200
+ /**
201
+ * @summary Makes the count distinct
202
+ * @description When chained after count(), counts only distinct values
203
+ * @return A count distinct query builder
204
+ */
205
+ distinct(): CountDistinctOption<M>;
206
+ /**
207
+ * @summary selects records from a table
208
+ * @param {Constructor} tableName
209
+ */
210
+ from(tableName: Constructor<M> | string): CountWhereOption<M>;
211
+ }
212
+ /**
213
+ * @summary Count Distinct Option Interface
214
+ * @description Exposes the remaining options after a COUNT DISTINCT
215
+ *
216
+ * @interface CountDistinctOption
217
+ * @memberOf module:core
218
+ */
219
+ export interface CountDistinctOption<M extends Model> {
220
+ /**
221
+ * @summary selects records from a table
222
+ * @param {Constructor} tableName
223
+ */
224
+ from(tableName: Constructor<M> | string): CountWhereOption<M>;
162
225
  }
163
226
  /**
164
227
  * @summary Sum Option Interface
@@ -192,7 +255,7 @@ export interface SelectOption<M extends Model, R> extends FromOption<M, R> {
192
255
  distinct<S extends SelectSelector<M>>(selector: S): DistinctOption<M, M[S][]>;
193
256
  max<S extends SelectSelector<M>>(selector: S): MaxOption<M, M[S]>;
194
257
  min<S extends SelectSelector<M>>(selector: S): MinOption<M, M[S]>;
195
- count<S extends SelectSelector<M>>(selector?: S): CountOption<M, number>;
258
+ count<S extends SelectSelector<M>>(selector?: S): CountOption<M>;
196
259
  sum<S extends SelectSelector<M>>(selector: S): SumOption<M, number>;
197
260
  avg<S extends SelectSelector<M>>(selector: S): AvgOption<M, number>;
198
261
  }
@@ -313,3 +376,4 @@ export interface ConditionBuilderOption<M extends Model> {
313
376
  attribute(attr: keyof M): AttributeOption<M>;
314
377
  attr(attr: keyof M): AttributeOption<M>;
315
378
  }
379
+ export {};
@@ -362,7 +362,7 @@ class RamAdapter extends persistence_1.Adapter {
362
362
  async raw(rawInput, docsOnly = true, ...args) {
363
363
  const { log, ctx } = this.logCtx(args, this.raw);
364
364
  log.debug(`performing raw query: ${JSON.stringify(rawInput)}`);
365
- const { where, sort, limit, skip, from, groupBy, count: countField, min: minField, max: maxField, sum: sumField, avg: avgField, distinct: distinctField, } = rawInput;
365
+ const { where, sort, limit, skip, from, groupBy, count: countField, countDistinct: countDistinctField, min: minField, max: maxField, sum: sumField, avg: avgField, distinct: distinctField, } = rawInput;
366
366
  let { select } = rawInput;
367
367
  const collection = this.tableFor(from);
368
368
  if (!collection)
@@ -387,6 +387,16 @@ class RamAdapter extends persistence_1.Adapter {
387
387
  return count;
388
388
  }
389
389
  }
390
+ if (countDistinctField !== undefined) {
391
+ const seen = new Set();
392
+ for (const item of result) {
393
+ const value = item[countDistinctField];
394
+ if (value !== undefined && value !== null) {
395
+ seen.add(JSON.stringify(value));
396
+ }
397
+ }
398
+ return seen.size;
399
+ }
390
400
  if (minField !== undefined) {
391
401
  this.ensureFieldType(clazz, minField, "MIN operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
392
402
  // Min operation
@@ -438,7 +448,9 @@ class RamAdapter extends persistence_1.Adapter {
438
448
  return sum;
439
449
  }
440
450
  if (avgField !== undefined) {
441
- this.ensureFieldType(clazz, avgField, "AVG operation", (type) => this.isNumericType(type), "numeric");
451
+ const fieldType = this.resolveFieldType(clazz, avgField);
452
+ const isDateField = fieldType === "date";
453
+ this.ensureFieldType(clazz, avgField, "AVG operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
442
454
  if (result.length === 0)
443
455
  return null;
444
456
  const values = result
@@ -446,6 +458,11 @@ class RamAdapter extends persistence_1.Adapter {
446
458
  .filter((v) => v !== undefined && v !== null);
447
459
  if (values.length === 0)
448
460
  return null;
461
+ if (isDateField) {
462
+ const timestamps = values.map((v) => v instanceof Date ? v.getTime() : new Date(v).getTime());
463
+ const avgTimestamp = timestamps.reduce((acc, t) => acc + t, 0) / timestamps.length;
464
+ return new Date(avgTimestamp);
465
+ }
449
466
  const total = values.reduce((acc, v) => acc + this.toNumericValue(v, avgField, "AVG operation"), 0);
450
467
  const average = total / values.length;
451
468
  return average;
@@ -464,38 +481,87 @@ class RamAdapter extends persistence_1.Adapter {
464
481
  }
465
482
  return distinctResults;
466
483
  }
484
+ let count;
485
+ let output;
467
486
  if (groupBy && groupBy.length) {
468
- const groupedResults = [];
469
- const seen = new Map();
470
- for (const item of result) {
471
- const key = JSON.stringify(groupBy.map((field) => item[field]));
472
- if (seen.has(key))
473
- continue;
474
- seen.set(key, true);
475
- groupedResults.push(item);
476
- }
477
- result = groupedResults;
487
+ const grouped = this.groupRecords(result, groupBy);
488
+ const keys = Object.keys(grouped);
489
+ count = keys.length;
490
+ output = this.applyGroupPagination(grouped, skip, limit);
478
491
  }
479
- const count = result.length;
480
- if (skip)
481
- result = result.slice(skip);
482
- if (limit)
483
- result = result.slice(0, limit);
484
- if (select) {
492
+ else {
493
+ count = result.length;
494
+ let paged = result;
495
+ if (skip)
496
+ paged = paged.slice(skip);
497
+ if (limit)
498
+ paged = paged.slice(0, limit);
499
+ output = paged;
500
+ }
501
+ if (select && !(groupBy && groupBy.length)) {
485
502
  select = Array.isArray(select) ? select : [select];
486
- result = result.map((r) => Object.entries(r).reduce((acc, [key, val]) => {
503
+ output = output.map((row) => Object.entries(row).reduce((acc, [key, val]) => {
487
504
  if (select.includes(key))
488
505
  acc[key] = val;
489
506
  return acc;
490
507
  }, {}));
491
508
  }
492
509
  if (docsOnly)
493
- return result;
510
+ return output;
494
511
  return {
495
- data: result,
496
- count: count,
512
+ data: output,
513
+ count,
497
514
  };
498
515
  }
516
+ groupRecords(records, selectors) {
517
+ if (!selectors.length)
518
+ return records;
519
+ const [current, ...rest] = selectors;
520
+ const grouped = {};
521
+ for (const record of records) {
522
+ const key = this.normalizeGroupKey(record[current]);
523
+ if (!grouped[key])
524
+ grouped[key] = [];
525
+ grouped[key].push(record);
526
+ }
527
+ if (!rest.length)
528
+ return grouped;
529
+ const nested = {};
530
+ for (const [key, values] of Object.entries(grouped)) {
531
+ nested[key] = this.groupRecords(values, rest);
532
+ }
533
+ return nested;
534
+ }
535
+ normalizeGroupKey(value) {
536
+ if (value === undefined)
537
+ return "undefined";
538
+ if (value === null)
539
+ return "null";
540
+ if (typeof value === "symbol")
541
+ return value.toString();
542
+ if (typeof value === "object") {
543
+ try {
544
+ return JSON.stringify(value);
545
+ }
546
+ catch {
547
+ return String(value);
548
+ }
549
+ }
550
+ return String(value);
551
+ }
552
+ applyGroupPagination(grouped, skip, limit) {
553
+ if (typeof skip === "undefined" && typeof limit === "undefined") {
554
+ return grouped;
555
+ }
556
+ const keys = Object.keys(grouped);
557
+ const start = skip ?? 0;
558
+ const end = typeof limit === "undefined" ? undefined : start + limit;
559
+ const paged = {};
560
+ for (const key of keys.slice(start, end)) {
561
+ paged[key] = grouped[key];
562
+ }
563
+ return paged;
564
+ }
499
565
  /**
500
566
  * @description Parses and converts errors to appropriate types
501
567
  * @summary Ensures that errors are of the correct type for consistent error handling.
@@ -280,6 +280,9 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
280
280
  * RamAdapter-->>Caller: result
281
281
  */
282
282
  raw<R, D extends boolean>(rawInput: RawRamQuery<any>, docsOnly?: D, ...args: ContextualArgs<RamContext>): Promise<RawResult<R, D>>;
283
+ private groupRecords;
284
+ private normalizeGroupKey;
285
+ private applyGroupPagination;
283
286
  /**
284
287
  * @description Parses and converts errors to appropriate types
285
288
  * @summary Ensures that errors are of the correct type for consistent error handling.