aquameta-datum
Version:
Service layer for the Aquameta database API
82 lines (58 loc) • 9.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addWhere = exports.addOrder = exports.addNestedArrayArg = exports.addArrayArg = exports.addArg = void 0;
var _ramda = require("ramda");
// (a) => bool
const isFalsy = val => !val; // (a) => bool
const isArray = arr => arr instanceof Array; // (a|[a]) => [a]
const asArray = (0, _ramda.cond)([[isFalsy, () => []], [isArray, i => i], [_ramda.T, val => [val]]]); // ([a], [b]) => [a, b]
function concat(val1, val2) {
return [].concat(val1, val2);
} // (fn, str, str, exec) => exec
const applyOrderArgs = (0, _ramda.curry)((fn, direction, column, chainable) => fn({
column,
direction
}, chainable)); // (fn, str, str, exec) => exec
const applyWhereArgs = (0, _ramda.curry)((fn, op, name, value, chainable) => fn({
name,
op,
value
}, chainable)); // (fn, str, any, exec) => exec
const setProp = (0, _ramda.curry)((functor, clause, val, chainable) => {
if (!(chainable && chainable.args)) {
throw new TypeError('chainable: invalid chainable');
}
const argValue = functor(chainable.args[clause], val);
if (typeof argValue === 'undefined' || argValue == null) {
throw new TypeError('chainable: invalid argument value');
}
return { ...chainable,
args: { ...chainable.args,
[clause]: argValue
}
};
}); // (a, b) => b
function valIdentity(previous, val) {
return val;
} // (a|[a], b|[b]) => [a, b]
function concatAsArrays(val1, val2) {
return concat(asArray(val1), asArray(val2));
} // (a|[a], b|[b]) => [[a, b]]
function concatAsNestedArrays(val1, val2) {
// TODO: This is super hacky. endpoint.rows_select expects a nested array [['val']]
// $FlowFixMe
return [concat(asArray(val1 ? val1[0] : []), asArray(val2))];
} // (str, any, chainable) => chainable
const addArg = setProp(valIdentity);
exports.addArg = addArg;
const addArrayArg = setProp(concatAsArrays);
exports.addArrayArg = addArrayArg;
const addNestedArrayArg = setProp(concatAsNestedArrays); // (str, str, chainable) => chainable
exports.addNestedArrayArg = addNestedArrayArg;
const addOrder = applyOrderArgs(addArrayArg('order')); // (str, str, any, chainable) => chainable
exports.addOrder = addOrder;
const addWhere = applyWhereArgs(addArrayArg('where'));
exports.addWhere = addWhere;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFyZ3MuanMiXSwibmFtZXMiOlsiaXNGYWxzeSIsInZhbCIsImlzQXJyYXkiLCJhcnIiLCJBcnJheSIsImFzQXJyYXkiLCJpIiwiVCIsImNvbmNhdCIsInZhbDEiLCJ2YWwyIiwiYXBwbHlPcmRlckFyZ3MiLCJmbiIsImRpcmVjdGlvbiIsImNvbHVtbiIsImNoYWluYWJsZSIsImFwcGx5V2hlcmVBcmdzIiwib3AiLCJuYW1lIiwidmFsdWUiLCJzZXRQcm9wIiwiZnVuY3RvciIsImNsYXVzZSIsImFyZ3MiLCJUeXBlRXJyb3IiLCJhcmdWYWx1ZSIsInZhbElkZW50aXR5IiwicHJldmlvdXMiLCJjb25jYXRBc0FycmF5cyIsImNvbmNhdEFzTmVzdGVkQXJyYXlzIiwiYWRkQXJnIiwiYWRkQXJyYXlBcmciLCJhZGROZXN0ZWRBcnJheUFyZyIsImFkZE9yZGVyIiwiYWRkV2hlcmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFHQTtBQUNBLE1BQU1BLE9BQTRCLEdBQUdDLEdBQUcsSUFBSSxDQUFDQSxHQUE3QyxDLENBRUE7OztBQUNBLE1BQU1DLE9BQTRCLEdBQUdDLEdBQUcsSUFBSUEsR0FBRyxZQUFZQyxLQUEzRCxDLENBRUE7OztBQUNBLE1BQU1DLE9BQStDLEdBQUcsaUJBQUssQ0FDM0QsQ0FBQ0wsT0FBRCxFQUFVLE1BQU0sRUFBaEIsQ0FEMkQsRUFFM0QsQ0FBQ0UsT0FBRCxFQUFXSSxDQUFELElBQTBCQSxDQUFwQyxDQUYyRCxFQUczRCxDQUFDQyxRQUFELEVBQUtOLEdBQUQsSUFBZ0IsQ0FBQ0EsR0FBRCxDQUFwQixDQUgyRCxDQUFMLENBQXhELEMsQ0FNQTs7QUFDQSxTQUFTTyxNQUFULENBQWdCQyxJQUFoQixFQUFvQ0MsSUFBcEMsRUFBc0U7QUFDcEUsU0FBTyxHQUFHRixNQUFILENBQVVDLElBQVYsRUFBZ0JDLElBQWhCLENBQVA7QUFDRCxDLENBRUQ7OztBQUNBLE1BQU1DLGNBQWMsR0FBRyxrQkFPckIsQ0FDRUMsRUFERixFQUVFQyxTQUZGLEVBR0VDLE1BSEYsRUFJRUMsU0FKRixLQUtpQkgsRUFBRSxDQUFDO0FBQUNFLEVBQUFBLE1BQUQ7QUFBU0QsRUFBQUE7QUFBVCxDQUFELEVBQXNCRSxTQUF0QixDQVpFLENBQXZCLEMsQ0FlQTs7QUFDQSxNQUFNQyxjQUFjLEdBQUcsa0JBUXJCLENBQ0VKLEVBREYsRUFFRUssRUFGRixFQUdFQyxJQUhGLEVBSUVDLEtBSkYsRUFLRUosU0FMRixLQU1pQkgsRUFBRSxDQUFDO0FBQUNNLEVBQUFBLElBQUQ7QUFBT0QsRUFBQUEsRUFBUDtBQUFXRSxFQUFBQTtBQUFYLENBQUQsRUFBb0JKLFNBQXBCLENBZEUsQ0FBdkIsQyxDQWlCQTs7QUFDQSxNQUFNSyxPQUFPLEdBQUcsa0JBQ2QsQ0FDRUMsT0FERixFQUVFQyxNQUZGLEVBR0VyQixHQUhGLEVBSUVjLFNBSkYsS0FLSztBQUNILE1BQUksRUFBRUEsU0FBUyxJQUFJQSxTQUFTLENBQUNRLElBQXpCLENBQUosRUFBb0M7QUFDbEMsVUFBTSxJQUFJQyxTQUFKLENBQWMsOEJBQWQsQ0FBTjtBQUNEOztBQUVELFFBQU1DLFFBQVEsR0FBR0osT0FBTyxDQUFDTixTQUFTLENBQUNRLElBQVYsQ0FBZUQsTUFBZixDQUFELEVBQXlCckIsR0FBekIsQ0FBeEI7O0FBRUEsTUFBSSxPQUFPd0IsUUFBUCxLQUFvQixXQUFwQixJQUFtQ0EsUUFBUSxJQUFJLElBQW5ELEVBQXlEO0FBQ3ZELFVBQU0sSUFBSUQsU0FBSixDQUFjLG1DQUFkLENBQU47QUFDRDs7QUFFRCxTQUFPLEVBQ0wsR0FBR1QsU0FERTtBQUVMUSxJQUFBQSxJQUFJLEVBQUUsRUFDSixHQUFHUixTQUFTLENBQUNRLElBRFQ7QUFFSixPQUFDRCxNQUFELEdBQVVHO0FBRk47QUFGRCxHQUFQO0FBT0QsQ0F4QmEsQ0FBaEIsQyxDQTJCQTs7QUFDQSxTQUFTQyxXQUFULENBQXFCQyxRQUFyQixFQUFvQzFCLEdBQXBDLEVBQW1EO0FBQ2pELFNBQU9BLEdBQVA7QUFDRCxDLENBRUQ7OztBQUNBLFNBQVMyQixjQUFULENBQXdCbkIsSUFBeEIsRUFBb0RDLElBQXBELEVBQStFO0FBQzdFLFNBQU9GLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDSSxJQUFELENBQVIsRUFBZ0JKLE9BQU8sQ0FBQ0ssSUFBRCxDQUF2QixDQUFiO0FBQ0QsQyxDQUVEOzs7QUFDQSxTQUFTbUIsb0JBQVQsQ0FDRXBCLElBREYsRUFFRUMsSUFGRixFQUdnQjtBQUNkO0FBQ0E7QUFDQSxTQUFPLENBQUNGLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDSSxJQUFJLEdBQUdBLElBQUksQ0FBQyxDQUFELENBQVAsR0FBYSxFQUFsQixDQUFSLEVBQStCSixPQUFPLENBQUNLLElBQUQsQ0FBdEMsQ0FBUCxDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxNQUFNb0IsTUFBTSxHQUFHVixPQUFPLENBQUNNLFdBQUQsQ0FBdEI7O0FBQ0EsTUFBTUssV0FBVyxHQUFHWCxPQUFPLENBQUNRLGNBQUQsQ0FBM0I7O0FBQ0EsTUFBTUksaUJBQWlCLEdBQUdaLE9BQU8sQ0FBQ1Msb0JBQUQsQ0FBakMsQyxDQUVQOzs7QUFDTyxNQUFNSSxRQUFRLEdBQUd0QixjQUFjLENBQUNvQixXQUFXLENBQUMsT0FBRCxDQUFaLENBQS9CLEMsQ0FFUDs7O0FBQ08sTUFBTUcsUUFBUSxHQUFHbEIsY0FBYyxDQUFDZSxXQUFXLENBQUMsT0FBRCxDQUFaLENBQS9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcblxuaW1wb3J0IHtjb25kLCBjdXJyeSwgVH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHR5cGUge0RpcmVjdGlvbiwgRXhlY3V0YWJsZSwgV2hlcmVPcHN9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gKGEpID0+IGJvb2xcbmNvbnN0IGlzRmFsc3k6ICg/bWl4ZWQpID0+IGJvb2xlYW4gPSB2YWwgPT4gIXZhbDtcblxuLy8gKGEpID0+IGJvb2xcbmNvbnN0IGlzQXJyYXk6ICg/bWl4ZWQpID0+IGJvb2xlYW4gPSBhcnIgPT4gYXJyIGluc3RhbmNlb2YgQXJyYXk7XG5cbi8vIChhfFthXSkgPT4gW2FdXG5jb25zdCBhc0FycmF5OiAobWl4ZWQgfCBBcnJheTxtaXhlZD4pID0+IEFycmF5PG1peGVkPiA9IGNvbmQoW1xuICBbaXNGYWxzeSwgKCkgPT4gW11dLFxuICBbaXNBcnJheSwgKGk6IGFueSk6IEFycmF5PG1peGVkPiA9PiBpXSxcbiAgW1QsICh2YWw6IG1peGVkKSA9PiBbdmFsXV0sXG5dKTtcblxuLy8gKFthXSwgW2JdKSA9PiBbYSwgYl1cbmZ1bmN0aW9uIGNvbmNhdCh2YWwxOiBBcnJheTxtaXhlZD4sIHZhbDI6IEFycmF5PG1peGVkPik6IEFycmF5PG1peGVkPiB7XG4gIHJldHVybiBbXS5jb25jYXQodmFsMSwgdmFsMik7XG59XG5cbi8vIChmbiwgc3RyLCBzdHIsIGV4ZWMpID0+IGV4ZWNcbmNvbnN0IGFwcGx5T3JkZXJBcmdzID0gY3Vycnk8XG4gIChhbnksIEV4ZWN1dGFibGUpID0+IEV4ZWN1dGFibGUsXG4gIERpcmVjdGlvbixcbiAgc3RyaW5nLFxuICBFeGVjdXRhYmxlLFxuICBFeGVjdXRhYmxlLFxuPihcbiAgKFxuICAgIGZuOiAoYW55LCBFeGVjdXRhYmxlKSA9PiBFeGVjdXRhYmxlLFxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uLFxuICAgIGNvbHVtbjogc3RyaW5nLFxuICAgIGNoYWluYWJsZTogRXhlY3V0YWJsZSxcbiAgKTogRXhlY3V0YWJsZSA9PiBmbih7Y29sdW1uLCBkaXJlY3Rpb259LCBjaGFpbmFibGUpLFxuKTtcblxuLy8gKGZuLCBzdHIsIHN0ciwgZXhlYykgPT4gZXhlY1xuY29uc3QgYXBwbHlXaGVyZUFyZ3MgPSBjdXJyeTxcbiAgKGFueSwgRXhlY3V0YWJsZSkgPT4gRXhlY3V0YWJsZSxcbiAgV2hlcmVPcHMsXG4gIHN0cmluZyxcbiAgYW55LFxuICBFeGVjdXRhYmxlLFxuICBFeGVjdXRhYmxlLFxuPihcbiAgKFxuICAgIGZuOiAoYW55LCBFeGVjdXRhYmxlKSA9PiBFeGVjdXRhYmxlLFxuICAgIG9wOiBXaGVyZU9wcyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBjaGFpbmFibGU6IEV4ZWN1dGFibGUsXG4gICk6IEV4ZWN1dGFibGUgPT4gZm4oe25hbWUsIG9wLCB2YWx1ZX0sIGNoYWluYWJsZSksXG4pO1xuXG4vLyAoZm4sIHN0ciwgYW55LCBleGVjKSA9PiBleGVjXG5jb25zdCBzZXRQcm9wID0gY3Vycnk8KG1peGVkLCBtaXhlZCkgPT4gbWl4ZWQsIHN0cmluZywgYW55LCBFeGVjdXRhYmxlLCBhbnk+KFxuICAoXG4gICAgZnVuY3RvcjogKG1peGVkLCBtaXhlZCkgPT4gbWl4ZWQsXG4gICAgY2xhdXNlOiBzdHJpbmcsXG4gICAgdmFsOiBhbnksXG4gICAgY2hhaW5hYmxlOiBFeGVjdXRhYmxlLFxuICApID0+IHtcbiAgICBpZiAoIShjaGFpbmFibGUgJiYgY2hhaW5hYmxlLmFyZ3MpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjaGFpbmFibGU6IGludmFsaWQgY2hhaW5hYmxlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYXJnVmFsdWUgPSBmdW5jdG9yKGNoYWluYWJsZS5hcmdzW2NsYXVzZV0sIHZhbCk7XG5cbiAgICBpZiAodHlwZW9mIGFyZ1ZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBhcmdWYWx1ZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjaGFpbmFibGU6IGludmFsaWQgYXJndW1lbnQgdmFsdWUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY2hhaW5hYmxlLFxuICAgICAgYXJnczoge1xuICAgICAgICAuLi5jaGFpbmFibGUuYXJncyxcbiAgICAgICAgW2NsYXVzZV06IGFyZ1ZhbHVlLFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuKTtcblxuLy8gKGEsIGIpID0+IGJcbmZ1bmN0aW9uIHZhbElkZW50aXR5KHByZXZpb3VzOiBhbnksIHZhbDogYW55KTogYW55IHtcbiAgcmV0dXJuIHZhbDtcbn1cblxuLy8gKGF8W2FdLCBifFtiXSkgPT4gW2EsIGJdXG5mdW5jdGlvbiBjb25jYXRBc0FycmF5cyh2YWwxOiBtaXhlZCB8IEFycmF5PG1peGVkPiwgdmFsMjogbWl4ZWQpOiBBcnJheTxtaXhlZD4ge1xuICByZXR1cm4gY29uY2F0KGFzQXJyYXkodmFsMSksIGFzQXJyYXkodmFsMikpO1xufVxuXG4vLyAoYXxbYV0sIGJ8W2JdKSA9PiBbW2EsIGJdXVxuZnVuY3Rpb24gY29uY2F0QXNOZXN0ZWRBcnJheXMoXG4gIHZhbDE6IG1peGVkIHwgQXJyYXk8bWl4ZWQ+LFxuICB2YWwyOiBtaXhlZCxcbik6IEFycmF5PG1peGVkPiB7XG4gIC8vIFRPRE86IFRoaXMgaXMgc3VwZXIgaGFja3kuIGVuZHBvaW50LnJvd3Nfc2VsZWN0IGV4cGVjdHMgYSBuZXN0ZWQgYXJyYXkgW1sndmFsJ11dXG4gIC8vICRGbG93Rml4TWVcbiAgcmV0dXJuIFtjb25jYXQoYXNBcnJheSh2YWwxID8gdmFsMVswXSA6IFtdKSwgYXNBcnJheSh2YWwyKSldO1xufVxuXG4vLyAoc3RyLCBhbnksIGNoYWluYWJsZSkgPT4gY2hhaW5hYmxlXG5leHBvcnQgY29uc3QgYWRkQXJnID0gc2V0UHJvcCh2YWxJZGVudGl0eSk7XG5leHBvcnQgY29uc3QgYWRkQXJyYXlBcmcgPSBzZXRQcm9wKGNvbmNhdEFzQXJyYXlzKTtcbmV4cG9ydCBjb25zdCBhZGROZXN0ZWRBcnJheUFyZyA9IHNldFByb3AoY29uY2F0QXNOZXN0ZWRBcnJheXMpO1xuXG4vLyAoc3RyLCBzdHIsIGNoYWluYWJsZSkgPT4gY2hhaW5hYmxlXG5leHBvcnQgY29uc3QgYWRkT3JkZXIgPSBhcHBseU9yZGVyQXJncyhhZGRBcnJheUFyZygnb3JkZXInKSk7XG5cbi8vIChzdHIsIHN0ciwgYW55LCBjaGFpbmFibGUpID0+IGNoYWluYWJsZVxuZXhwb3J0IGNvbnN0IGFkZFdoZXJlID0gYXBwbHlXaGVyZUFyZ3MoYWRkQXJyYXlBcmcoJ3doZXJlJykpO1xuIl19