UNPKG

aquameta-datum

Version:

Service layer for the Aquameta database API

82 lines (58 loc) 9.54 kB
"use strict"; 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