@valueflows/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
52 lines • 9.24 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, 'specification', 'resource_specification', 'get_revision');
const queryResources = mapZomeFn(dnaConfig, conductorUri, 'observation', 'economic_resource_index', 'query_economic_resources');
const readUnit = mapZomeFn(dnaConfig, conductorUri, 'specification', '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 ? {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VTcGVjaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcmVzb2x2ZXJzL3Jlc291cmNlU3BlY2lmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsUUFBUSxFQUEyQyxNQUFNLGFBQWEsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFZNUMsZUFBZSxDQUFDLG1CQUErQixrQkFBa0IsRUFBRSxTQUF3QixFQUFFLFlBQW9CLEVBQUUsRUFBRTtJQUNuSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzFFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFNUUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUE0QyxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUM3SixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQTBELFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixDQUFDLENBQUE7SUFDeEwsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFNUcsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLE1BQTZCLEVBQXVDLEVBQUU7WUFDaEcsT0FBTyxNQUFNLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFDRCxjQUFjLEVBQUUsR0FBRyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUMzQyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ1AsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2YsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNYLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDM0MsQ0FBQztLQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNQLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoQixxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBd0QsRUFBRSxFQUFFO1lBQ3hGLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUU7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNwRSxDQUFDO1FBQ0QsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLE1BQXNELEVBQXdCLEVBQUU7WUFDMUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUE7YUFDWjtZQUNELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ2xFLENBQUM7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDWixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQTZCLEVBQUUsSUFBMkMsRUFBa0MsRUFBRTtZQUM3SCxPQUFPLENBQUMsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQTtRQUN6RCxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ1IsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZXJzIGZvciBSZXNvdXJjZVNwZWNpZmljYXRpb24gZmllbGRzXG4gKlxuICogQHBhY2thZ2U6IEhvbG9SRUFcbiAqIEBzaW5jZTogICAyMDE5LTA4LTI3XG4gKi9cblxuaW1wb3J0IHsgRE5BSWRNYXBwaW5ncywgREVGQVVMVF9WRl9NT0RVTEVTLCBWZk1vZHVsZSwgQnlJZCwgQnlSZXZpc2lvbiwgQWRkcmVzc2FibGVJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMuanMnXG5pbXBvcnQgeyBtYXBab21lRm4gfSBmcm9tICcuLi9jb25uZWN0aW9uLmpzJ1xuXG5pbXBvcnQge1xuICBNYXliZSxcbiAgRWNvbm9taWNSZXNvdXJjZUNvbm5lY3Rpb24sXG4gIFJlc291cmNlU3BlY2lmaWNhdGlvbixcbiAgUmVzb3VyY2VTcGVjaWZpY2F0aW9uUmVzcG9uc2UsXG4gIFVuaXQsXG4gIFVuaXRSZXNwb25zZSxcbn0gZnJvbSAnQHZhbHVlZmxvd3MvdmYtZ3JhcGhxbCdcbmltcG9ydCB7IEVjb25vbWljUmVzb3VyY2VTZWFyY2hJbnB1dCB9IGZyb20gJy4vem9tZVNlYXJjaElucHV0VHlwZXMuanMnXG5cbmV4cG9ydCBkZWZhdWx0IChlbmFibGVkVkZNb2R1bGVzOiBWZk1vZHVsZVtdID0gREVGQVVMVF9WRl9NT0RVTEVTLCBkbmFDb25maWc6IEROQUlkTWFwcGluZ3MsIGNvbmR1Y3RvclVyaTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGhhc0hpc3RvcnkgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkhpc3RvcnkpXG4gIGNvbnN0IGhhc01lYXN1cmVtZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5NZWFzdXJlbWVudClcbiAgY29uc3QgaGFzSW50ZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5JbnRlbnQpXG4gIGNvbnN0IGhhc0NvbW1pdG1lbnQgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkNvbW1pdG1lbnQpXG4gIGNvbnN0IGhhc09ic2VydmF0aW9uID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5PYnNlcnZhdGlvbilcblxuICBjb25zdCByZWFkUmV2aXNpb24gPSBtYXBab21lRm48QnlSZXZpc2lvbiwgUmVzb3VyY2VTcGVjaWZpY2F0aW9uUmVzcG9uc2U+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnc3BlY2lmaWNhdGlvbicsICdyZXNvdXJjZV9zcGVjaWZpY2F0aW9uJywgJ2dldF9yZXZpc2lvbicpXG4gIGNvbnN0IHF1ZXJ5UmVzb3VyY2VzID0gbWFwWm9tZUZuPEVjb25vbWljUmVzb3VyY2VTZWFyY2hJbnB1dCwgRWNvbm9taWNSZXNvdXJjZUNvbm5lY3Rpb24+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnb2JzZXJ2YXRpb24nLCAnZWNvbm9taWNfcmVzb3VyY2VfaW5kZXgnLCAncXVlcnlfZWNvbm9taWNfcmVzb3VyY2VzJylcbiAgY29uc3QgcmVhZFVuaXQgPSBtYXBab21lRm48QnlJZCwgVW5pdFJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ3NwZWNpZmljYXRpb24nLCAndW5pdCcsICdnZXRfdW5pdCcpXG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgKGhhc09ic2VydmF0aW9uID8ge1xuICAgICAgY29uZm9ybWluZ1Jlc291cmNlczogYXN5bmMgKHJlY29yZDogUmVzb3VyY2VTcGVjaWZpY2F0aW9uKTogUHJvbWlzZTxFY29ub21pY1Jlc291cmNlQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlSZXNvdXJjZXMoeyBwYXJhbXM6IHsgY29uZm9ybXNUbzogcmVjb3JkLmlkIH0gfSlcbiAgICAgIH0sXG4gICAgICBlY29ub21pY0V2ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNDb21taXRtZW50ID8ge1xuICAgICAgY29tbWl0bWVudHM6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzSW50ZW50ID8ge1xuICAgICAgaW50ZW50czogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNNZWFzdXJlbWVudCA/IHtcbiAgICAgIGRlZmF1bHRVbml0T2ZSZXNvdXJjZTogYXN5bmMgKHJlY29yZDogeyBkZWZhdWx0VW5pdE9mUmVzb3VyY2U6IEFkZHJlc3NhYmxlSWRlbnRpZmllciB9KSA9PiB7XG4gICAgICAgIGlmICghcmVjb3JkLmRlZmF1bHRVbml0T2ZSZXNvdXJjZSkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkVW5pdCh7IGlkOiByZWNvcmQuZGVmYXVsdFVuaXRPZlJlc291cmNlIH0pKS51bml0XG4gICAgICB9LFxuICAgICAgZGVmYXVsdFVuaXRPZkVmZm9ydDogYXN5bmMgKHJlY29yZDogeyBkZWZhdWx0VW5pdE9mRWZmb3J0OiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8TWF5YmU8VW5pdD4+ID0+IHtcbiAgICAgICAgaWYgKCFyZWNvcmQuZGVmYXVsdFVuaXRPZkVmZm9ydCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkVW5pdCh7IGlkOiByZWNvcmQuZGVmYXVsdFVuaXRPZkVmZm9ydCB9KSkudW5pdFxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNIaXN0b3J5ID8ge1xuICAgICAgcmV2aXNpb246IGFzeW5jIChyZWNvcmQ6IFJlc291cmNlU3BlY2lmaWNhdGlvbiwgYXJnczogeyByZXZpc2lvbklkOiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8UmVzb3VyY2VTcGVjaWZpY2F0aW9uPiA9PiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgcmVhZFJldmlzaW9uKGFyZ3MpKS5yZXNvdXJjZVNwZWNpZmljYXRpb25cbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgKVxufVxuIl19