UNPKG

aquameta-datum

Version:

Service layer for the Aquameta database API

42 lines (37 loc) 5.12 kB
import executeEndpoint from './endpoint.js'; import executeConnection from './connection.js'; import { compose, cond, curry, when, T } from 'ramda'; import { isConnectionClient, isEndpointClient, isInvalidClient } from '../client.js'; import { isInvalidExecutable } from '../database/index.js'; /** * query * * Execute the given query with a client * * @curried * @params {Client} client * @params {ExecutableQuery} query * @returns {Promise} */ export default curry(async function (client, query) { // Runtime validations if (isInvalidClient(client)) { throw new TypeError('query: invalid client'); } if (isInvalidExecutable(query)) { throw new TypeError('query: invalid executable'); } try { const res = await invoke(client, query); return res; } catch (e) { console.error(e); } }); // TODO const makeEvented = i => i; const execute = cond([true && [isConnectionClient, executeConnection], [isEndpointClient, executeEndpoint], [T, () => { throw new Error('must specify endpoint or connection for client'); }]].filter(Boolean)); const getKey = curry((key, obj) => obj[key]); const invoke = compose(when(getKey('evented'), makeEvented), execute); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4ZWN1dGVFbmRwb2ludCIsImV4ZWN1dGVDb25uZWN0aW9uIiwiY29tcG9zZSIsImNvbmQiLCJjdXJyeSIsIndoZW4iLCJUIiwiaXNDb25uZWN0aW9uQ2xpZW50IiwiaXNFbmRwb2ludENsaWVudCIsImlzSW52YWxpZENsaWVudCIsImlzSW52YWxpZEV4ZWN1dGFibGUiLCJjbGllbnQiLCJxdWVyeSIsIlR5cGVFcnJvciIsInJlcyIsImludm9rZSIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJtYWtlRXZlbnRlZCIsImkiLCJleGVjdXRlIiwiRXJyb3IiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZ2V0S2V5Iiwia2V5Iiwib2JqIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxlQUFQLE1BQTRCLGVBQTVCO0FBQ0EsT0FBT0MsaUJBQVAsTUFBOEIsaUJBQTlCO0FBQ0EsU0FBUUMsT0FBUixFQUFpQkMsSUFBakIsRUFBdUJDLEtBQXZCLEVBQThCQyxJQUE5QixFQUFvQ0MsQ0FBcEMsUUFBNEMsT0FBNUM7QUFDQSxTQUNFQyxrQkFERixFQUVFQyxnQkFGRixFQUdFQyxlQUhGLFFBSU8sY0FKUDtBQUtBLFNBQVFDLG1CQUFSLFFBQWtDLHNCQUFsQzs7QUFJQTs7Ozs7Ozs7OztBQVVBLGVBQWVOLEtBQUssQ0FBQyxnQkFBZU8sTUFBZixFQUErQkMsS0FBL0IsRUFBeUQ7QUFDNUU7QUFDQSxNQUFJSCxlQUFlLENBQUNFLE1BQUQsQ0FBbkIsRUFBNkI7QUFDM0IsVUFBTSxJQUFJRSxTQUFKLENBQWMsdUJBQWQsQ0FBTjtBQUNEOztBQUNELE1BQUlILG1CQUFtQixDQUFDRSxLQUFELENBQXZCLEVBQWdDO0FBQzlCLFVBQU0sSUFBSUMsU0FBSixDQUFjLDJCQUFkLENBQU47QUFDRDs7QUFFRCxNQUFJO0FBQ0YsVUFBTUMsR0FBRyxHQUFHLE1BQU1DLE1BQU0sQ0FBQ0osTUFBRCxFQUFTQyxLQUFULENBQXhCO0FBQ0EsV0FBT0UsR0FBUDtBQUNELEdBSEQsQ0FHRSxPQUFPRSxDQUFQLEVBQVU7QUFDVkMsSUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWNGLENBQWQ7QUFDRDtBQUNGLENBZm1CLENBQXBCLEMsQ0FpQkE7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxDQUFDLElBQUlBLENBQXpCOztBQUVBLE1BQU1DLE9BQU8sR0FBR2xCLElBQUksQ0FDbEIsQ0FDRSxRQUFZLENBQUNJLGtCQUFELEVBQXFCTixpQkFBckIsQ0FEZCxFQUVFLENBQUNPLGdCQUFELEVBQW1CUixlQUFuQixDQUZGLEVBR0UsQ0FDRU0sQ0FERixFQUVFLE1BQU07QUFDSixRQUFNLElBQUlnQixLQUFKLENBQVUsZ0RBQVYsQ0FBTjtBQUNELENBSkgsQ0FIRixFQVNFQyxNQVRGLENBU1NDLE9BVFQsQ0FEa0IsQ0FBcEI7QUFhQSxNQUFNQyxNQUFNLEdBQUdyQixLQUFLLENBQUMsQ0FBQ3NCLEdBQUQsRUFBTUMsR0FBTixLQUFjQSxHQUFHLENBQUNELEdBQUQsQ0FBbEIsQ0FBcEI7QUFFQSxNQUFNWCxNQUFNLEdBQUdiLE9BQU8sQ0FDcEJHLElBQUksQ0FBQ29CLE1BQU0sQ0FBQyxTQUFELENBQVAsRUFBb0JOLFdBQXBCLENBRGdCLEVBRXBCRSxPQUZvQixDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleGVjdXRlRW5kcG9pbnQgZnJvbSAnLi9lbmRwb2ludC5qcyc7XG5pbXBvcnQgZXhlY3V0ZUNvbm5lY3Rpb24gZnJvbSAnLi9jb25uZWN0aW9uLmpzJztcbmltcG9ydCB7Y29tcG9zZSwgY29uZCwgY3VycnksIHdoZW4sIFR9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7XG4gIGlzQ29ubmVjdGlvbkNsaWVudCxcbiAgaXNFbmRwb2ludENsaWVudCxcbiAgaXNJbnZhbGlkQ2xpZW50LFxufSBmcm9tICcuLi9jbGllbnQuanMnO1xuaW1wb3J0IHtpc0ludmFsaWRFeGVjdXRhYmxlfSBmcm9tICcuLi9kYXRhYmFzZS9pbmRleC5qcyc7XG5cbmltcG9ydCB0eXBlIHtDbGllbnQsIEV4ZWN1dGFibGUsIFF1ZXJ5fSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKlxuICogcXVlcnlcbiAqXG4gKiBFeGVjdXRlIHRoZSBnaXZlbiBxdWVyeSB3aXRoIGEgY2xpZW50XG4gKlxuICogQGN1cnJpZWRcbiAqIEBwYXJhbXMge0NsaWVudH0gY2xpZW50XG4gKiBAcGFyYW1zIHtFeGVjdXRhYmxlUXVlcnl9IHF1ZXJ5XG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY3VycnkoYXN5bmMgZnVuY3Rpb24oY2xpZW50OiBDbGllbnQsIHF1ZXJ5OiBFeGVjdXRhYmxlKTogUXVlcnkge1xuICAvLyBSdW50aW1lIHZhbGlkYXRpb25zXG4gIGlmIChpc0ludmFsaWRDbGllbnQoY2xpZW50KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3F1ZXJ5OiBpbnZhbGlkIGNsaWVudCcpO1xuICB9XG4gIGlmIChpc0ludmFsaWRFeGVjdXRhYmxlKHF1ZXJ5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3F1ZXJ5OiBpbnZhbGlkIGV4ZWN1dGFibGUnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgaW52b2tlKGNsaWVudCwgcXVlcnkpO1xuICAgIHJldHVybiByZXM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICB9XG59KTtcblxuLy8gVE9ET1xuY29uc3QgbWFrZUV2ZW50ZWQgPSBpID0+IGk7XG5cbmNvbnN0IGV4ZWN1dGUgPSBjb25kKFxuICBbXG4gICAgX19OT0RFX18gJiYgW2lzQ29ubmVjdGlvbkNsaWVudCwgZXhlY3V0ZUNvbm5lY3Rpb25dLFxuICAgIFtpc0VuZHBvaW50Q2xpZW50LCBleGVjdXRlRW5kcG9pbnRdLFxuICAgIFtcbiAgICAgIFQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbXVzdCBzcGVjaWZ5IGVuZHBvaW50IG9yIGNvbm5lY3Rpb24gZm9yIGNsaWVudCcpO1xuICAgICAgfSxcbiAgICBdLFxuICBdLmZpbHRlcihCb29sZWFuKSxcbik7XG5cbmNvbnN0IGdldEtleSA9IGN1cnJ5KChrZXksIG9iaikgPT4gb2JqW2tleV0pO1xuXG5jb25zdCBpbnZva2UgPSBjb21wb3NlKFxuICB3aGVuKGdldEtleSgnZXZlbnRlZCcpLCBtYWtlRXZlbnRlZCksXG4gIGV4ZWN1dGUsXG4pO1xuIl19