@decaf-ts/core 0.8.21 → 0.8.22
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/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/query/Statement.d.ts +12 -6
- package/lib/esm/query/Statement.js +65 -13
- package/lib/esm/query/Statement.js.map +1 -1
- package/lib/esm/query/constants.d.ts +2 -1
- package/lib/esm/query/constants.js +1 -0
- package/lib/esm/query/constants.js.map +1 -1
- package/lib/esm/query/decorators.d.ts +2 -1
- package/lib/esm/query/decorators.js +30 -1
- package/lib/esm/query/decorators.js.map +1 -1
- package/lib/esm/query/options.d.ts +14 -5
- package/lib/esm/query/selectors.d.ts +2 -1
- package/lib/esm/query/types.d.ts +25 -0
- package/lib/esm/query/types.js.map +1 -1
- package/lib/esm/ram/RamAdapter.js +13 -1
- package/lib/esm/ram/RamAdapter.js.map +1 -1
- package/lib/esm/ram/RamStatement.d.ts +1 -0
- package/lib/esm/ram/RamStatement.js +41 -38
- package/lib/esm/ram/RamStatement.js.map +1 -1
- package/lib/esm/ram/types.d.ts +1 -0
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/query/Statement.cjs +65 -13
- package/lib/query/Statement.d.ts +12 -6
- package/lib/query/Statement.js.map +1 -1
- package/lib/query/constants.cjs +1 -0
- package/lib/query/constants.d.ts +2 -1
- package/lib/query/constants.js.map +1 -1
- package/lib/query/decorators.cjs +30 -0
- package/lib/query/decorators.d.ts +2 -1
- package/lib/query/decorators.js.map +1 -1
- package/lib/query/options.d.ts +14 -5
- package/lib/query/selectors.d.ts +2 -1
- package/lib/query/types.d.ts +25 -0
- package/lib/query/types.js.map +1 -1
- package/lib/ram/RamAdapter.cjs +13 -1
- package/lib/ram/RamAdapter.js.map +1 -1
- package/lib/ram/RamStatement.cjs +41 -38
- package/lib/ram/RamStatement.d.ts +1 -0
- package/lib/ram/RamStatement.js.map +1 -1
- package/lib/ram/types.d.ts +1 -0
- package/package.json +1 -1
package/lib/ram/RamStatement.cjs
CHANGED
|
@@ -44,47 +44,49 @@ class RamStatement extends Statement_1.Statement {
|
|
|
44
44
|
* @return {function(Model, Model): number} A comparator function for sorting model instances
|
|
45
45
|
*/
|
|
46
46
|
getSort() {
|
|
47
|
+
const selectors = this.orderBySelectors;
|
|
47
48
|
return (el1, el2) => {
|
|
48
|
-
if (!
|
|
49
|
-
throw new db_decorators_1.InternalError("
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (value1 === value2)
|
|
57
|
-
return 0;
|
|
58
|
-
if (value1 == null || value2 == null)
|
|
59
|
-
return directionFactor * (value1 == null ? 1 : -1);
|
|
60
|
-
const { designType: type } = decoration_1.Metadata.getPropDesignTypes(el1.constructor, key);
|
|
61
|
-
const resolvedType = (type && type.name && type.name.toLowerCase()) || typeof value1;
|
|
62
|
-
switch (resolvedType) {
|
|
63
|
-
case "string":
|
|
64
|
-
return (directionFactor *
|
|
65
|
-
this.compareStrings(value1, value2));
|
|
66
|
-
case "number":
|
|
67
|
-
return (directionFactor *
|
|
68
|
-
this.compareNumbers(value1, value2));
|
|
69
|
-
case "bigint":
|
|
70
|
-
return (directionFactor *
|
|
71
|
-
this.compareBigInts(value1, value2));
|
|
72
|
-
case "boolean":
|
|
73
|
-
return (directionFactor *
|
|
74
|
-
this.compareBooleans(value1, value2));
|
|
75
|
-
case "date":
|
|
76
|
-
case "object":
|
|
77
|
-
if (value1 instanceof Date && value2 instanceof Date) {
|
|
78
|
-
return (directionFactor *
|
|
79
|
-
this.compareDates(value1, value2));
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
82
|
-
default:
|
|
83
|
-
break;
|
|
49
|
+
if (!selectors || !selectors.length)
|
|
50
|
+
throw new db_decorators_1.InternalError("orderBySelectors not set. Should be impossible");
|
|
51
|
+
for (const [key, direction] of selectors) {
|
|
52
|
+
const normalizedDirection = String(direction).toLowerCase();
|
|
53
|
+
const directionFactor = normalizedDirection === constants_1.OrderDirection.ASC ? 1 : -1;
|
|
54
|
+
const comparison = this.compareByKey(el1, el2, key);
|
|
55
|
+
if (comparison !== 0)
|
|
56
|
+
return directionFactor * comparison;
|
|
84
57
|
}
|
|
85
|
-
|
|
58
|
+
return 0;
|
|
86
59
|
};
|
|
87
60
|
}
|
|
61
|
+
compareByKey(el1, el2, key) {
|
|
62
|
+
const value1 = el1[key];
|
|
63
|
+
const value2 = el2[key];
|
|
64
|
+
if (value1 === value2)
|
|
65
|
+
return 0;
|
|
66
|
+
if (value1 == null || value2 == null)
|
|
67
|
+
return value1 == null ? 1 : -1;
|
|
68
|
+
const { designType: type } = decoration_1.Metadata.getPropDesignTypes(el1.constructor, key);
|
|
69
|
+
const resolvedType = (type && type.name && type.name.toLowerCase()) || typeof value1;
|
|
70
|
+
switch (resolvedType) {
|
|
71
|
+
case "string":
|
|
72
|
+
return this.compareStrings(value1, value2);
|
|
73
|
+
case "number":
|
|
74
|
+
return this.compareNumbers(value1, value2);
|
|
75
|
+
case "bigint":
|
|
76
|
+
return this.compareBigInts(value1, value2);
|
|
77
|
+
case "boolean":
|
|
78
|
+
return this.compareBooleans(value1, value2);
|
|
79
|
+
case "date":
|
|
80
|
+
case "object":
|
|
81
|
+
if (value1 instanceof Date && value2 instanceof Date) {
|
|
82
|
+
return this.compareDates(value1, value2);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
throw new query_1.QueryError(`sorting not supported for type ${resolvedType}`);
|
|
89
|
+
}
|
|
88
90
|
compareBooleans(a, b) {
|
|
89
91
|
return a === b ? 0 : a ? 1 : -1;
|
|
90
92
|
}
|
|
@@ -121,8 +123,9 @@ class RamStatement extends Statement_1.Statement {
|
|
|
121
123
|
},
|
|
122
124
|
limit: this.limitSelector,
|
|
123
125
|
skip: this.offsetSelector,
|
|
126
|
+
groupBy: this.groupBySelectors,
|
|
124
127
|
};
|
|
125
|
-
if (this.
|
|
128
|
+
if (this.orderBySelectors?.length)
|
|
126
129
|
result.sort = this.getSort();
|
|
127
130
|
return result;
|
|
128
131
|
}
|
|
@@ -40,6 +40,7 @@ export declare class RamStatement<M extends Model, R, A extends Adapter<M, any,
|
|
|
40
40
|
* @return {function(Model, Model): number} A comparator function for sorting model instances
|
|
41
41
|
*/
|
|
42
42
|
private getSort;
|
|
43
|
+
private compareByKey;
|
|
43
44
|
private compareBooleans;
|
|
44
45
|
private compareNumbers;
|
|
45
46
|
private compareBigInts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RamStatement.js","sourceRoot":"","sources":["../../src/ram/RamStatement.ts"],"names":[],"mappings":";;;AAAA,gDAA0E;AAG1E,2DAAwD;AACxD,wDAA+C;AAC/C,qDAAgD;AAGhD,6DAAyD;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAa,YAIX,SAAQ,qBAAoC;IAC5C,YAAY,OAAU,EAAE,SAAiC;QACvD,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACK,OAAO;QACb,OAAO,CAAC,GAAU,EAAE,GAAU,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"RamStatement.js","sourceRoot":"","sources":["../../src/ram/RamStatement.ts"],"names":[],"mappings":"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"}
|
package/lib/ram/types.d.ts
CHANGED