aquameta-datum
Version:
Service layer for the Aquameta database API
92 lines (78 loc) • 10.9 kB
JavaScript
import { __ } from 'ramda';
import { addArg, addNestedArrayArg, addOrder, addWhere } from './args.js';
export 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
export 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)
*/
export const where = addWhere('=');
export const whereEquals = where;
export const whereNot = addWhere('<>');
export const whereNotEquals = whereNot;
export const whereGt = addWhere('>');
export const whereGte = addWhere('>=');
export const whereLt = addWhere('<');
export const whereLte = addWhere('<=');
export const whereIn = addWhere('in');
export const whereNotIn = addWhere('not in');
export const whereLike = addWhere('like');
export const whereNotLike = addWhere('not like');
export const whereSimilarTo = addWhere('similar to');
export const whereNotSimilarTo = addWhere('not similar to'); // $FlowFixMe
export const whereNull = addWhere('is', __, null); // $FlowFixMe
export const whereNotNull = addWhere('is not', __, null);
export const order = addOrder;
export const orderBy = order;
export const orderByAsc = addOrder('asc');
export const orderByDesc = addOrder('desc'); // export const orderByRandom = addOrder('random()'); // TODO: not supported by endpoint.request
export const limit = addArg('limit');
export const offset = addArg('offset');
export const evented = addArg('evented');
export const metaData = addArg('metaData');
export const exclude = addNestedArrayArg('exclude');
export const excludeColumn = exclude;
export const include = addNestedArrayArg('include');
export const includeColumn = include;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNoYWluYWJsZS5qcyJdLCJuYW1lcyI6WyJfXyIsImFkZEFyZyIsImFkZE5lc3RlZEFycmF5QXJnIiwiYWRkT3JkZXIiLCJhZGRXaGVyZSIsInJlbGF0aW9uIiwibmFtZSIsIkVycm9yIiwic2NoZW1hTmFtZSIsInJlbGF0aW9uTmFtZSIsInNwbGl0IiwicXVhbGlmaWVkIiwidXJsIiwiYXJncyIsImZuIiwiZm5OYW1lIiwiZm5BcmdzIiwiQXJyYXkiLCJpc0FycmF5IiwidmFscyIsImt3YXJncyIsIlR5cGVFcnJvciIsIndoZXJlIiwid2hlcmVFcXVhbHMiLCJ3aGVyZU5vdCIsIndoZXJlTm90RXF1YWxzIiwid2hlcmVHdCIsIndoZXJlR3RlIiwid2hlcmVMdCIsIndoZXJlTHRlIiwid2hlcmVJbiIsIndoZXJlTm90SW4iLCJ3aGVyZUxpa2UiLCJ3aGVyZU5vdExpa2UiLCJ3aGVyZVNpbWlsYXJUbyIsIndoZXJlTm90U2ltaWxhclRvIiwid2hlcmVOdWxsIiwid2hlcmVOb3ROdWxsIiwib3JkZXIiLCJvcmRlckJ5Iiwib3JkZXJCeUFzYyIsIm9yZGVyQnlEZXNjIiwibGltaXQiLCJvZmZzZXQiLCJldmVudGVkIiwibWV0YURhdGEiLCJleGNsdWRlIiwiZXhjbHVkZUNvbHVtbiIsImluY2x1ZGUiLCJpbmNsdWRlQ29sdW1uIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFRQSxFQUFSLFFBQWlCLE9BQWpCO0FBQ0EsU0FBUUMsTUFBUixFQUFnQkMsaUJBQWhCLEVBQW1DQyxRQUFuQyxFQUE2Q0MsUUFBN0MsUUFBNEQsV0FBNUQ7QUFHQSxPQUFPLFNBQVNDLFFBQVQsQ0FBa0JDLElBQWxCLEVBQTBDO0FBQy9DLE1BQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1QsVUFBTSxJQUFJQyxLQUFKLENBQVUsMkNBQVYsQ0FBTjtBQUNEOztBQUVELE1BQUksQ0FBQ0MsVUFBRCxFQUFhQyxZQUFiLElBQTZCSCxJQUFJLENBQUNJLEtBQUwsQ0FBVyxHQUFYLENBQWpDOztBQUNBLE1B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MUIsQyxDQUNQOztBQUNBLE9BQU8sTUFBTXFDLFlBQVksR0FBR2pDLFFBQVEsQ0FBQyxRQUFELEVBQVdKLEVBQVgsRUFBZSxJQUFmLENBQTdCO0FBRVAsT0FBTyxNQUFNc0MsS0FBSyxHQUFHbkMsUUFBZDtBQUNQLE9BQU8sTUFBTW9DLE9BQU8sR0FBR0QsS0FBaEI7QUFDUCxPQUFPLE1BQU1FLFVBQVUsR0FBR3JDLFFBQVEsQ0FBQyxLQUFELENBQTNCO0FBQ1AsT0FBTyxNQUFNc0MsV0FBVyxHQUFHdEMsUUFBUSxDQUFDLE1BQUQsQ0FBNUIsQyxDQUNQOztBQUVBLE9BQU8sTUFBTXVDLEtBQUssR0FBR3pDLE1BQU0sQ0FBQyxPQUFELENBQXBCO0FBQ1AsT0FBTyxNQUFNMEMsTUFBTSxHQUFHMUMsTUFBTSxDQUFDLFFBQUQsQ0FBckI7QUFDUCxPQUFPLE1BQU0yQyxPQUFPLEdBQUczQyxNQUFNLENBQUMsU0FBRCxDQUF0QjtBQUNQLE9BQU8sTUFBTTRDLFFBQVEsR0FBRzVDLE1BQU0sQ0FBQyxVQUFELENBQXZCO0FBRVAsT0FBTyxNQUFNNkMsT0FBTyxHQUFHNUMsaUJBQWlCLENBQUMsU0FBRCxDQUFqQztBQUNQLE9BQU8sTUFBTTZDLGFBQWEsR0FBR0QsT0FBdEI7QUFDUCxPQUFPLE1BQU1FLE9BQU8sR0FBRzlDLGlCQUFpQixDQUFDLFNBQUQsQ0FBakM7QUFDUCxPQUFPLE1BQU0rQyxhQUFhLEdBQUdELE9BQXRCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcblxuaW1wb3J0IHtfX30gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHthZGRBcmcsIGFkZE5lc3RlZEFycmF5QXJnLCBhZGRPcmRlciwgYWRkV2hlcmV9IGZyb20gJy4vYXJncy5qcyc7XG5pbXBvcnQgdHlwZSB7Rm4sIFJlbGF0aW9ufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGlvbihuYW1lOiBzdHJpbmcpOiBSZWxhdGlvbiB7XG4gIGlmICghbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVsYXRpb246IHJlbGF0aW9uIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGxldCBbc2NoZW1hTmFtZSwgcmVsYXRpb25OYW1lXSA9IG5hbWUuc3BsaXQoJy4nKTtcbiAgaWYgKCFyZWxhdGlvbk5hbWUpIHtcbiAgICByZWxhdGlvbk5hbWUgPSBzY2hlbWFOYW1lO1xuICAgIHNjaGVtYU5hbWUgPSAncHVibGljJztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NoZW1hTmFtZSxcbiAgICByZWxhdGlvbk5hbWUsXG4gICAgcXVhbGlmaWVkOiBgJHtzY2hlbWFOYW1lfS4ke3JlbGF0aW9uTmFtZX1gLFxuICAgIHVybDogYHJlbGF0aW9uLyR7c2NoZW1hTmFtZX0vJHtyZWxhdGlvbk5hbWV9YCxcbiAgICBhcmdzOiB7fSxcbiAgfTtcbn1cblxuLy8gVE9ET1xuZXhwb3J0IGZ1bmN0aW9uIGZuKG5hbWU6IHN0cmluZywgYXJnczogQXJyYXk8c3RyaW5nPiB8IHtbc3RyaW5nXTogbWl4ZWR9KTogRm4ge1xuICBpZiAoIW5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZuOiBmdW5jdGlvbiBuYW1lIG11c3QgYmUgc3BlY2lmaWVkJyk7XG4gIH1cblxuICBsZXQgW3NjaGVtYU5hbWUsIGZuTmFtZV0gPSBuYW1lLnNwbGl0KCcuJyk7XG4gIGlmICghZm5OYW1lKSB7XG4gICAgZm5OYW1lID0gc2NoZW1hTmFtZTtcbiAgICBzY2hlbWFOYW1lID0gJ3B1YmxpYyc7XG4gIH1cblxuICBjb25zdCBmbkFyZ3MgPSB7fTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJncykpIHtcbiAgICBmbkFyZ3MudmFscyA9IGFyZ3M7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgZm5BcmdzLmt3YXJncyA9IGFyZ3M7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm46IGFyZ3MgbXVzdCBiZSBBcnJheTxzdHJpbmc+IG9yIE9iamVjdCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzY2hlbWFOYW1lLFxuICAgIGZuTmFtZSxcbiAgICBxdWFsaWZpZWQ6IGAke3NjaGVtYU5hbWV9LiR7Zm5OYW1lfWAsXG4gICAgdXJsOiBgZnVuY3Rpb24vJHtzY2hlbWFOYW1lfS8ke2ZuTmFtZX1gLFxuICAgIGFyZ3M6IHthcmdzOiBbZm5BcmdzXX0sIC8vIFRoaXMgaXMgYW4gYXJyYXkgaW4gZW5kcG9pbnQgZnVuY3Rpb25zXG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyB0byBwZXJmb3JtIG9uIGNoYWluYWJsZSAocmV0dXJuZWQgZnJvbSByZWxhdGlvbilcbiAqL1xuZXhwb3J0IGNvbnN0IHdoZXJlID0gYWRkV2hlcmUoJz0nKTtcbmV4cG9ydCBjb25zdCB3aGVyZUVxdWFscyA9IHdoZXJlO1xuZXhwb3J0IGNvbnN0IHdoZXJlTm90ID0gYWRkV2hlcmUoJzw+Jyk7XG5leHBvcnQgY29uc3Qgd2hlcmVOb3RFcXVhbHMgPSB3aGVyZU5vdDtcbmV4cG9ydCBjb25zdCB3aGVyZUd0ID0gYWRkV2hlcmUoJz4nKTtcbmV4cG9ydCBjb25zdCB3aGVyZUd0ZSA9IGFkZFdoZXJlKCc+PScpO1xuZXhwb3J0IGNvbnN0IHdoZXJlTHQgPSBhZGRXaGVyZSgnPCcpO1xuZXhwb3J0IGNvbnN0IHdoZXJlTHRlID0gYWRkV2hlcmUoJzw9Jyk7XG5leHBvcnQgY29uc3Qgd2hlcmVJbiA9IGFkZFdoZXJlKCdpbicpO1xuZXhwb3J0IGNvbnN0IHdoZXJlTm90SW4gPSBhZGRXaGVyZSgnbm90IGluJyk7XG5leHBvcnQgY29uc3Qgd2hlcmVMaWtlID0gYWRkV2hlcmUoJ2xpa2UnKTtcbmV4cG9ydCBjb25zdCB3aGVyZU5vdExpa2UgPSBhZGRXaGVyZSgnbm90IGxpa2UnKTtcbmV4cG9ydCBjb25zdCB3aGVyZVNpbWlsYXJUbyA9IGFkZFdoZXJlKCdzaW1pbGFyIHRvJyk7XG5leHBvcnQgY29uc3Qgd2hlcmVOb3RTaW1pbGFyVG8gPSBhZGRXaGVyZSgnbm90IHNpbWlsYXIgdG8nKTtcbi8vICRGbG93Rml4TWVcbmV4cG9ydCBjb25zdCB3aGVyZU51bGwgPSBhZGRXaGVyZSgnaXMnLCBfXywgbnVsbCk7XG4vLyAkRmxvd0ZpeE1lXG5leHBvcnQgY29uc3Qgd2hlcmVOb3ROdWxsID0gYWRkV2hlcmUoJ2lzIG5vdCcsIF9fLCBudWxsKTtcblxuZXhwb3J0IGNvbnN0IG9yZGVyID0gYWRkT3JkZXI7XG5leHBvcnQgY29uc3Qgb3JkZXJCeSA9IG9yZGVyO1xuZXhwb3J0IGNvbnN0IG9yZGVyQnlBc2MgPSBhZGRPcmRlcignYXNjJyk7XG5leHBvcnQgY29uc3Qgb3JkZXJCeURlc2MgPSBhZGRPcmRlcignZGVzYycpO1xuLy8gZXhwb3J0IGNvbnN0IG9yZGVyQnlSYW5kb20gPSBhZGRPcmRlcigncmFuZG9tKCknKTsgLy8gVE9ETzogbm90IHN1cHBvcnRlZCBieSBlbmRwb2ludC5yZXF1ZXN0XG5cbmV4cG9ydCBjb25zdCBsaW1pdCA9IGFkZEFyZygnbGltaXQnKTtcbmV4cG9ydCBjb25zdCBvZmZzZXQgPSBhZGRBcmcoJ29mZnNldCcpO1xuZXhwb3J0IGNvbnN0IGV2ZW50ZWQgPSBhZGRBcmcoJ2V2ZW50ZWQnKTtcbmV4cG9ydCBjb25zdCBtZXRhRGF0YSA9IGFkZEFyZygnbWV0YURhdGEnKTtcblxuZXhwb3J0IGNvbnN0IGV4Y2x1ZGUgPSBhZGROZXN0ZWRBcnJheUFyZygnZXhjbHVkZScpO1xuZXhwb3J0IGNvbnN0IGV4Y2x1ZGVDb2x1bW4gPSBleGNsdWRlO1xuZXhwb3J0IGNvbnN0IGluY2x1ZGUgPSBhZGROZXN0ZWRBcnJheUFyZygnaW5jbHVkZScpO1xuZXhwb3J0IGNvbnN0IGluY2x1ZGVDb2x1bW4gPSBpbmNsdWRlO1xuIl19