aquameta-datum
Version:
Service layer for the Aquameta database API
41 lines (36 loc) • 5 kB
JavaScript
import executeEndpoint from './endpoint.js';
import { compose, cond, curry, when, T } from 'ramda';
import { 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([false && [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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4ZWN1dGVFbmRwb2ludCIsImNvbXBvc2UiLCJjb25kIiwiY3VycnkiLCJ3aGVuIiwiVCIsImlzRW5kcG9pbnRDbGllbnQiLCJpc0ludmFsaWRDbGllbnQiLCJpc0ludmFsaWRFeGVjdXRhYmxlIiwiY2xpZW50IiwicXVlcnkiLCJUeXBlRXJyb3IiLCJyZXMiLCJpbnZva2UiLCJlIiwiY29uc29sZSIsImVycm9yIiwibWFrZUV2ZW50ZWQiLCJpIiwiZXhlY3V0ZSIsImlzQ29ubmVjdGlvbkNsaWVudCIsImV4ZWN1dGVDb25uZWN0aW9uIiwiRXJyb3IiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZ2V0S2V5Iiwia2V5Iiwib2JqIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxlQUFQLE1BQTRCLGVBQTVCO0FBRUEsU0FBUUMsT0FBUixFQUFpQkMsSUFBakIsRUFBdUJDLEtBQXZCLEVBQThCQyxJQUE5QixFQUFvQ0MsQ0FBcEMsUUFBNEMsT0FBNUM7QUFDQSxTQUVFQyxnQkFGRixFQUdFQyxlQUhGLFFBSU8sY0FKUDtBQUtBLFNBQVFDLG1CQUFSLFFBQWtDLHNCQUFsQzs7QUFJQTs7Ozs7Ozs7OztBQVVBLGVBQWVMLEtBQUssQ0FBQyxnQkFBZU0sTUFBZixFQUErQkMsS0FBL0IsRUFBeUQ7QUFDNUU7QUFDQSxNQUFJSCxlQUFlLENBQUNFLE1BQUQsQ0FBbkIsRUFBNkI7QUFDM0IsVUFBTSxJQUFJRSxTQUFKLENBQWMsdUJBQWQsQ0FBTjtBQUNEOztBQUNELE1BQUlILG1CQUFtQixDQUFDRSxLQUFELENBQXZCLEVBQWdDO0FBQzlCLFVBQU0sSUFBSUMsU0FBSixDQUFjLDJCQUFkLENBQU47QUFDRDs7QUFFRCxNQUFJO0FBQ0YsVUFBTUMsR0FBRyxHQUFHLE1BQU1DLE1BQU0sQ0FBQ0osTUFBRCxFQUFTQyxLQUFULENBQXhCO0FBQ0EsV0FBT0UsR0FBUDtBQUNELEdBSEQsQ0FHRSxPQUFPRSxDQUFQLEVBQVU7QUFDVkMsSUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWNGLENBQWQ7QUFDRDtBQUNGLENBZm1CLENBQXBCLEMsQ0FpQkE7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxDQUFDLElBQUlBLENBQXpCOztBQUVBLE1BQU1DLE9BQU8sR0FBR2pCLElBQUksQ0FDbEIsQ0FDRSxTQUFZLENBQUNrQixrQkFBRCxFQUFxQkMsaUJBQXJCLENBRGQsRUFFRSxDQUFDZixnQkFBRCxFQUFtQk4sZUFBbkIsQ0FGRixFQUdFLENBQ0VLLENBREYsRUFFRSxNQUFNO0FBQ0osUUFBTSxJQUFJaUIsS0FBSixDQUFVLGdEQUFWLENBQU47QUFDRCxDQUpILENBSEYsRUFTRUMsTUFURixDQVNTQyxPQVRULENBRGtCLENBQXBCO0FBYUEsTUFBTUMsTUFBTSxHQUFHdEIsS0FBSyxDQUFDLENBQUN1QixHQUFELEVBQU1DLEdBQU4sS0FBY0EsR0FBRyxDQUFDRCxHQUFELENBQWxCLENBQXBCO0FBRUEsTUFBTWIsTUFBTSxHQUFHWixPQUFPLENBQ3BCRyxJQUFJLENBQUNxQixNQUFNLENBQUMsU0FBRCxDQUFQLEVBQW9CUixXQUFwQixDQURnQixFQUVwQkUsT0FGb0IsQ0FBdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhlY3V0ZUVuZHBvaW50IGZyb20gJy4vZW5kcG9pbnQuanMnO1xuaW1wb3J0IGV4ZWN1dGVDb25uZWN0aW9uIGZyb20gJy4vY29ubmVjdGlvbi5qcyc7XG5pbXBvcnQge2NvbXBvc2UsIGNvbmQsIGN1cnJ5LCB3aGVuLCBUfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQge1xuICBpc0Nvbm5lY3Rpb25DbGllbnQsXG4gIGlzRW5kcG9pbnRDbGllbnQsXG4gIGlzSW52YWxpZENsaWVudCxcbn0gZnJvbSAnLi4vY2xpZW50LmpzJztcbmltcG9ydCB7aXNJbnZhbGlkRXhlY3V0YWJsZX0gZnJvbSAnLi4vZGF0YWJhc2UvaW5kZXguanMnO1xuXG5pbXBvcnQgdHlwZSB7Q2xpZW50LCBFeGVjdXRhYmxlLCBRdWVyeX0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIHF1ZXJ5XG4gKlxuICogRXhlY3V0ZSB0aGUgZ2l2ZW4gcXVlcnkgd2l0aCBhIGNsaWVudFxuICpcbiAqIEBjdXJyaWVkXG4gKiBAcGFyYW1zIHtDbGllbnR9IGNsaWVudFxuICogQHBhcmFtcyB7RXhlY3V0YWJsZVF1ZXJ5fSBxdWVyeVxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGN1cnJ5KGFzeW5jIGZ1bmN0aW9uKGNsaWVudDogQ2xpZW50LCBxdWVyeTogRXhlY3V0YWJsZSk6IFF1ZXJ5IHtcbiAgLy8gUnVudGltZSB2YWxpZGF0aW9uc1xuICBpZiAoaXNJbnZhbGlkQ2xpZW50KGNsaWVudCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdxdWVyeTogaW52YWxpZCBjbGllbnQnKTtcbiAgfVxuICBpZiAoaXNJbnZhbGlkRXhlY3V0YWJsZShxdWVyeSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdxdWVyeTogaW52YWxpZCBleGVjdXRhYmxlJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGludm9rZShjbGllbnQsIHF1ZXJ5KTtcbiAgICByZXR1cm4gcmVzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgfVxufSk7XG5cbi8vIFRPRE9cbmNvbnN0IG1ha2VFdmVudGVkID0gaSA9PiBpO1xuXG5jb25zdCBleGVjdXRlID0gY29uZChcbiAgW1xuICAgIF9fTk9ERV9fICYmIFtpc0Nvbm5lY3Rpb25DbGllbnQsIGV4ZWN1dGVDb25uZWN0aW9uXSxcbiAgICBbaXNFbmRwb2ludENsaWVudCwgZXhlY3V0ZUVuZHBvaW50XSxcbiAgICBbXG4gICAgICBULFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ211c3Qgc3BlY2lmeSBlbmRwb2ludCBvciBjb25uZWN0aW9uIGZvciBjbGllbnQnKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgXS5maWx0ZXIoQm9vbGVhbiksXG4pO1xuXG5jb25zdCBnZXRLZXkgPSBjdXJyeSgoa2V5LCBvYmopID0+IG9ialtrZXldKTtcblxuY29uc3QgaW52b2tlID0gY29tcG9zZShcbiAgd2hlbihnZXRLZXkoJ2V2ZW50ZWQnKSwgbWFrZUV2ZW50ZWQpLFxuICBleGVjdXRlLFxuKTtcbiJdfQ==