@decaf-ts/core 0.5.28 → 0.5.29
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/dist/core.cjs +386 -2
- package/dist/core.esm.cjs +384 -3
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/query/MethodQueryBuilder.d.ts +155 -0
- package/lib/esm/query/MethodQueryBuilder.js +272 -0
- package/lib/esm/query/decorators.d.ts +2 -0
- package/lib/esm/query/decorators.js +45 -0
- package/lib/esm/query/index.d.ts +4 -0
- package/lib/esm/query/index.js +5 -1
- package/lib/esm/query/types.d.ts +96 -0
- package/lib/esm/query/types.js +23 -0
- package/lib/esm/query/utils.d.ts +40 -0
- package/lib/esm/query/utils.js +51 -0
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/query/MethodQueryBuilder.cjs +276 -0
- package/lib/query/MethodQueryBuilder.d.ts +155 -0
- package/lib/query/decorators.cjs +48 -0
- package/lib/query/decorators.d.ts +2 -0
- package/lib/query/index.cjs +5 -1
- package/lib/query/index.d.ts +4 -0
- package/lib/query/types.cjs +26 -0
- package/lib/query/types.d.ts +96 -0
- package/lib/query/utils.cjs +54 -0
- package/lib/query/utils.d.ts +40 -0
- package/package.json +1 -1
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.query = query;
|
4
|
+
const MethodQueryBuilder_1 = require("./MethodQueryBuilder.cjs");
|
5
|
+
const errors_1 = require("./errors.cjs");
|
6
|
+
function query(options = {}) {
|
7
|
+
return (target, propertyKey, descriptor) => {
|
8
|
+
// const originalMethod = descriptor.value;
|
9
|
+
const methodName = propertyKey.toString();
|
10
|
+
descriptor.value = function (...args) {
|
11
|
+
const { select, where, groupBy, orderBy, limit, offset } = MethodQueryBuilder_1.MethodQueryBuilder.build(methodName, ...args);
|
12
|
+
let stmt = this.select(select);
|
13
|
+
if (where)
|
14
|
+
stmt = stmt.where(where);
|
15
|
+
// if (orderBy) stmt = stmt.orderBy(orderBy[0]);
|
16
|
+
if (groupBy) {
|
17
|
+
// group by not implemented yet
|
18
|
+
/* stmt = stmt.groupBy(groupBy); */
|
19
|
+
}
|
20
|
+
// allow limit and offset by default
|
21
|
+
const { allowLimit, allowOffset, allowOrderBy, throws } = {
|
22
|
+
allowLimit: true,
|
23
|
+
allowOrderBy: true,
|
24
|
+
allowOffset: true,
|
25
|
+
throws: true,
|
26
|
+
...options,
|
27
|
+
};
|
28
|
+
const params = [
|
29
|
+
// keep the order to ensure the expected behavior
|
30
|
+
{ key: "orderBy", value: (orderBy || [])[0], allowed: allowOrderBy }, // orderBy only supports one sentence
|
31
|
+
{ key: "limit", value: limit, allowed: allowLimit },
|
32
|
+
{ key: "offset", value: offset, allowed: allowOffset },
|
33
|
+
];
|
34
|
+
for (const param of params) {
|
35
|
+
if (param.value !== undefined) {
|
36
|
+
if (!param.allowed && throws) {
|
37
|
+
throw new errors_1.QueryError(`${param.key[0].toUpperCase() + param.key.slice(1)} is not allowed for this query`);
|
38
|
+
}
|
39
|
+
else if (param.allowed) {
|
40
|
+
stmt = stmt[param.key](param.value);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
return stmt.execute();
|
45
|
+
};
|
46
|
+
};
|
47
|
+
}
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyeS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsc0JBbURDO0FBdERELGlFQUEwRDtBQUMxRCx5Q0FBc0M7QUFFdEMsU0FBZ0IsS0FBSyxDQUFDLFVBQXdCLEVBQUU7SUFDOUMsT0FBTyxDQUNMLE1BQWMsRUFDZCxXQUE0QixFQUM1QixVQUF3QyxFQUNILEVBQUU7UUFDdkMsMkNBQTJDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1lBQ3pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUN0RCx1Q0FBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFaEQsSUFBSSxJQUFJLEdBQUksSUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQVEsQ0FBQztZQUMvQyxJQUFJLEtBQUs7Z0JBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsZ0RBQWdEO1lBQ2hELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osK0JBQStCO2dCQUMvQixtQ0FBbUM7WUFDckMsQ0FBQztZQUVELG9DQUFvQztZQUNwQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUc7Z0JBQ3hELFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLEdBQUcsT0FBTzthQUNLLENBQUM7WUFFbEIsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsaURBQWlEO2dCQUNqRCxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxxQ0FBcUM7Z0JBQzNHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7Z0JBQ25ELEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7YUFDdkQsQ0FBQztZQUVGLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQzNCLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7d0JBQzdCLE1BQU0sSUFBSSxtQkFBVSxDQUNsQixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUNuRixDQUFDO29CQUNKLENBQUM7eUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3pCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgTWV0aG9kUXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4vTWV0aG9kUXVlcnlCdWlsZGVyXCI7XG5pbXBvcnQgeyBRdWVyeUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeShvcHRpb25zOiBRdWVyeU9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gKFxuICAgIHRhcmdldDogb2JqZWN0LFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55PlxuICApOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+IHwgdm9pZCA9PiB7XG4gICAgLy8gY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleS50b1N0cmluZygpO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgIGNvbnN0IHsgc2VsZWN0LCB3aGVyZSwgZ3JvdXBCeSwgb3JkZXJCeSwgbGltaXQsIG9mZnNldCB9ID1cbiAgICAgICAgTWV0aG9kUXVlcnlCdWlsZGVyLmJ1aWxkKG1ldGhvZE5hbWUsIC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc3RtdCA9ICh0aGlzIGFzIGFueSkuc2VsZWN0KHNlbGVjdCkgYXMgYW55O1xuICAgICAgaWYgKHdoZXJlKSBzdG10ID0gc3RtdC53aGVyZSh3aGVyZSk7XG4gICAgICAvLyBpZiAob3JkZXJCeSkgc3RtdCA9IHN0bXQub3JkZXJCeShvcmRlckJ5WzBdKTtcbiAgICAgIGlmIChncm91cEJ5KSB7XG4gICAgICAgIC8vIGdyb3VwIGJ5IG5vdCBpbXBsZW1lbnRlZCB5ZXRcbiAgICAgICAgLyogc3RtdCA9IHN0bXQuZ3JvdXBCeShncm91cEJ5KTsgKi9cbiAgICAgIH1cblxuICAgICAgLy8gYWxsb3cgbGltaXQgYW5kIG9mZnNldCBieSBkZWZhdWx0XG4gICAgICBjb25zdCB7IGFsbG93TGltaXQsIGFsbG93T2Zmc2V0LCBhbGxvd09yZGVyQnksIHRocm93cyB9ID0ge1xuICAgICAgICBhbGxvd0xpbWl0OiB0cnVlLFxuICAgICAgICBhbGxvd09yZGVyQnk6IHRydWUsXG4gICAgICAgIGFsbG93T2Zmc2V0OiB0cnVlLFxuICAgICAgICB0aHJvd3M6IHRydWUsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9IGFzIFF1ZXJ5T3B0aW9ucztcblxuICAgICAgY29uc3QgcGFyYW1zID0gW1xuICAgICAgICAvLyBrZWVwIHRoZSBvcmRlciB0byBlbnN1cmUgdGhlIGV4cGVjdGVkIGJlaGF2aW9yXG4gICAgICAgIHsga2V5OiBcIm9yZGVyQnlcIiwgdmFsdWU6IChvcmRlckJ5IHx8IFtdKVswXSwgYWxsb3dlZDogYWxsb3dPcmRlckJ5IH0sIC8vIG9yZGVyQnkgb25seSBzdXBwb3J0cyBvbmUgc2VudGVuY2VcbiAgICAgICAgeyBrZXk6IFwibGltaXRcIiwgdmFsdWU6IGxpbWl0LCBhbGxvd2VkOiBhbGxvd0xpbWl0IH0sXG4gICAgICAgIHsga2V5OiBcIm9mZnNldFwiLCB2YWx1ZTogb2Zmc2V0LCBhbGxvd2VkOiBhbGxvd09mZnNldCB9LFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoIXBhcmFtLmFsbG93ZWQgJiYgdGhyb3dzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgYCR7cGFyYW0ua2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBwYXJhbS5rZXkuc2xpY2UoMSl9IGlzIG5vdCBhbGxvd2VkIGZvciB0aGlzIHF1ZXJ5YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmFsbG93ZWQpIHtcbiAgICAgICAgICAgIHN0bXQgPSBzdG10W3BhcmFtLmtleV0ocGFyYW0udmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RtdC5leGVjdXRlKCk7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
|
package/lib/query/index.cjs
CHANGED
@@ -21,4 +21,8 @@ __exportStar(require("./options.cjs"), exports);
|
|
21
21
|
__exportStar(require("./Paginator.cjs"), exports);
|
22
22
|
__exportStar(require("./selectors.cjs"), exports);
|
23
23
|
__exportStar(require("./Statement.cjs"), exports);
|
24
|
-
|
24
|
+
__exportStar(require("./decorators.cjs"), exports);
|
25
|
+
__exportStar(require("./MethodQueryBuilder.cjs"), exports);
|
26
|
+
__exportStar(require("./types.cjs"), exports);
|
27
|
+
__exportStar(require("./utils.cjs"), exports);
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUE0QjtBQUM1QixrREFBNEI7QUFDNUIsK0NBQXlCO0FBQ3pCLGdEQUEwQjtBQUMxQixrREFBNEI7QUFDNUIsa0RBQTRCO0FBQzVCLGtEQUE0QjtBQUM1QixtREFBNkI7QUFDN0IsMkRBQXFDO0FBQ3JDLDhDQUF3QjtBQUN4Qiw4Q0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9Db25kaXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcHRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9QYWdpbmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vU3RhdGVtZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NZXRob2RRdWVyeUJ1aWxkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuIl19
|
package/lib/query/index.d.ts
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.QueryClause = void 0;
|
4
|
+
/**
|
5
|
+
* @description
|
6
|
+
* Enumeration of supported query clauses for building method-based queries.
|
7
|
+
*
|
8
|
+
* @summary
|
9
|
+
* The `QueryClause` enum defines string literals that represent
|
10
|
+
* different segments of a query (e.g., `findBy`, `Select`, `And`, `Or`).
|
11
|
+
*
|
12
|
+
* @enum QueryClause
|
13
|
+
* @memberOf module:query
|
14
|
+
*/
|
15
|
+
var QueryClause;
|
16
|
+
(function (QueryClause) {
|
17
|
+
QueryClause["FIND_BY"] = "findBy";
|
18
|
+
QueryClause["SELECT"] = "Select";
|
19
|
+
QueryClause["AND"] = "And";
|
20
|
+
QueryClause["OR"] = "Or";
|
21
|
+
QueryClause["GROUP_BY"] = "GroupBy";
|
22
|
+
QueryClause["ORDER_BY"] = "OrderBy";
|
23
|
+
QueryClause["THEN"] = "Then";
|
24
|
+
QueryClause["THEN_BY"] = "ThenBy";
|
25
|
+
})(QueryClause || (exports.QueryClause = QueryClause = {}));
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcnkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNkNBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxJQUFZLFdBU1g7QUFURCxXQUFZLFdBQVc7SUFDckIsaUNBQWtCLENBQUE7SUFDbEIsZ0NBQWlCLENBQUE7SUFDakIsMEJBQVcsQ0FBQTtJQUNYLHdCQUFTLENBQUE7SUFDVCxtQ0FBb0IsQ0FBQTtJQUNwQixtQ0FBb0IsQ0FBQTtJQUNwQiw0QkFBYSxDQUFBO0lBQ2IsaUNBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQVRXLFdBQVcsMkJBQVgsV0FBVyxRQVN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuL0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgT3JkZXJCeVNlbGVjdG9yIH0gZnJvbSBcIi4vc2VsZWN0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBxdWVyeSBidWlsZGluZyBiZWhhdmlvci5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBRdWVyeU9wdGlvbnNgIHR5cGUgZGVmaW5lcyBmbGFncyB0aGF0IGRldGVybWluZSB3aGV0aGVyIGNlcnRhaW4gY2xhdXNlc1xuICogKGxpbWl0LCBvZmZzZXQsIG9yZGVyIGJ5KSBhcmUgcGVybWl0dGVkLCBhcyB3ZWxsIGFzIHdoZXRoZXIgdmlvbGF0aW9uc1xuICogc2hvdWxkIHRocm93IGFuIGVycm9yIGR1cmluZyBxdWVyeSBjb25zdHJ1Y3Rpb24uXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpxdWVyeVxuICovXG5leHBvcnQgdHlwZSBRdWVyeU9wdGlvbnMgPSB7XG4gIGFsbG93TGltaXQ/OiBib29sZWFuO1xuICBhbGxvd09mZnNldD86IGJvb2xlYW47XG4gIGFsbG93T3JkZXJCeT86IGJvb2xlYW47XG4gIHRocm93cz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogU3RydWN0dXJlZCBxdWVyeSBvYmplY3QgcmVwcmVzZW50aW5nIHBhcnNlZCBxdWVyeSBjbGF1c2VzLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYFF1ZXJ5QXNzaXN0YCBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgc3RhbmRhcmQgc3RydWN0dXJlIHJldHVybmVkXG4gKiBieSBxdWVyeSBidWlsZGVycy4gSXQgaW5jbHVkZXMgYWN0aW9ucyBzdWNoIGFzIGZpbmQsIG9wdGlvbmFsIGNsYXVzZXNcbiAqIGxpa2Ugc2VsZWN0LCBncm91cEJ5LCBhbmQgb3JkZXJCeSwgYW5kIHBhZ2luYXRpb24gY29udHJvbHMgKGxpbWl0LCBvZmZzZXQpLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSBlbnRpdHkgb3IgcmVjb3JkIHR5cGUgdGhhdCBjb25kaXRpb25zIG1heSBhcHBseSB0by5cbiAqXG4gKiBAaW50ZXJmYWNlIFF1ZXJ5QXNzaXN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlBc3Npc3Qge1xuICBhY3Rpb246IFwiZmluZFwiO1xuICBzZWxlY3Q6IHVuZGVmaW5lZCB8IHN0cmluZ1tdO1xuICB3aGVyZTogQ29uZGl0aW9uPGFueT47XG4gIGdyb3VwQnk/OiBzdHJpbmdbXTtcbiAgb3JkZXJCeT86IE9yZGVyQnlTZWxlY3Rvcjxhbnk+W107XG4gIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIG9mZnNldDogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogRW51bWVyYXRpb24gb2Ygc3VwcG9ydGVkIHF1ZXJ5IGNsYXVzZXMgZm9yIGJ1aWxkaW5nIG1ldGhvZC1iYXNlZCBxdWVyaWVzLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYFF1ZXJ5Q2xhdXNlYCBlbnVtIGRlZmluZXMgc3RyaW5nIGxpdGVyYWxzIHRoYXQgcmVwcmVzZW50XG4gKiBkaWZmZXJlbnQgc2VnbWVudHMgb2YgYSBxdWVyeSAoZS5nLiwgYGZpbmRCeWAsIGBTZWxlY3RgLCBgQW5kYCwgYE9yYCkuXG4gKlxuICogQGVudW0gUXVlcnlDbGF1c2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cXVlcnlcbiAqL1xuZXhwb3J0IGVudW0gUXVlcnlDbGF1c2Uge1xuICBGSU5EX0JZID0gXCJmaW5kQnlcIixcbiAgU0VMRUNUID0gXCJTZWxlY3RcIixcbiAgQU5EID0gXCJBbmRcIixcbiAgT1IgPSBcIk9yXCIsXG4gIEdST1VQX0JZID0gXCJHcm91cEJ5XCIsXG4gIE9SREVSX0JZID0gXCJPcmRlckJ5XCIsXG4gIFRIRU4gPSBcIlRoZW5cIixcbiAgVEhFTl9CWSA9IFwiVGhlbkJ5XCIsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBGdW5jdGlvbiBzaWduYXR1cmUgZm9yIHBhcnNpbmcgb3BlcmF0b3JzIGluIHF1ZXJ5IGJ1aWxkaW5nLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE9wZXJhdG9yUGFyc2VyYCB0eXBlIHJlcHJlc2VudHMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgZmllbGQgbmFtZVxuICogYW5kIGFyZ3VtZW50cywgdGhlbiBwcm9kdWNlcyBhIGBDb25kaXRpb25gIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGluIGEgcXVlcnkuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIGNvbmRpdGlvbiByZXN1bHQuXG4gKlxuICogQHBhcmFtIGZpZWxkIHtzdHJpbmd9IC0gVGhlIG5hbWUgb2YgdGhlIGZpZWxkIGJlaW5nIHBhcnNlZC5cbiAqIEBwYXJhbSBhcmdzIHthbnlbXX0gLSBBZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3Igb3BlcmF0b3IgZXZhbHVhdGlvbi5cbiAqXG4gKiBAcmV0dXJuIHtDb25kaXRpb248YW55Pn0gQSBjb25kaXRpb24gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIG9wZXJhdG9yLlxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cXVlcnlcbiAqL1xuZXhwb3J0IHR5cGUgT3BlcmF0b3JQYXJzZXIgPSAoZmllbGQ6IHN0cmluZywgLi4uYXJnczogYW55KSA9PiBDb25kaXRpb248YW55PjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIERlc2NyaXB0b3IgZm9yIGZpZWxkcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBvcGVyYXRvcnMgaW4gcXVlcnkgcGFyc2luZy5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBGaWx0ZXJEZXNjcmlwdG9yYCBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgc3RydWN0dXJlIHVzZWQgd2hlbiBwYXJzaW5nXG4gKiBtZXRob2Qgc2VnbWVudHMgaW50byBmaWx0ZXJhYmxlIGZpZWxkcyBhbmQgYXNzb2NpYXRlZCBvcGVyYXRvcnMuXG4gKlxuICogQGludGVyZmFjZSBGaWx0ZXJEZXNjcmlwdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRGVzY3JpcHRvciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogc3RyaW5nO1xufVxuIl19
|
@@ -0,0 +1,96 @@
|
|
1
|
+
import { Condition } from "./Condition";
|
2
|
+
import { OrderBySelector } from "./selectors";
|
3
|
+
/**
|
4
|
+
* @description
|
5
|
+
* Options for configuring query building behavior.
|
6
|
+
*
|
7
|
+
* @summary
|
8
|
+
* The `QueryOptions` type defines flags that determine whether certain clauses
|
9
|
+
* (limit, offset, order by) are permitted, as well as whether violations
|
10
|
+
* should throw an error during query construction.
|
11
|
+
*
|
12
|
+
* @memberOf module:query
|
13
|
+
*/
|
14
|
+
export type QueryOptions = {
|
15
|
+
allowLimit?: boolean;
|
16
|
+
allowOffset?: boolean;
|
17
|
+
allowOrderBy?: boolean;
|
18
|
+
throws?: boolean;
|
19
|
+
};
|
20
|
+
/**
|
21
|
+
* @description
|
22
|
+
* Structured query object representing parsed query clauses.
|
23
|
+
*
|
24
|
+
* @summary
|
25
|
+
* The `QueryAssist` interface defines the standard structure returned
|
26
|
+
* by query builders. It includes actions such as find, optional clauses
|
27
|
+
* like select, groupBy, and orderBy, and pagination controls (limit, offset).
|
28
|
+
*
|
29
|
+
* @template T The entity or record type that conditions may apply to.
|
30
|
+
*
|
31
|
+
* @interface QueryAssist
|
32
|
+
* @memberOf module:query
|
33
|
+
*/
|
34
|
+
export interface QueryAssist {
|
35
|
+
action: "find";
|
36
|
+
select: undefined | string[];
|
37
|
+
where: Condition<any>;
|
38
|
+
groupBy?: string[];
|
39
|
+
orderBy?: OrderBySelector<any>[];
|
40
|
+
limit: number | undefined;
|
41
|
+
offset: number | undefined;
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* @description
|
45
|
+
* Enumeration of supported query clauses for building method-based queries.
|
46
|
+
*
|
47
|
+
* @summary
|
48
|
+
* The `QueryClause` enum defines string literals that represent
|
49
|
+
* different segments of a query (e.g., `findBy`, `Select`, `And`, `Or`).
|
50
|
+
*
|
51
|
+
* @enum QueryClause
|
52
|
+
* @memberOf module:query
|
53
|
+
*/
|
54
|
+
export declare enum QueryClause {
|
55
|
+
FIND_BY = "findBy",
|
56
|
+
SELECT = "Select",
|
57
|
+
AND = "And",
|
58
|
+
OR = "Or",
|
59
|
+
GROUP_BY = "GroupBy",
|
60
|
+
ORDER_BY = "OrderBy",
|
61
|
+
THEN = "Then",
|
62
|
+
THEN_BY = "ThenBy"
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* @description
|
66
|
+
* Function signature for parsing operators in query building.
|
67
|
+
*
|
68
|
+
* @summary
|
69
|
+
* The `OperatorParser` type represents a function that takes a field name
|
70
|
+
* and arguments, then produces a `Condition` object that can be used in a query.
|
71
|
+
*
|
72
|
+
* @template T The type of the condition result.
|
73
|
+
*
|
74
|
+
* @param field {string} - The name of the field being parsed.
|
75
|
+
* @param args {any[]} - Additional arguments for operator evaluation.
|
76
|
+
*
|
77
|
+
* @return {Condition<any>} A condition object representing the parsed operator.
|
78
|
+
*
|
79
|
+
* @memberOf module:query
|
80
|
+
*/
|
81
|
+
export type OperatorParser = (field: string, ...args: any) => Condition<any>;
|
82
|
+
/**
|
83
|
+
* @description
|
84
|
+
* Descriptor for fields and their associated operators in query parsing.
|
85
|
+
*
|
86
|
+
* @summary
|
87
|
+
* The `FilterDescriptor` interface defines the structure used when parsing
|
88
|
+
* method segments into filterable fields and associated operators.
|
89
|
+
*
|
90
|
+
* @interface FilterDescriptor
|
91
|
+
* @memberOf module:query
|
92
|
+
*/
|
93
|
+
export interface FilterDescriptor {
|
94
|
+
field: string;
|
95
|
+
operator?: string;
|
96
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.OperatorsMap = void 0;
|
4
|
+
const Condition_1 = require("./Condition.cjs");
|
5
|
+
/**
|
6
|
+
* @description
|
7
|
+
* Map of supported operators to their corresponding parser functions.
|
8
|
+
*
|
9
|
+
* @summary
|
10
|
+
* The `OperatorsMap` defines a collection of operator names as keys
|
11
|
+
* (such as `Equals`, `LessThan`, `Between`, etc.), each mapped to a
|
12
|
+
* function that constructs a `Condition` object for that operator.
|
13
|
+
* These functions translate query clauses into concrete condition
|
14
|
+
* builders, enabling dynamic query construction from method names.
|
15
|
+
*
|
16
|
+
* @template T The type of the field values used in conditions.
|
17
|
+
*
|
18
|
+
* @param f {string} - The field name the condition applies to.
|
19
|
+
* @param v1 {any} - The value to compare the field against or the lower bound value for range-based operators.
|
20
|
+
* @param v2 {any} - The upper bound value for range-based operators.
|
21
|
+
*
|
22
|
+
* @return {Condition<any>} A condition object representing the operator applied to the field.
|
23
|
+
*
|
24
|
+
* @function OperatorsMap
|
25
|
+
*
|
26
|
+
* @mermaid
|
27
|
+
* sequenceDiagram
|
28
|
+
* participant Client as Caller
|
29
|
+
* participant Map as OperatorsMap
|
30
|
+
* participant Parser as OperatorParser
|
31
|
+
* participant Cond as Condition
|
32
|
+
*
|
33
|
+
* Client->>Map: Request operator parser ("Between", field, v1, v2)
|
34
|
+
* Map->>Parser: Call corresponding operator function
|
35
|
+
* Parser->>Cond: Condition.attribute(field)
|
36
|
+
* Cond-->>Parser: Condition instance
|
37
|
+
* Parser->>Cond: Apply gte(v1)
|
38
|
+
* Parser->>Cond: Apply and(lte(v2))
|
39
|
+
* Parser-->>Client: Return built Condition
|
40
|
+
*
|
41
|
+
* @memberOf module:query
|
42
|
+
*/
|
43
|
+
exports.OperatorsMap = {
|
44
|
+
Equals: (f, v) => Condition_1.Condition.attribute(f).eq(v),
|
45
|
+
Diff: (f, v) => Condition_1.Condition.attribute(f).dif(v),
|
46
|
+
LessThan: (f, v) => Condition_1.Condition.attribute(f).lt(v),
|
47
|
+
LessThanEqual: (f, v) => Condition_1.Condition.attribute(f).lte(v),
|
48
|
+
GreaterThan: (f, v) => Condition_1.Condition.attribute(f).gt(v),
|
49
|
+
GreaterThanEqual: (f, v) => Condition_1.Condition.attribute(f).gte(v),
|
50
|
+
Between: (f, v1, v2) => Condition_1.Condition.attribute(f).gte(v1).and(Condition_1.Condition.attribute(f).lte(v2)),
|
51
|
+
In: (f, v) => Condition_1.Condition.attribute(f).in(v),
|
52
|
+
Matches: (f, v) => Condition_1.Condition.attribute(f).regexp(v),
|
53
|
+
};
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcnkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQXdDO0FBR3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ1UsUUFBQSxZQUFZLEdBQW1DO0lBQzFELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUNyQixxQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Q0FDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuL0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgT3BlcmF0b3JQYXJzZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTWFwIG9mIHN1cHBvcnRlZCBvcGVyYXRvcnMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBwYXJzZXIgZnVuY3Rpb25zLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE9wZXJhdG9yc01hcGAgZGVmaW5lcyBhIGNvbGxlY3Rpb24gb2Ygb3BlcmF0b3IgbmFtZXMgYXMga2V5c1xuICogKHN1Y2ggYXMgYEVxdWFsc2AsIGBMZXNzVGhhbmAsIGBCZXR3ZWVuYCwgZXRjLiksIGVhY2ggbWFwcGVkIHRvIGFcbiAqIGZ1bmN0aW9uIHRoYXQgY29uc3RydWN0cyBhIGBDb25kaXRpb25gIG9iamVjdCBmb3IgdGhhdCBvcGVyYXRvci5cbiAqIFRoZXNlIGZ1bmN0aW9ucyB0cmFuc2xhdGUgcXVlcnkgY2xhdXNlcyBpbnRvIGNvbmNyZXRlIGNvbmRpdGlvblxuICogYnVpbGRlcnMsIGVuYWJsaW5nIGR5bmFtaWMgcXVlcnkgY29uc3RydWN0aW9uIGZyb20gbWV0aG9kIG5hbWVzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBmaWVsZCB2YWx1ZXMgdXNlZCBpbiBjb25kaXRpb25zLlxuICpcbiAqIEBwYXJhbSBmIHtzdHJpbmd9IC0gVGhlIGZpZWxkIG5hbWUgdGhlIGNvbmRpdGlvbiBhcHBsaWVzIHRvLlxuICogQHBhcmFtIHYxIHthbnl9IC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUgdGhlIGZpZWxkIGFnYWluc3Qgb3IgdGhlIGxvd2VyIGJvdW5kIHZhbHVlIGZvciByYW5nZS1iYXNlZCBvcGVyYXRvcnMuXG4gKiBAcGFyYW0gdjIge2FueX0gLSBUaGUgdXBwZXIgYm91bmQgdmFsdWUgZm9yIHJhbmdlLWJhc2VkIG9wZXJhdG9ycy5cbiAqXG4gKiBAcmV0dXJuIHtDb25kaXRpb248YW55Pn0gQSBjb25kaXRpb24gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgb3BlcmF0b3IgYXBwbGllZCB0byB0aGUgZmllbGQuXG4gKlxuICogQGZ1bmN0aW9uIE9wZXJhdG9yc01hcFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50IGFzIENhbGxlclxuICogICBwYXJ0aWNpcGFudCBNYXAgYXMgT3BlcmF0b3JzTWFwXG4gKiAgIHBhcnRpY2lwYW50IFBhcnNlciBhcyBPcGVyYXRvclBhcnNlclxuICogICBwYXJ0aWNpcGFudCBDb25kIGFzIENvbmRpdGlvblxuICpcbiAqICAgQ2xpZW50LT4+TWFwOiBSZXF1ZXN0IG9wZXJhdG9yIHBhcnNlciAoXCJCZXR3ZWVuXCIsIGZpZWxkLCB2MSwgdjIpXG4gKiAgIE1hcC0+PlBhcnNlcjogQ2FsbCBjb3JyZXNwb25kaW5nIG9wZXJhdG9yIGZ1bmN0aW9uXG4gKiAgIFBhcnNlci0+PkNvbmQ6IENvbmRpdGlvbi5hdHRyaWJ1dGUoZmllbGQpXG4gKiAgIENvbmQtLT4+UGFyc2VyOiBDb25kaXRpb24gaW5zdGFuY2VcbiAqICAgUGFyc2VyLT4+Q29uZDogQXBwbHkgZ3RlKHYxKVxuICogICBQYXJzZXItPj5Db25kOiBBcHBseSBhbmQobHRlKHYyKSlcbiAqICAgUGFyc2VyLS0+PkNsaWVudDogUmV0dXJuIGJ1aWx0IENvbmRpdGlvblxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cXVlcnlcbiAqL1xuZXhwb3J0IGNvbnN0IE9wZXJhdG9yc01hcDogUmVjb3JkPHN0cmluZywgT3BlcmF0b3JQYXJzZXI+ID0ge1xuICBFcXVhbHM6IChmLCB2KSA9PiBDb25kaXRpb24uYXR0cmlidXRlKGYpLmVxKHYpLFxuICBEaWZmOiAoZiwgdikgPT4gQ29uZGl0aW9uLmF0dHJpYnV0ZShmKS5kaWYodiksXG4gIExlc3NUaGFuOiAoZiwgdikgPT4gQ29uZGl0aW9uLmF0dHJpYnV0ZShmKS5sdCh2KSxcbiAgTGVzc1RoYW5FcXVhbDogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZikubHRlKHYpLFxuICBHcmVhdGVyVGhhbjogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZikuZ3QodiksXG4gIEdyZWF0ZXJUaGFuRXF1YWw6IChmLCB2KSA9PiBDb25kaXRpb24uYXR0cmlidXRlKGYpLmd0ZSh2KSxcbiAgQmV0d2VlbjogKGYsIHYxLCB2MikgPT5cbiAgICBDb25kaXRpb24uYXR0cmlidXRlKGYpLmd0ZSh2MSkuYW5kKENvbmRpdGlvbi5hdHRyaWJ1dGUoZikubHRlKHYyKSksXG4gIEluOiAoZiwgdikgPT4gQ29uZGl0aW9uLmF0dHJpYnV0ZShmKS5pbih2KSxcbiAgTWF0Y2hlczogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZikucmVnZXhwKHYpLFxufTtcbiJdfQ==
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { OperatorParser } from "./types";
|
2
|
+
/**
|
3
|
+
* @description
|
4
|
+
* Map of supported operators to their corresponding parser functions.
|
5
|
+
*
|
6
|
+
* @summary
|
7
|
+
* The `OperatorsMap` defines a collection of operator names as keys
|
8
|
+
* (such as `Equals`, `LessThan`, `Between`, etc.), each mapped to a
|
9
|
+
* function that constructs a `Condition` object for that operator.
|
10
|
+
* These functions translate query clauses into concrete condition
|
11
|
+
* builders, enabling dynamic query construction from method names.
|
12
|
+
*
|
13
|
+
* @template T The type of the field values used in conditions.
|
14
|
+
*
|
15
|
+
* @param f {string} - The field name the condition applies to.
|
16
|
+
* @param v1 {any} - The value to compare the field against or the lower bound value for range-based operators.
|
17
|
+
* @param v2 {any} - The upper bound value for range-based operators.
|
18
|
+
*
|
19
|
+
* @return {Condition<any>} A condition object representing the operator applied to the field.
|
20
|
+
*
|
21
|
+
* @function OperatorsMap
|
22
|
+
*
|
23
|
+
* @mermaid
|
24
|
+
* sequenceDiagram
|
25
|
+
* participant Client as Caller
|
26
|
+
* participant Map as OperatorsMap
|
27
|
+
* participant Parser as OperatorParser
|
28
|
+
* participant Cond as Condition
|
29
|
+
*
|
30
|
+
* Client->>Map: Request operator parser ("Between", field, v1, v2)
|
31
|
+
* Map->>Parser: Call corresponding operator function
|
32
|
+
* Parser->>Cond: Condition.attribute(field)
|
33
|
+
* Cond-->>Parser: Condition instance
|
34
|
+
* Parser->>Cond: Apply gte(v1)
|
35
|
+
* Parser->>Cond: Apply and(lte(v2))
|
36
|
+
* Parser-->>Client: Return built Condition
|
37
|
+
*
|
38
|
+
* @memberOf module:query
|
39
|
+
*/
|
40
|
+
export declare const OperatorsMap: Record<string, OperatorParser>;
|