@userlab/dx
Version:
Build efficient GraphQL backend
30 lines (29 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sortKeyResolve = void 0;
var jsutils_1 = require("../jsutils");
// TODO: Add [NULLS [FIRST | LAST]] option
var sortKeyResolve = function (_a) {
var fields = _a.fields, uniqueKey = _a.uniqueKey;
return function (args) {
var _a;
var order = args.order || 'DESC';
var key = ((_a = args.orderBy) === null || _a === void 0 ? void 0 : _a.map(function (field) {
if (!fields[field])
throw new Error('Invalid orderBy key');
if (fields[field]['sqlColumn'])
return fields[field]['sqlColumn'];
return field;
})) || [];
if (jsutils_1.isArray(uniqueKey)) {
uniqueKey.forEach(function (field) {
return !key.includes(field) ? key.push(field) : null;
});
}
if (jsutils_1.isString(uniqueKey) && !key.includes(uniqueKey)) {
key.push(uniqueKey);
}
return { order: order, key: key };
};
};
exports.sortKeyResolve = sortKeyResolve;