UNPKG

aquameta-datum

Version:

Service layer for the Aquameta database API

133 lines (113 loc) 12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relation = relation; exports.fn = fn; exports.includeColumn = exports.include = exports.excludeColumn = exports.exclude = exports.metaData = exports.evented = exports.offset = exports.limit = exports.orderByDesc = exports.orderByAsc = exports.orderBy = exports.order = exports.whereNotNull = exports.whereNull = exports.whereNotSimilarTo = exports.whereSimilarTo = exports.whereNotLike = exports.whereLike = exports.whereNotIn = exports.whereIn = exports.whereLte = exports.whereLt = exports.whereGte = exports.whereGt = exports.whereNotEquals = exports.whereNot = exports.whereEquals = exports.where = void 0; var _ramda = require("ramda"); var _args = require("./args.js"); function relation(name) { if (!name) { throw new Error('relation: relation name must be specified'); } let [schemaName, relationName] = name.split('.'); if (!relationName) { relationName = schemaName; schemaName = 'public'; } return { schemaName, relationName, qualified: `${schemaName}.${relationName}`, url: `relation/${schemaName}/${relationName}`, args: {} }; } // TODO function fn(name, args) { if (!name) { throw new Error('fn: function name must be specified'); } let [schemaName, fnName] = name.split('.'); if (!fnName) { fnName = schemaName; schemaName = 'public'; } const fnArgs = {}; if (Array.isArray(args)) { fnArgs.vals = args; } else if (typeof args === 'object') { fnArgs.kwargs = args; } else { throw new TypeError('fn: args must be Array<string> or Object'); } return { schemaName, fnName, qualified: `${schemaName}.${fnName}`, url: `function/${schemaName}/${fnName}`, args: { args: [fnArgs] } // This is an array in endpoint functions }; } /** * Operations to perform on chainable (returned from relation) */ const where = (0, _args.addWhere)('='); exports.where = where; const whereEquals = where; exports.whereEquals = whereEquals; const whereNot = (0, _args.addWhere)('<>'); exports.whereNot = whereNot; const whereNotEquals = whereNot; exports.whereNotEquals = whereNotEquals; const whereGt = (0, _args.addWhere)('>'); exports.whereGt = whereGt; const whereGte = (0, _args.addWhere)('>='); exports.whereGte = whereGte; const whereLt = (0, _args.addWhere)('<'); exports.whereLt = whereLt; const whereLte = (0, _args.addWhere)('<='); exports.whereLte = whereLte; const whereIn = (0, _args.addWhere)('in'); exports.whereIn = whereIn; const whereNotIn = (0, _args.addWhere)('not in'); exports.whereNotIn = whereNotIn; const whereLike = (0, _args.addWhere)('like'); exports.whereLike = whereLike; const whereNotLike = (0, _args.addWhere)('not like'); exports.whereNotLike = whereNotLike; const whereSimilarTo = (0, _args.addWhere)('similar to'); exports.whereSimilarTo = whereSimilarTo; const whereNotSimilarTo = (0, _args.addWhere)('not similar to'); // $FlowFixMe exports.whereNotSimilarTo = whereNotSimilarTo; const whereNull = (0, _args.addWhere)('is', _ramda.__, null); // $FlowFixMe exports.whereNull = whereNull; const whereNotNull = (0, _args.addWhere)('is not', _ramda.__, null); exports.whereNotNull = whereNotNull; const order = _args.addOrder; exports.order = order; const orderBy = order; exports.orderBy = orderBy; const orderByAsc = (0, _args.addOrder)('asc'); exports.orderByAsc = orderByAsc; const orderByDesc = (0, _args.addOrder)('desc'); // export const orderByRandom = addOrder('random()'); // TODO: not supported by endpoint.request exports.orderByDesc = orderByDesc; const limit = (0, _args.addArg)('limit'); exports.limit = limit; const offset = (0, _args.addArg)('offset'); exports.offset = offset; const evented = (0, _args.addArg)('evented'); exports.evented = evented; const metaData = (0, _args.addArg)('metaData'); exports.metaData = metaData; const exclude = (0, _args.addNestedArrayArg)('exclude'); exports.exclude = exclude; const excludeColumn = exclude; exports.excludeColumn = excludeColumn; const include = (0, _args.addNestedArrayArg)('include'); exports.include = include; const includeColumn = include; exports.includeColumn = includeColumn; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNoYWluYWJsZS5qcyJdLCJuYW1lcyI6WyJyZWxhdGlvbiIsIm5hbWUiLCJFcnJvciIsInNjaGVtYU5hbWUiLCJyZWxhdGlvbk5hbWUiLCJzcGxpdCIsInF1YWxpZmllZCIsInVybCIsImFyZ3MiLCJmbiIsImZuTmFtZSIsImZuQXJncyIsIkFycmF5IiwiaXNBcnJheSIsInZhbHMiLCJrd2FyZ3MiLCJUeXBlRXJyb3IiLCJ3aGVyZSIsIndoZXJlRXF1YWxzIiwid2hlcmVOb3QiLCJ3aGVyZU5vdEVxdWFscyIsIndoZXJlR3QiLCJ3aGVyZUd0ZSIsIndoZXJlTHQiLCJ3aGVyZUx0ZSIsIndoZXJlSW4iLCJ3aGVyZU5vdEluIiwid2hlcmVMaWtlIiwid2hlcmVOb3RMaWtlIiwid2hlcmVTaW1pbGFyVG8iLCJ3aGVyZU5vdFNpbWlsYXJUbyIsIndoZXJlTnVsbCIsIl9fIiwid2hlcmVOb3ROdWxsIiwib3JkZXIiLCJhZGRPcmRlciIsIm9yZGVyQnkiLCJvcmRlckJ5QXNjIiwib3JkZXJCeURlc2MiLCJsaW1pdCIsIm9mZnNldCIsImV2ZW50ZWQiLCJtZXRhRGF0YSIsImV4Y2x1ZGUiLCJleGNsdWRlQ29sdW1uIiwiaW5jbHVkZSIsImluY2x1ZGVDb2x1bW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUdPLFNBQVNBLFFBQVQsQ0FBa0JDLElBQWxCLEVBQTBDO0FBQy9DLE1BQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1QsVUFBTSxJQUFJQyxLQUFKLENBQVUsMkNBQVYsQ0FBTjtBQUNEOztBQUVELE1BQUksQ0FBQ0MsVUFBRCxFQUFhQyxZQUFiLElBQTZCSCxJQUFJLENBQUNJLEtBQUwsQ0FBVyxHQUFYLENBQWpDOztBQUNBLE1BQUksQ0FBQ0QsWUFBTCxFQUFtQjtBQUNqQkEsSUFBQUEsWUFBWSxHQUFHRCxVQUFmO0FBQ0FBLElBQUFBLFVBQVUsR0FBRyxRQUFiO0FBQ0Q7O0FBRUQsU0FBTztBQUNMQSxJQUFBQSxVQURLO0FBRUxDLElBQUFBLFlBRks7QUFHTEUsSUFBQUEsU0FBUyxFQUFHLEdBQUVILFVBQVcsSUFBR0MsWUFBYSxFQUhwQztBQUlMRyxJQUFBQSxHQUFHLEVBQUcsWUFBV0osVUFBVyxJQUFHQyxZQUFhLEVBSnZDO0FBS0xJLElBQUFBLElBQUksRUFBRTtBQUxELEdBQVA7QUFPRCxDLENBRUQ7OztBQUNPLFNBQVNDLEVBQVQsQ0FBWVIsSUFBWixFQUEwQk8sSUFBMUIsRUFBdUU7QUFDNUUsTUFBSSxDQUFDUCxJQUFMLEVBQVc7QUFDVCxVQUFNLElBQUlDLEtBQUosQ0FBVSxxQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDQyxVQUFELEVBQWFPLE1BQWIsSUFBdUJULElBQUksQ0FBQ0ksS0FBTCxDQUFXLEdBQVgsQ0FBM0I7O0FBQ0EsTUFBSSxDQUFDSyxNQUFMLEVBQWE7QUFDWEEsSUFBQUEsTUFBTSxHQUFHUCxVQUFUO0FBQ0FBLElBQUFBLFVBQVUsR0FBRyxRQUFiO0FBQ0Q7O0FBRUQsUUFBTVEsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNMLElBQWQsQ0FBSixFQUF5QjtBQUN2QkcsSUFBQUEsTUFBTSxDQUFDRyxJQUFQLEdBQWNOLElBQWQ7QUFDRCxHQUZELE1BRU8sSUFBSSxPQUFPQSxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO0FBQ25DRyxJQUFBQSxNQUFNLENBQUNJLE1BQVAsR0FBZ0JQLElBQWhCO0FBQ0QsR0FGTSxNQUVBO0FBQ0wsVUFBTSxJQUFJUSxTQUFKLENBQWMsMENBQWQsQ0FBTjtBQUNEOztBQUVELFNBQU87QUFDTGIsSUFBQUEsVUFESztBQUVMTyxJQUFBQSxNQUZLO0FBR0xKLElBQUFBLFNBQVMsRUFBRyxHQUFFSCxVQUFXLElBQUdPLE1BQU8sRUFIOUI7QUFJTEgsSUFBQUEsR0FBRyxFQUFHLFlBQVdKLFVBQVcsSUFBR08sTUFBTyxFQUpqQztBQUtMRixJQUFBQSxJQUFJLEVBQUU7QUFBQ0EsTUFBQUEsSUFBSSxFQUFFLENBQUNHLE1BQUQ7QUFBUCxLQUxELENBS21COztBQUxuQixHQUFQO0FBT0Q7QUFFRDs7Ozs7QUFHTyxNQUFNTSxLQUFLLEdBQUcsb0JBQVMsR0FBVCxDQUFkOztBQUNBLE1BQU1DLFdBQVcsR0FBR0QsS0FBcEI7O0FBQ0EsTUFBTUUsUUFBUSxHQUFHLG9CQUFTLElBQVQsQ0FBakI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHRCxRQUF2Qjs7QUFDQSxNQUFNRSxPQUFPLEdBQUcsb0JBQVMsR0FBVCxDQUFoQjs7QUFDQSxNQUFNQyxRQUFRLEdBQUcsb0JBQVMsSUFBVCxDQUFqQjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsb0JBQVMsR0FBVCxDQUFoQjs7QUFDQSxNQUFNQyxRQUFRLEdBQUcsb0JBQVMsSUFBVCxDQUFqQjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsb0JBQVMsSUFBVCxDQUFoQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUcsb0JBQVMsUUFBVCxDQUFuQjs7QUFDQSxNQUFNQyxTQUFTLEdBQUcsb0JBQVMsTUFBVCxDQUFsQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsb0JBQVMsVUFBVCxDQUFyQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUcsb0JBQVMsWUFBVCxDQUF2Qjs7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxvQkFBUyxnQkFBVCxDQUExQixDLENBQ1A7OztBQUNPLE1BQU1DLFNBQVMsR0FBRyxvQkFBUyxJQUFULEVBQWVDLFNBQWYsRUFBbUIsSUFBbkIsQ0FBbEIsQyxDQUNQOzs7QUFDTyxNQUFNQyxZQUFZLEdBQUcsb0JBQVMsUUFBVCxFQUFtQkQsU0FBbkIsRUFBdUIsSUFBdkIsQ0FBckI7O0FBRUEsTUFBTUUsS0FBSyxHQUFHQyxjQUFkOztBQUNBLE1BQU1DLE9BQU8sR0FBR0YsS0FBaEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHLG9CQUFTLEtBQVQsQ0FBbkI7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHLG9CQUFTLE1BQVQsQ0FBcEIsQyxDQUNQOzs7QUFFTyxNQUFNQyxLQUFLLEdBQUcsa0JBQU8sT0FBUCxDQUFkOztBQUNBLE1BQU1DLE1BQU0sR0FBRyxrQkFBTyxRQUFQLENBQWY7O0FBQ0EsTUFBTUMsT0FBTyxHQUFHLGtCQUFPLFNBQVAsQ0FBaEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHLGtCQUFPLFVBQVAsQ0FBakI7O0FBRUEsTUFBTUMsT0FBTyxHQUFHLDZCQUFrQixTQUFsQixDQUFoQjs7QUFDQSxNQUFNQyxhQUFhLEdBQUdELE9BQXRCOztBQUNBLE1BQU1FLE9BQU8sR0FBRyw2QkFBa0IsU0FBbEIsQ0FBaEI7O0FBQ0EsTUFBTUMsYUFBYSxHQUFHRCxPQUF0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5cbmltcG9ydCB7X199IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7YWRkQXJnLCBhZGROZXN0ZWRBcnJheUFyZywgYWRkT3JkZXIsIGFkZFdoZXJlfSBmcm9tICcuL2FyZ3MuanMnO1xuaW1wb3J0IHR5cGUge0ZuLCBSZWxhdGlvbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpb24obmFtZTogc3RyaW5nKTogUmVsYXRpb24ge1xuICBpZiAoIW5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbGF0aW9uOiByZWxhdGlvbiBuYW1lIG11c3QgYmUgc3BlY2lmaWVkJyk7XG4gIH1cblxuICBsZXQgW3NjaGVtYU5hbWUsIHJlbGF0aW9uTmFtZV0gPSBuYW1lLnNwbGl0KCcuJyk7XG4gIGlmICghcmVsYXRpb25OYW1lKSB7XG4gICAgcmVsYXRpb25OYW1lID0gc2NoZW1hTmFtZTtcbiAgICBzY2hlbWFOYW1lID0gJ3B1YmxpYyc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNjaGVtYU5hbWUsXG4gICAgcmVsYXRpb25OYW1lLFxuICAgIHF1YWxpZmllZDogYCR7c2NoZW1hTmFtZX0uJHtyZWxhdGlvbk5hbWV9YCxcbiAgICB1cmw6IGByZWxhdGlvbi8ke3NjaGVtYU5hbWV9LyR7cmVsYXRpb25OYW1lfWAsXG4gICAgYXJnczoge30sXG4gIH07XG59XG5cbi8vIFRPRE9cbmV4cG9ydCBmdW5jdGlvbiBmbihuYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PHN0cmluZz4gfCB7W3N0cmluZ106IG1peGVkfSk6IEZuIHtcbiAgaWYgKCFuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmbjogZnVuY3Rpb24gbmFtZSBtdXN0IGJlIHNwZWNpZmllZCcpO1xuICB9XG5cbiAgbGV0IFtzY2hlbWFOYW1lLCBmbk5hbWVdID0gbmFtZS5zcGxpdCgnLicpO1xuICBpZiAoIWZuTmFtZSkge1xuICAgIGZuTmFtZSA9IHNjaGVtYU5hbWU7XG4gICAgc2NoZW1hTmFtZSA9ICdwdWJsaWMnO1xuICB9XG5cbiAgY29uc3QgZm5BcmdzID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgZm5BcmdzLnZhbHMgPSBhcmdzO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBhcmdzID09PSAnb2JqZWN0Jykge1xuICAgIGZuQXJncy5rd2FyZ3MgPSBhcmdzO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ZuOiBhcmdzIG11c3QgYmUgQXJyYXk8c3RyaW5nPiBvciBPYmplY3QnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NoZW1hTmFtZSxcbiAgICBmbk5hbWUsXG4gICAgcXVhbGlmaWVkOiBgJHtzY2hlbWFOYW1lfS4ke2ZuTmFtZX1gLFxuICAgIHVybDogYGZ1bmN0aW9uLyR7c2NoZW1hTmFtZX0vJHtmbk5hbWV9YCxcbiAgICBhcmdzOiB7YXJnczogW2ZuQXJnc119LCAvLyBUaGlzIGlzIGFuIGFycmF5IGluIGVuZHBvaW50IGZ1bmN0aW9uc1xuICB9O1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbnMgdG8gcGVyZm9ybSBvbiBjaGFpbmFibGUgKHJldHVybmVkIGZyb20gcmVsYXRpb24pXG4gKi9cbmV4cG9ydCBjb25zdCB3aGVyZSA9IGFkZFdoZXJlKCc9Jyk7XG5leHBvcnQgY29uc3Qgd2hlcmVFcXVhbHMgPSB3aGVyZTtcbmV4cG9ydCBjb25zdCB3aGVyZU5vdCA9IGFkZFdoZXJlKCc8PicpO1xuZXhwb3J0IGNvbnN0IHdoZXJlTm90RXF1YWxzID0gd2hlcmVOb3Q7XG5leHBvcnQgY29uc3Qgd2hlcmVHdCA9IGFkZFdoZXJlKCc+Jyk7XG5leHBvcnQgY29uc3Qgd2hlcmVHdGUgPSBhZGRXaGVyZSgnPj0nKTtcbmV4cG9ydCBjb25zdCB3aGVyZUx0ID0gYWRkV2hlcmUoJzwnKTtcbmV4cG9ydCBjb25zdCB3aGVyZUx0ZSA9IGFkZFdoZXJlKCc8PScpO1xuZXhwb3J0IGNvbnN0IHdoZXJlSW4gPSBhZGRXaGVyZSgnaW4nKTtcbmV4cG9ydCBjb25zdCB3aGVyZU5vdEluID0gYWRkV2hlcmUoJ25vdCBpbicpO1xuZXhwb3J0IGNvbnN0IHdoZXJlTGlrZSA9IGFkZFdoZXJlKCdsaWtlJyk7XG5leHBvcnQgY29uc3Qgd2hlcmVOb3RMaWtlID0gYWRkV2hlcmUoJ25vdCBsaWtlJyk7XG5leHBvcnQgY29uc3Qgd2hlcmVTaW1pbGFyVG8gPSBhZGRXaGVyZSgnc2ltaWxhciB0bycpO1xuZXhwb3J0IGNvbnN0IHdoZXJlTm90U2ltaWxhclRvID0gYWRkV2hlcmUoJ25vdCBzaW1pbGFyIHRvJyk7XG4vLyAkRmxvd0ZpeE1lXG5leHBvcnQgY29uc3Qgd2hlcmVOdWxsID0gYWRkV2hlcmUoJ2lzJywgX18sIG51bGwpO1xuLy8gJEZsb3dGaXhNZVxuZXhwb3J0IGNvbnN0IHdoZXJlTm90TnVsbCA9IGFkZFdoZXJlKCdpcyBub3QnLCBfXywgbnVsbCk7XG5cbmV4cG9ydCBjb25zdCBvcmRlciA9IGFkZE9yZGVyO1xuZXhwb3J0IGNvbnN0IG9yZGVyQnkgPSBvcmRlcjtcbmV4cG9ydCBjb25zdCBvcmRlckJ5QXNjID0gYWRkT3JkZXIoJ2FzYycpO1xuZXhwb3J0IGNvbnN0IG9yZGVyQnlEZXNjID0gYWRkT3JkZXIoJ2Rlc2MnKTtcbi8vIGV4cG9ydCBjb25zdCBvcmRlckJ5UmFuZG9tID0gYWRkT3JkZXIoJ3JhbmRvbSgpJyk7IC8vIFRPRE86IG5vdCBzdXBwb3J0ZWQgYnkgZW5kcG9pbnQucmVxdWVzdFxuXG5leHBvcnQgY29uc3QgbGltaXQgPSBhZGRBcmcoJ2xpbWl0Jyk7XG5leHBvcnQgY29uc3Qgb2Zmc2V0ID0gYWRkQXJnKCdvZmZzZXQnKTtcbmV4cG9ydCBjb25zdCBldmVudGVkID0gYWRkQXJnKCdldmVudGVkJyk7XG5leHBvcnQgY29uc3QgbWV0YURhdGEgPSBhZGRBcmcoJ21ldGFEYXRhJyk7XG5cbmV4cG9ydCBjb25zdCBleGNsdWRlID0gYWRkTmVzdGVkQXJyYXlBcmcoJ2V4Y2x1ZGUnKTtcbmV4cG9ydCBjb25zdCBleGNsdWRlQ29sdW1uID0gZXhjbHVkZTtcbmV4cG9ydCBjb25zdCBpbmNsdWRlID0gYWRkTmVzdGVkQXJyYXlBcmcoJ2luY2x1ZGUnKTtcbmV4cG9ydCBjb25zdCBpbmNsdWRlQ29sdW1uID0gaW5jbHVkZTtcbiJdfQ==