@leosprograms/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
58 lines • 9.9 kB
JavaScript
/**
* Resolvers for ResourceSpecification fields
*
* @package: HoloREA
* @since: 2019-08-27
*/
import { DEFAULT_VF_MODULES, VfModule } from '../types.js';
import { mapZomeFn } from '../connection.js';
export default (enabledVFModules = DEFAULT_VF_MODULES, dnaConfig, conductorUri) => {
const hasHistory = -1 !== enabledVFModules.indexOf(VfModule.History);
const hasMeasurement = -1 !== enabledVFModules.indexOf(VfModule.Measurement);
const hasIntent = -1 !== enabledVFModules.indexOf(VfModule.Intent);
const hasCommitment = -1 !== enabledVFModules.indexOf(VfModule.Commitment);
const hasObservation = -1 !== enabledVFModules.indexOf(VfModule.Observation);
const readRevision = mapZomeFn(dnaConfig, conductorUri, 'combined', 'resource_specification', 'get_revision');
const queryResources = mapZomeFn(dnaConfig, conductorUri, 'combined', 'indexing', 'query_economic_resources');
const readUnit = mapZomeFn(dnaConfig, conductorUri, 'combined', 'unit', 'get_unit');
return Object.assign((hasObservation ? {
conformingResources: async (record) => {
return await queryResources({ params: { conformsTo: record.id } });
},
economicEvents: () => {
throw new Error('resolver unimplemented');
},
} : {}), (hasCommitment ? {
commitments: () => {
throw new Error('resolver unimplemented');
},
} : {}), (hasIntent ? {
intents: () => {
throw new Error('resolver unimplemented');
},
} : {}), (hasMeasurement ? {
defaultUnitOfResourceId: async (record) => {
if (!record.defaultUnitOfResource) {
return null;
}
return record.defaultUnitOfResource;
},
defaultUnitOfResource: async (record) => {
if (!record.defaultUnitOfResource) {
return null;
}
return (await readUnit({ id: record.defaultUnitOfResource })).unit;
},
defaultUnitOfEffort: async (record) => {
if (!record.defaultUnitOfEffort) {
return null;
}
return (await readUnit({ id: record.defaultUnitOfEffort })).unit;
},
} : {}), (hasHistory ? {
revision: async (record, args) => {
return (await readRevision(args)).resourceSpecification;
},
} : {}));
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VTcGVjaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcmVzb2x2ZXJzL3Jlc291cmNlU3BlY2lmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsUUFBUSxFQUEyQyxNQUFNLGFBQWEsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFZNUMsZUFBZSxDQUFDLG1CQUErQixrQkFBa0IsRUFBRSxTQUF3QixFQUFFLFlBQW9CLEVBQUUsRUFBRTtJQUNuSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzFFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFNUUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUE0QyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUN4SixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQTBELFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFBO0lBQ3RLLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRXZHLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLG1CQUFtQixFQUFFLEtBQUssRUFBRSxNQUE2QixFQUF1QyxFQUFFO1lBQ2hHLE9BQU8sTUFBTSxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNwRSxDQUFDO1FBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNmLFdBQVcsRUFBRSxHQUFHLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzNDLENBQUM7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDWCxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzNDLENBQUM7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQXdELEVBQUUsRUFBRTtZQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQTthQUNaO1lBQ0QsT0FBTyxNQUFNLENBQUMscUJBQXFCLENBQUE7UUFDckMsQ0FBQztRQUNELHFCQUFxQixFQUFFLEtBQUssRUFBRSxNQUF3RCxFQUFFLEVBQUU7WUFDeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRTtnQkFDakMsT0FBTyxJQUFJLENBQUE7YUFDWjtZQUNELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ3BFLENBQUM7UUFDRCxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBc0QsRUFBd0IsRUFBRTtZQUMxRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFO2dCQUMvQixPQUFPLElBQUksQ0FBQTthQUNaO1lBQ0QsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDbEUsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNaLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBNkIsRUFBRSxJQUEyQyxFQUFrQyxFQUFFO1lBQzdILE9BQU8sQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFBO1FBQ3pELENBQUM7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDUixDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvbHZlcnMgZm9yIFJlc291cmNlU3BlY2lmaWNhdGlvbiBmaWVsZHNcbiAqXG4gKiBAcGFja2FnZTogSG9sb1JFQVxuICogQHNpbmNlOiAgIDIwMTktMDgtMjdcbiAqL1xuXG5pbXBvcnQgeyBETkFJZE1hcHBpbmdzLCBERUZBVUxUX1ZGX01PRFVMRVMsIFZmTW9kdWxlLCBCeUlkLCBCeVJldmlzaW9uLCBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy5qcydcbmltcG9ydCB7IG1hcFpvbWVGbiB9IGZyb20gJy4uL2Nvbm5lY3Rpb24uanMnXG5cbmltcG9ydCB7XG4gIE1heWJlLFxuICBFY29ub21pY1Jlc291cmNlQ29ubmVjdGlvbixcbiAgUmVzb3VyY2VTcGVjaWZpY2F0aW9uLFxuICBSZXNvdXJjZVNwZWNpZmljYXRpb25SZXNwb25zZSxcbiAgVW5pdCxcbiAgVW5pdFJlc3BvbnNlLFxufSBmcm9tICdAbGVvc3Byb2dyYW1zL3ZmLWdyYXBocWwnXG5pbXBvcnQgeyBFY29ub21pY1Jlc291cmNlU2VhcmNoSW5wdXQgfSBmcm9tICcuL3pvbWVTZWFyY2hJbnB1dFR5cGVzLmpzJ1xuXG5leHBvcnQgZGVmYXVsdCAoZW5hYmxlZFZGTW9kdWxlczogVmZNb2R1bGVbXSA9IERFRkFVTFRfVkZfTU9EVUxFUywgZG5hQ29uZmlnOiBETkFJZE1hcHBpbmdzLCBjb25kdWN0b3JVcmk6IHN0cmluZykgPT4ge1xuICBjb25zdCBoYXNIaXN0b3J5ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5IaXN0b3J5KVxuICBjb25zdCBoYXNNZWFzdXJlbWVudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuTWVhc3VyZW1lbnQpXG4gIGNvbnN0IGhhc0ludGVudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuSW50ZW50KVxuICBjb25zdCBoYXNDb21taXRtZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5Db21taXRtZW50KVxuICBjb25zdCBoYXNPYnNlcnZhdGlvbiA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuT2JzZXJ2YXRpb24pXG5cbiAgY29uc3QgcmVhZFJldmlzaW9uID0gbWFwWm9tZUZuPEJ5UmV2aXNpb24sIFJlc291cmNlU3BlY2lmaWNhdGlvblJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ2NvbWJpbmVkJywgJ3Jlc291cmNlX3NwZWNpZmljYXRpb24nLCAnZ2V0X3JldmlzaW9uJylcbiAgY29uc3QgcXVlcnlSZXNvdXJjZXMgPSBtYXBab21lRm48RWNvbm9taWNSZXNvdXJjZVNlYXJjaElucHV0LCBFY29ub21pY1Jlc291cmNlQ29ubmVjdGlvbj4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdpbmRleGluZycsICdxdWVyeV9lY29ub21pY19yZXNvdXJjZXMnKVxuICBjb25zdCByZWFkVW5pdCA9IG1hcFpvbWVGbjxCeUlkLCBVbml0UmVzcG9uc2U+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnY29tYmluZWQnLCAndW5pdCcsICdnZXRfdW5pdCcpXG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgKGhhc09ic2VydmF0aW9uID8ge1xuICAgICAgY29uZm9ybWluZ1Jlc291cmNlczogYXN5bmMgKHJlY29yZDogUmVzb3VyY2VTcGVjaWZpY2F0aW9uKTogUHJvbWlzZTxFY29ub21pY1Jlc291cmNlQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlSZXNvdXJjZXMoeyBwYXJhbXM6IHsgY29uZm9ybXNUbzogcmVjb3JkLmlkIH0gfSlcbiAgICAgIH0sXG4gICAgICBlY29ub21pY0V2ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNDb21taXRtZW50ID8ge1xuICAgICAgY29tbWl0bWVudHM6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzSW50ZW50ID8ge1xuICAgICAgaW50ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNNZWFzdXJlbWVudCA/IHtcbiAgICAgIGRlZmF1bHRVbml0T2ZSZXNvdXJjZUlkOiBhc3luYyAocmVjb3JkOiB7IGRlZmF1bHRVbml0T2ZSZXNvdXJjZTogQWRkcmVzc2FibGVJZGVudGlmaWVyIH0pID0+IHtcbiAgICAgICAgaWYgKCFyZWNvcmQuZGVmYXVsdFVuaXRPZlJlc291cmNlKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVjb3JkLmRlZmF1bHRVbml0T2ZSZXNvdXJjZVxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRVbml0T2ZSZXNvdXJjZTogYXN5bmMgKHJlY29yZDogeyBkZWZhdWx0VW5pdE9mUmVzb3VyY2U6IEFkZHJlc3NhYmxlSWRlbnRpZmllciB9KSA9PiB7XG4gICAgICAgIGlmICghcmVjb3JkLmRlZmF1bHRVbml0T2ZSZXNvdXJjZSkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkVW5pdCh7IGlkOiByZWNvcmQuZGVmYXVsdFVuaXRPZlJlc291cmNlIH0pKS51bml0XG4gICAgICB9LFxuICAgICAgZGVmYXVsdFVuaXRPZkVmZm9ydDogYXN5bmMgKHJlY29yZDogeyBkZWZhdWx0VW5pdE9mRWZmb3J0OiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8TWF5YmU8VW5pdD4+ID0+IHtcbiAgICAgICAgaWYgKCFyZWNvcmQuZGVmYXVsdFVuaXRPZkVmZm9ydCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkVW5pdCh7IGlkOiByZWNvcmQuZGVmYXVsdFVuaXRPZkVmZm9ydCB9KSkudW5pdFxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNIaXN0b3J5ID8ge1xuICAgICAgcmV2aXNpb246IGFzeW5jIChyZWNvcmQ6IFJlc291cmNlU3BlY2lmaWNhdGlvbiwgYXJnczogeyByZXZpc2lvbklkOiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8UmVzb3VyY2VTcGVjaWZpY2F0aW9uPiA9PiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgcmVhZFJldmlzaW9uKGFyZ3MpKS5yZXNvdXJjZVNwZWNpZmljYXRpb25cbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgKVxufVxuIl19