UNPKG

aquameta-datum

Version:

Service layer for the Aquameta database API

91 lines (79 loc) 9.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isInvalidExecutable = isInvalidExecutable; exports.http = exports.update = exports.select = exports.insert = exports.del = void 0; var _ramda = require("ramda"); var _constants = require("./constants.js"); var _args = require("./args.js"); const EXECUTABLE = Symbol.for('executable'); const createExecutable = (0, _ramda.curry)((method, chainable, data) => ({ method, url: chainable.url, args: chainable.args, // SELECT, UPDATE, DELETE use args version: chainable.version || null, data, // UPDATE and INSERT use data type: EXECUTABLE })); function isInvalidExecutable(executable) { return !(executable.type === EXECUTABLE); } // $FlowFixMe const del = createExecutable((0, _constants.getMethodFromType)(_constants.DELETE), _ramda.__, null); exports.del = del; const insert = createExecutable((0, _constants.getMethodFromType)(_constants.INSERT)); exports.insert = insert; const select = createExecutable((0, _constants.getMethodFromType)(_constants.SELECT), _ramda.__, null); exports.select = select; const update = createExecutable((0, _constants.getMethodFromType)(_constants.UPDATE)); exports.update = update; /** * Parse http request and return executable * * e.g. * query( * client.connection(), * database.http(req) * ).then(...).catch(...) * * http requests are either datum calls or source urls * source urls return a single column and have the format: /db/schema/rel/name.column */ const sourceUrlRegex = /^\/db\/.+\/.+\/.+\..+/; const source = (0, _args.addArg)('source', true); const http = false ? function http(req) { const parsed = url.parse(req.url, true); const { pathname } = parsed; if (pathname && sourceUrlRegex.test(pathname)) { // return createExecutable('GET', {url: pathname, args: {source: true}}, null); if (false) { const { schemaName, relationName, column, name } = parseSourceUrl(pathname); const func = fn('endpoint.source', [schemaName, relationName, column, name]); // $FlowFixMe return compose(select, source)(func); } } else if (pathname) { // TODO: does something need to happen here with versions? /* const [, version] = /\/?(.+)\//.exec(pathname); console.log(version); */ const url = pathname.replace(/\/?.+?\//, ''); return createExecutable(req.method, { url, args: parsed.query || {} }, req.body || null); } else { return null; } } : null; exports.http = http; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4ZWN1dGFibGUuanMiXSwibmFtZXMiOlsiRVhFQ1VUQUJMRSIsIlN5bWJvbCIsImZvciIsImNyZWF0ZUV4ZWN1dGFibGUiLCJtZXRob2QiLCJjaGFpbmFibGUiLCJkYXRhIiwidXJsIiwiYXJncyIsInZlcnNpb24iLCJ0eXBlIiwiaXNJbnZhbGlkRXhlY3V0YWJsZSIsImV4ZWN1dGFibGUiLCJkZWwiLCJERUxFVEUiLCJfXyIsImluc2VydCIsIklOU0VSVCIsInNlbGVjdCIsIlNFTEVDVCIsInVwZGF0ZSIsIlVQREFURSIsInNvdXJjZVVybFJlZ2V4Iiwic291cmNlIiwiaHR0cCIsInJlcSIsInBhcnNlZCIsInBhcnNlIiwicGF0aG5hbWUiLCJ0ZXN0Iiwic2NoZW1hTmFtZSIsInJlbGF0aW9uTmFtZSIsImNvbHVtbiIsIm5hbWUiLCJwYXJzZVNvdXJjZVVybCIsImZ1bmMiLCJmbiIsImNvbXBvc2UiLCJyZXBsYWNlIiwicXVlcnkiLCJib2R5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBOztBQUNBOztBQVNBOztBQU1BLE1BQU1BLFVBQVUsR0FBR0MsTUFBTSxDQUFDQyxHQUFQLENBQVcsWUFBWCxDQUFuQjtBQUVBLE1BQU1DLGdCQUFnQixHQUFHLGtCQU12QixDQUNFQyxNQURGLEVBRUVDLFNBRkYsRUFHRUMsSUFIRixNQUlrQjtBQUNoQkYsRUFBQUEsTUFEZ0I7QUFFaEJHLEVBQUFBLEdBQUcsRUFBRUYsU0FBUyxDQUFDRSxHQUZDO0FBR2hCQyxFQUFBQSxJQUFJLEVBQUVILFNBQVMsQ0FBQ0csSUFIQTtBQUdNO0FBQ3RCQyxFQUFBQSxPQUFPLEVBQUVKLFNBQVMsQ0FBQ0ksT0FBVixJQUFxQixJQUpkO0FBS2hCSCxFQUFBQSxJQUxnQjtBQUtWO0FBQ05JLEVBQUFBLElBQUksRUFBRVY7QUFOVSxDQUpsQixDQU51QixDQUF6Qjs7QUFvQk8sU0FBU1csbUJBQVQsQ0FBNkJDLFVBQTdCLEVBQThEO0FBQ25FLFNBQU8sRUFBRUEsVUFBVSxDQUFDRixJQUFYLEtBQW9CVixVQUF0QixDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxNQUFNYSxHQUFHLEdBQUdWLGdCQUFnQixDQUFDLGtDQUFrQlcsaUJBQWxCLENBQUQsRUFBNkJDLFNBQTdCLEVBQXVDLElBQXZDLENBQTVCOztBQUNBLE1BQU1DLE1BQU0sR0FBR2IsZ0JBQWdCLENBQUMsa0NBQWtCYyxpQkFBbEIsQ0FBRCxDQUEvQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdmLGdCQUFnQixDQUNwQyxrQ0FBa0JnQixpQkFBbEIsQ0FEb0MsRUFFbkNKLFNBRm1DLEVBR3BDLElBSG9DLENBQS9COztBQUtBLE1BQU1LLE1BQU0sR0FBR2pCLGdCQUFnQixDQUFDLGtDQUFrQmtCLGlCQUFsQixDQUFELENBQS9COzs7QUFPUDs7Ozs7Ozs7Ozs7O0FBWUEsTUFBTUMsY0FBYyxHQUFHLHVCQUF2QjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxrQkFBTyxRQUFQLEVBQWlCLElBQWpCLENBQWY7QUFDTyxNQUFNQyxJQUFJLEdBQUcsUUFBVyxTQUFTQSxJQUFULENBQWNDLEdBQWQsRUFBbUQ7QUFDaEYsUUFBTUMsTUFBaUIsR0FBR25CLEdBQUcsQ0FBQ29CLEtBQUosQ0FBVUYsR0FBRyxDQUFDbEIsR0FBZCxFQUFtQixJQUFuQixDQUExQjtBQUNBLFFBQU07QUFBQ3FCLElBQUFBO0FBQUQsTUFBYUYsTUFBbkI7O0FBRUEsTUFBSUUsUUFBUSxJQUFJTixjQUFjLENBQUNPLElBQWYsQ0FBb0JELFFBQXBCLENBQWhCLEVBQStDO0FBQzdDO0FBQ0EsZUFBYztBQUNaLFlBQU07QUFBQ0UsUUFBQUEsVUFBRDtBQUFhQyxRQUFBQSxZQUFiO0FBQTJCQyxRQUFBQSxNQUEzQjtBQUFtQ0MsUUFBQUE7QUFBbkMsVUFBMkNDLGNBQWMsQ0FBQ04sUUFBRCxDQUEvRDtBQUNBLFlBQU1PLElBQUksR0FBR0MsRUFBRSxDQUFDLGlCQUFELEVBQW9CLENBQ2pDTixVQURpQyxFQUVqQ0MsWUFGaUMsRUFHakNDLE1BSGlDLEVBSWpDQyxJQUppQyxDQUFwQixDQUFmLENBRlksQ0FRWjs7QUFDQSxhQUFPSSxPQUFPLENBQ1puQixNQURZLEVBRVpLLE1BRlksQ0FBUCxDQUdMWSxJQUhLLENBQVA7QUFJRDtBQUNGLEdBaEJELE1BZ0JPLElBQUlQLFFBQUosRUFBYztBQUNuQjs7QUFDQTs7OztBQUlBLFVBQU1yQixHQUFHLEdBQUdxQixRQUFRLENBQUNVLE9BQVQsQ0FBaUIsVUFBakIsRUFBNkIsRUFBN0IsQ0FBWjtBQUNBLFdBQU9uQyxnQkFBZ0IsQ0FDckJzQixHQUFHLENBQUNyQixNQURpQixFQUVyQjtBQUFDRyxNQUFBQSxHQUFEO0FBQU1DLE1BQUFBLElBQUksRUFBRWtCLE1BQU0sQ0FBQ2EsS0FBUCxJQUFnQjtBQUE1QixLQUZxQixFQUdyQmQsR0FBRyxDQUFDZSxJQUFKLElBQVksSUFIUyxDQUF2QjtBQUtELEdBWk0sTUFZQTtBQUNMLFdBQU8sSUFBUDtBQUNEO0FBQ0YsQ0FuQ21CLEdBbUNoQixJQW5DRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5cbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7X18sIGN1cnJ5fSBmcm9tICdyYW1kYSc7XG5pbXBvcnQge1xuICBERUxFVEUsXG4gIElOU0VSVCxcbiAgU0VMRUNULFxuICBVUERBVEUsXG4gIGdldE1ldGhvZEZyb21UeXBlLFxufSBmcm9tICcuL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgdHlwZSB7RXhlY3V0YWJsZSwgSFRUUFJlcXVlc3R9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7Y29tcG9zZX0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHthZGRBcmd9IGZyb20gJy4vYXJncy5qcyc7XG5pbXBvcnQge2ZufSBmcm9tICcuL2NoYWluYWJsZS5qcyc7XG5cbi8vIFRPRE8gbW92ZSB0aGlzXG5pbXBvcnQge3BhcnNlU291cmNlVXJsfSBmcm9tICcuLi9xdWVyeS9jb25uZWN0aW9uLmpzJztcblxuY29uc3QgRVhFQ1VUQUJMRSA9IFN5bWJvbC5mb3IoJ2V4ZWN1dGFibGUnKTtcblxuY29uc3QgY3JlYXRlRXhlY3V0YWJsZSA9IGN1cnJ5PFxuICBzdHJpbmcsXG4gIEV4ZWN1dGFibGUsXG4gIHtbc3RyaW5nXTogbWl4ZWR9LFxuICBFeGVjdXRhYmxlLFxuPihcbiAgKFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIGNoYWluYWJsZTogRXhlY3V0YWJsZSxcbiAgICBkYXRhOiA/e1tzdHJpbmddOiBtaXhlZH0sXG4gICk6IEV4ZWN1dGFibGUgPT4gKHtcbiAgICBtZXRob2QsXG4gICAgdXJsOiBjaGFpbmFibGUudXJsLFxuICAgIGFyZ3M6IGNoYWluYWJsZS5hcmdzLCAvLyBTRUxFQ1QsIFVQREFURSwgREVMRVRFIHVzZSBhcmdzXG4gICAgdmVyc2lvbjogY2hhaW5hYmxlLnZlcnNpb24gfHwgbnVsbCxcbiAgICBkYXRhLCAvLyBVUERBVEUgYW5kIElOU0VSVCB1c2UgZGF0YVxuICAgIHR5cGU6IEVYRUNVVEFCTEUsXG4gIH0pLFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW52YWxpZEV4ZWN1dGFibGUoZXhlY3V0YWJsZTogRXhlY3V0YWJsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gIShleGVjdXRhYmxlLnR5cGUgPT09IEVYRUNVVEFCTEUpO1xufVxuXG4vLyAkRmxvd0ZpeE1lXG5leHBvcnQgY29uc3QgZGVsID0gY3JlYXRlRXhlY3V0YWJsZShnZXRNZXRob2RGcm9tVHlwZShERUxFVEUpLCAoX186IGFueSksIG51bGwpO1xuZXhwb3J0IGNvbnN0IGluc2VydCA9IGNyZWF0ZUV4ZWN1dGFibGUoZ2V0TWV0aG9kRnJvbVR5cGUoSU5TRVJUKSk7XG5leHBvcnQgY29uc3Qgc2VsZWN0ID0gY3JlYXRlRXhlY3V0YWJsZShcbiAgZ2V0TWV0aG9kRnJvbVR5cGUoU0VMRUNUKSxcbiAgKF9fOiBhbnkpLFxuICBudWxsLFxuKTtcbmV4cG9ydCBjb25zdCB1cGRhdGUgPSBjcmVhdGVFeGVjdXRhYmxlKGdldE1ldGhvZEZyb21UeXBlKFVQREFURSkpO1xuXG50eXBlIFBhcnNlZFVybCA9IHtcbiAgcGF0aG5hbWU/OiBzdHJpbmcsXG4gIHF1ZXJ5Pzoge1tzdHJpbmddOiBtaXhlZH0sXG59O1xuXG4vKipcbiAqIFBhcnNlIGh0dHAgcmVxdWVzdCBhbmQgcmV0dXJuIGV4ZWN1dGFibGVcbiAqXG4gKiBlLmcuXG4gKiBxdWVyeShcbiAqICAgY2xpZW50LmNvbm5lY3Rpb24oKSxcbiAqICAgZGF0YWJhc2UuaHR0cChyZXEpXG4gKiApLnRoZW4oLi4uKS5jYXRjaCguLi4pXG4gKlxuICogaHR0cCByZXF1ZXN0cyBhcmUgZWl0aGVyIGRhdHVtIGNhbGxzIG9yIHNvdXJjZSB1cmxzXG4gKiBzb3VyY2UgdXJscyByZXR1cm4gYSBzaW5nbGUgY29sdW1uIGFuZCBoYXZlIHRoZSBmb3JtYXQ6IC9kYi9zY2hlbWEvcmVsL25hbWUuY29sdW1uXG4gKi9cbmNvbnN0IHNvdXJjZVVybFJlZ2V4ID0gL15cXC9kYlxcLy4rXFwvLitcXC8uK1xcLi4rLztcbmNvbnN0IHNvdXJjZSA9IGFkZEFyZygnc291cmNlJywgdHJ1ZSk7XG5leHBvcnQgY29uc3QgaHR0cCA9IF9fTk9ERV9fID8gZnVuY3Rpb24gaHR0cChyZXE6IEhUVFBSZXF1ZXN0KTogRXhlY3V0YWJsZSB8IG51bGwge1xuICBjb25zdCBwYXJzZWQ6IFBhcnNlZFVybCA9IHVybC5wYXJzZShyZXEudXJsLCB0cnVlKTtcbiAgY29uc3Qge3BhdGhuYW1lfSA9IHBhcnNlZDtcblxuICBpZiAocGF0aG5hbWUgJiYgc291cmNlVXJsUmVnZXgudGVzdChwYXRobmFtZSkpIHtcbiAgICAvLyByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZSgnR0VUJywge3VybDogcGF0aG5hbWUsIGFyZ3M6IHtzb3VyY2U6IHRydWV9fSwgbnVsbCk7XG4gICAgaWYgKF9fTk9ERV9fKSB7XG4gICAgICBjb25zdCB7c2NoZW1hTmFtZSwgcmVsYXRpb25OYW1lLCBjb2x1bW4sIG5hbWV9ID0gcGFyc2VTb3VyY2VVcmwocGF0aG5hbWUpO1xuICAgICAgY29uc3QgZnVuYyA9IGZuKCdlbmRwb2ludC5zb3VyY2UnLCBbXG4gICAgICAgIHNjaGVtYU5hbWUsXG4gICAgICAgIHJlbGF0aW9uTmFtZSxcbiAgICAgICAgY29sdW1uLFxuICAgICAgICBuYW1lLFxuICAgICAgXSk7XG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICByZXR1cm4gY29tcG9zZShcbiAgICAgICAgc2VsZWN0LFxuICAgICAgICBzb3VyY2UsXG4gICAgICApKGZ1bmMpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwYXRobmFtZSkge1xuICAgIC8vIFRPRE86IGRvZXMgc29tZXRoaW5nIG5lZWQgdG8gaGFwcGVuIGhlcmUgd2l0aCB2ZXJzaW9ucz9cbiAgICAvKlxuICAgIGNvbnN0IFssIHZlcnNpb25dID0gL1xcLz8oLispXFwvLy5leGVjKHBhdGhuYW1lKTtcbiAgICBjb25zb2xlLmxvZyh2ZXJzaW9uKTtcbiAgICAqL1xuICAgIGNvbnN0IHVybCA9IHBhdGhuYW1lLnJlcGxhY2UoL1xcLz8uKz9cXC8vLCAnJyk7XG4gICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUoXG4gICAgICByZXEubWV0aG9kLFxuICAgICAge3VybCwgYXJnczogcGFyc2VkLnF1ZXJ5IHx8IHt9fSxcbiAgICAgIHJlcS5ib2R5IHx8IG51bGwsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufSA6IG51bGw7XG4iXX0=