@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.
- package/README.md +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/lib/esm/identity/index.d.ts +5 -0
- package/lib/esm/identity/index.js +5 -0
- package/lib/esm/identity/index.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/interfaces/index.d.ts +5 -0
- package/lib/esm/interfaces/index.js +5 -0
- package/lib/esm/interfaces/index.js.map +1 -1
- package/lib/esm/migrations/index.d.ts +5 -0
- package/lib/esm/migrations/index.js +5 -0
- package/lib/esm/migrations/index.js.map +1 -1
- package/lib/esm/model/decorators.d.ts +3 -0
- package/lib/esm/model/decorators.js.map +1 -1
- package/lib/esm/model/index.d.ts +5 -0
- package/lib/esm/model/index.js +5 -0
- package/lib/esm/model/index.js.map +1 -1
- package/lib/esm/overrides/index.d.ts +5 -0
- package/lib/esm/overrides/index.js +5 -0
- package/lib/esm/overrides/index.js.map +1 -1
- package/lib/esm/persistence/index.d.ts +5 -0
- package/lib/esm/persistence/index.js +5 -0
- package/lib/esm/persistence/index.js.map +1 -1
- package/lib/esm/query/Statement.d.ts +9 -4
- package/lib/esm/query/Statement.js +62 -4
- package/lib/esm/query/Statement.js.map +1 -1
- package/lib/esm/query/index.d.ts +5 -0
- package/lib/esm/query/index.js +5 -0
- package/lib/esm/query/index.js.map +1 -1
- package/lib/esm/query/options.d.ts +72 -8
- package/lib/esm/ram/RamAdapter.d.ts +3 -0
- package/lib/esm/ram/RamAdapter.js +88 -22
- package/lib/esm/ram/RamAdapter.js.map +1 -1
- package/lib/esm/ram/RamStatement.js +9 -3
- package/lib/esm/ram/RamStatement.js.map +1 -1
- package/lib/esm/ram/index.js +5 -0
- package/lib/esm/ram/index.js.map +1 -1
- package/lib/esm/ram/types.d.ts +1 -0
- package/lib/esm/repository/Repository.d.ts +3 -3
- package/lib/esm/repository/Repository.js +1 -1
- package/lib/esm/repository/Repository.js.map +1 -1
- package/lib/esm/repository/index.d.ts +5 -0
- package/lib/esm/repository/index.js +5 -0
- package/lib/esm/repository/index.js.map +1 -1
- package/lib/esm/services/index.d.ts +5 -0
- package/lib/esm/services/index.js +5 -0
- package/lib/esm/services/index.js.map +1 -1
- package/lib/esm/tasks/index.d.ts +5 -0
- package/lib/esm/tasks/index.js +5 -0
- package/lib/esm/tasks/index.js.map +1 -1
- package/lib/esm/utils/index.d.ts +5 -0
- package/lib/esm/utils/index.js +5 -0
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/identity/index.cjs +5 -0
- package/lib/identity/index.d.ts +5 -0
- package/lib/identity/index.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/interfaces/index.cjs +5 -0
- package/lib/interfaces/index.d.ts +5 -0
- package/lib/interfaces/index.js.map +1 -1
- package/lib/migrations/index.cjs +5 -0
- package/lib/migrations/index.d.ts +5 -0
- package/lib/migrations/index.js.map +1 -1
- package/lib/model/decorators.d.ts +3 -0
- package/lib/model/decorators.js.map +1 -1
- package/lib/model/index.cjs +5 -0
- package/lib/model/index.d.ts +5 -0
- package/lib/model/index.js.map +1 -1
- package/lib/overrides/index.cjs +5 -0
- package/lib/overrides/index.d.ts +5 -0
- package/lib/overrides/index.js.map +1 -1
- package/lib/persistence/index.cjs +5 -0
- package/lib/persistence/index.d.ts +5 -0
- package/lib/persistence/index.js.map +1 -1
- package/lib/query/Statement.cjs +62 -4
- package/lib/query/Statement.d.ts +9 -4
- package/lib/query/Statement.js.map +1 -1
- package/lib/query/index.cjs +5 -0
- package/lib/query/index.d.ts +5 -0
- package/lib/query/index.js.map +1 -1
- package/lib/query/options.d.ts +72 -8
- package/lib/ram/RamAdapter.cjs +88 -22
- package/lib/ram/RamAdapter.d.ts +3 -0
- package/lib/ram/RamAdapter.js.map +1 -1
- package/lib/ram/RamStatement.cjs +8 -2
- package/lib/ram/RamStatement.js.map +1 -1
- package/lib/ram/index.cjs +5 -0
- package/lib/ram/index.js.map +1 -1
- package/lib/ram/types.d.ts +1 -0
- package/lib/repository/Repository.cjs +1 -1
- package/lib/repository/Repository.d.ts +3 -3
- package/lib/repository/Repository.js.map +1 -1
- package/lib/repository/index.cjs +5 -0
- package/lib/repository/index.d.ts +5 -0
- package/lib/repository/index.js.map +1 -1
- package/lib/services/index.cjs +5 -0
- package/lib/services/index.d.ts +5 -0
- package/lib/services/index.js.map +1 -1
- package/lib/tasks/index.cjs +5 -0
- package/lib/tasks/index.d.ts +5 -0
- package/lib/tasks/index.js.map +1 -1
- package/lib/utils/index.cjs +5 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.js.map +1 -1
- package/package.json +1 -1
package/lib/query/Statement.cjs
CHANGED
|
@@ -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
|
-
|
|
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([
|
package/lib/query/Statement.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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:
|
|
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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"}
|
package/lib/query/index.cjs
CHANGED
|
@@ -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);
|
package/lib/query/index.d.ts
CHANGED
|
@@ -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";
|
package/lib/query/index.js.map
CHANGED
|
@@ -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"}
|
package/lib/query/options.d.ts
CHANGED
|
@@ -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,
|
|
20
|
-
thenBy(selector:
|
|
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
|
|
23
|
-
groupBy(selector:
|
|
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
|
|
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
|
|
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
|
|
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 {};
|
package/lib/ram/RamAdapter.cjs
CHANGED
|
@@ -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
|
-
|
|
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
|
|
469
|
-
const
|
|
470
|
-
|
|
471
|
-
|
|
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
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
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
|
-
|
|
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
|
|
510
|
+
return output;
|
|
494
511
|
return {
|
|
495
|
-
data:
|
|
496
|
-
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.
|
package/lib/ram/RamAdapter.d.ts
CHANGED
|
@@ -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.
|