@enonic/js-utils
Version:
Enonic XP JavaScript Utils
42 lines (40 loc) • 1.03 kB
JavaScript
// storage/query/sort.ts
var ASC = "ASC";
var DESC = "DESC";
var SORT_CREATED = `createdTime ${DESC}`;
var SORT_DISPLAYNAME = `displayName ${ASC}`;
var SORT_MANUAL = `_manualordervalue ${DESC}, _timestamp ${DESC}`;
var SORT_MODIFIED = `modifiedTime ${DESC}`;
function isDirection(s) {
return s === ASC || s === DESC;
}
// storage/query/dsl/sort.ts
function sort(...args) {
const sort2 = [];
let param = {};
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (isDirection(arg)) {
if (!param.field || param.direction) {
throw new Error(`sort: direction:${arg} is optional, but must come after field parameter!`);
}
param.direction = arg;
} else {
if (param.field) {
sort2.push(JSON.parse(JSON.stringify(param)));
param = {
field: arg
};
} else {
param.field = arg;
}
}
if (i === args.length - 1) {
sort2.push(param);
}
}
return sort2.length === 1 ? sort2[0] : sort2;
}
export {
sort
};