UNPKG

@leosprograms/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

72 lines 12.6 kB
/** * Agent queries * * :TODO: wire into Personas hApp and replace generated agent names with serving of profile data * * @package: hREA * @since: 2020-02-19 */ import { injectTypename } from '../types.js'; import { mapZomeFn } from '../connection.js'; export function addAgentTypename(record) { record['__typename'] = record.agentType.toLowerCase() === 'person' ? 'Person' : (record.agentType.toLowerCase() === 'organization' ? 'Organization' : record.agentType); return record; } export default (dnaConfig, conductorUri) => { //assumes there is a link from agentPubKey to a Person entry, but what if link cannot be resolved? const readMyAgent = mapZomeFn(dnaConfig, conductorUri, 'combined', 'agent', 'get_my_agent'); const readAgent = mapZomeFn(dnaConfig, conductorUri, 'combined', 'agent', 'get_agent'); const readAll = mapZomeFn(dnaConfig, conductorUri, 'combined', 'indexing', 'read_all_agents'); const readAllAgentType = mapZomeFn(dnaConfig, conductorUri, 'combined', 'indexing', 'query_agents'); const agentRelationship = () => { throw new Error('query unimplemented'); }; const agentRelationships = () => { throw new Error('query unimplemented'); }; const agentRelationshipRole = () => { throw new Error('query unimplemented'); }; const agentRelationshipRoles = () => { throw new Error('query unimplemented'); }; return { // :TODO: is myAgent always a 'Person' in Holochain, or will we allow users to act in an Organization context directly? myAgent: injectTypename('Person', async (root, args) => { return (await readMyAgent(null)).agent; }), agent: async (root, args) => { return addAgentTypename((await readAgent({ address: args.id })).agent); }, organization: injectTypename('Organization', async (root, args) => { return ((await readAgent({ address: args.id })).agent); // TODO: type check if person or organization and provide error if person }), person: injectTypename('Person', async (root, args) => { return ((await readAgent({ address: args.id })).agent); // TODO: type check if person or organization and provide error if organization }), agents: async (root, args) => { const agents = await readAll(args); return { pageInfo: agents.pageInfo, edges: agents.edges.map(({ cursor, node }) => { return { cursor, node: addAgentTypename(node) }; }) }; }, organizations: async (root, args) => { const agents = await readAllAgentType({ params: { agentType: 'Organization' } }); return agents; }, people: async (root, args) => { const agents = await readAllAgentType({ params: { agentType: 'Person' } }); return agents; }, agentRelationship, agentRelationships, agentRelationshipRole, agentRelationshipRoles, }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9xdWVyaWVzL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQWlCLGNBQWMsRUFBYyxNQUFNLGFBQWEsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFrQyxNQUFNLGtCQUFrQixDQUFBO0FBOEI1RSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBcUI7SUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzlFLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3RGLENBQUE7SUFDRCxPQUFPLE1BQWUsQ0FBQTtBQUN4QixDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQXdCLEVBQUUsWUFBb0IsRUFBRSxFQUFFO0lBRWhFLGtHQUFrRztJQUNsRyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQXNCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNoSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQW9DLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUN6SCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQXdDLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BJLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFvQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFFdEksTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ3hDLENBQUMsQ0FBQTtJQUNELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUN4QyxDQUFDLENBQUE7SUFDRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDeEMsQ0FBQyxDQUFBO0lBQ0QsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUU7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ3hDLENBQUMsQ0FBQTtJQUVELE9BQU87UUFDTCx1SEFBdUg7UUFDdkgsT0FBTyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQWtCLEVBQUU7WUFDckUsT0FBTyxDQUFDLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO1FBQ3hDLENBQUMsQ0FBQztRQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBa0IsRUFBRTtZQUMxQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RSxDQUFDO1FBQ0QsWUFBWSxFQUFFLGNBQWMsQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQXlCLEVBQUU7WUFDdkYsT0FBTyxDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQWlCLENBQUE7WUFDdEUseUVBQXlFO1FBQzNFLENBQUMsQ0FBQztRQUNGLE1BQU0sRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFtQixFQUFFO1lBQ3JFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFXLENBQUE7WUFDaEUsK0VBQStFO1FBQ2pGLENBQUMsQ0FBQztRQUNGLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQWtCLEVBQTRCLEVBQUU7WUFDbkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbEMsT0FBTztnQkFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7b0JBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7Z0JBQ2pELENBQUMsQ0FBQzthQUNnQixDQUFBO1FBQ3RCLENBQUM7UUFDRCxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFrQixFQUFtQyxFQUFFO1lBQ2pGLE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ2hGLE9BQVEsTUFBaUMsQ0FBQTtRQUMzQyxDQUFDO1FBQ0QsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBa0IsRUFBNkIsRUFBRTtZQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUMxRSxPQUFRLE1BQTJCLENBQUE7UUFDckMsQ0FBQztRQUNELGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIscUJBQXFCO1FBQ3JCLHNCQUFzQjtLQUN2QixDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZ2VudCBxdWVyaWVzXG4gKlxuICogOlRPRE86IHdpcmUgaW50byBQZXJzb25hcyBoQXBwIGFuZCByZXBsYWNlIGdlbmVyYXRlZCBhZ2VudCBuYW1lcyB3aXRoIHNlcnZpbmcgb2YgcHJvZmlsZSBkYXRhXG4gKlxuICogQHBhY2thZ2U6IGhSRUFcbiAqIEBzaW5jZTogICAyMDIwLTAyLTE5XG4gKi9cblxuaW1wb3J0IHsgRE5BSWRNYXBwaW5ncywgaW5qZWN0VHlwZW5hbWUsIFJlYWRQYXJhbXMgfSBmcm9tICcuLi90eXBlcy5qcydcbmltcG9ydCB7IG1hcFpvbWVGbiwgc2VyaWFsaXplSGFzaCwgZGVzZXJpYWxpemVIYXNoIH0gZnJvbSAnLi4vY29ubmVjdGlvbi5qcydcblxuaW1wb3J0IHtcbiAgQWNjb3VudGluZ1Njb3BlLFxuICBBZ2VudCxcbiAgQWdlbnRDb25uZWN0aW9uLFxuICBBZ2VudEVkZ2UsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uQ29ubmVjdGlvbixcbiAgUGVyc29uLFxuICBQZXJzb25Db25uZWN0aW9uXG59IGZyb20gJ0BsZW9zcHJvZ3JhbXMvdmYtZ3JhcGhxbCdcbmltcG9ydCB7IEFnZW50UHViS2V5IH0gZnJvbSAnQGhvbG9jaGFpbi9jbGllbnQnXG5pbXBvcnQgeyBBZ2VudFJlc3BvbnNlIH0gZnJvbSAnLi4vbXV0YXRpb25zL2FnZW50J1xuaW1wb3J0IHsgQWdlbnRTZWFyY2hJbnB1dCwgUGFnaW5nUGFyYW1zIH0gZnJvbSAnLi4vcmVzb2x2ZXJzL3pvbWVTZWFyY2hJbnB1dFR5cGVzLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJhdGlvblF1ZXJ5UGFyYW1zIHtcbiAgcHViS2V5OiBBZ2VudFB1YktleSxcbn1cbmV4cG9ydCB0eXBlIEFnZW50V2l0aFR5cGUgPSBBZ2VudCAmIHsgYWdlbnRUeXBlOiBzdHJpbmcgfVxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdpdGhUeXBlUmVzcG9uc2Uge1xuICBhZ2VudDogQWdlbnRXaXRoVHlwZVxufVxuZXhwb3J0IGludGVyZmFjZSBBZ2VudEVkZ2VXaXRoVHlwZUVkZ2UgZXh0ZW5kcyBPbWl0PEFnZW50RWRnZSwgJ25vZGUnPiB7XG4gIG5vZGU6IEFnZW50V2l0aFR5cGVcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb25uZWN0aW9uV2l0aFR5cGUgZXh0ZW5kcyBPbWl0PEFnZW50Q29ubmVjdGlvbiwgJ2VkZ2VzJz4ge1xuICBlZGdlczogQWdlbnRFZGdlV2l0aFR5cGVFZGdlW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFnZW50VHlwZW5hbWUocmVjb3JkOiBBZ2VudFdpdGhUeXBlKSB7XG4gIHJlY29yZFsnX190eXBlbmFtZSddID0gcmVjb3JkLmFnZW50VHlwZS50b0xvd2VyQ2FzZSgpID09PSAncGVyc29uJyA/ICdQZXJzb24nIDogKFxuICAgIHJlY29yZC5hZ2VudFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ29yZ2FuaXphdGlvbicgPyAnT3JnYW5pemF0aW9uJyA6IHJlY29yZC5hZ2VudFR5cGVcbiAgKVxuICByZXR1cm4gcmVjb3JkIGFzIEFnZW50XG59XG5cbmV4cG9ydCBkZWZhdWx0IChkbmFDb25maWc6IEROQUlkTWFwcGluZ3MsIGNvbmR1Y3RvclVyaTogc3RyaW5nKSA9PiB7XG5cbiAgLy9hc3N1bWVzIHRoZXJlIGlzIGEgbGluayBmcm9tIGFnZW50UHViS2V5IHRvIGEgUGVyc29uIGVudHJ5LCBidXQgd2hhdCBpZiBsaW5rIGNhbm5vdCBiZSByZXNvbHZlZD9cbiAgY29uc3QgcmVhZE15QWdlbnQgPSBtYXBab21lRm48bnVsbCwgQWdlbnRSZXNwb25zZT4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdhZ2VudCcsICdnZXRfbXlfYWdlbnQnKVxuICBjb25zdCByZWFkQWdlbnQgPSBtYXBab21lRm48UmVhZFBhcmFtcywgQWdlbnRXaXRoVHlwZVJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ2NvbWJpbmVkJywgJ2FnZW50JywgJ2dldF9hZ2VudCcpXG4gIGNvbnN0IHJlYWRBbGwgPSBtYXBab21lRm48UGFnaW5nUGFyYW1zLCBBZ2VudENvbm5lY3Rpb25XaXRoVHlwZT4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdpbmRleGluZycsICdyZWFkX2FsbF9hZ2VudHMnKVxuICBjb25zdCByZWFkQWxsQWdlbnRUeXBlID0gbWFwWm9tZUZuPEFnZW50U2VhcmNoSW5wdXQsIEFnZW50Q29ubmVjdGlvbj4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdpbmRleGluZycsICdxdWVyeV9hZ2VudHMnKVxuXG4gIGNvbnN0IGFnZW50UmVsYXRpb25zaGlwID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgdW5pbXBsZW1lbnRlZCcpXG4gIH1cbiAgY29uc3QgYWdlbnRSZWxhdGlvbnNoaXBzID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgdW5pbXBsZW1lbnRlZCcpXG4gIH1cbiAgY29uc3QgYWdlbnRSZWxhdGlvbnNoaXBSb2xlID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgdW5pbXBsZW1lbnRlZCcpXG4gIH1cbiAgY29uc3QgYWdlbnRSZWxhdGlvbnNoaXBSb2xlcyA9ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5IHVuaW1wbGVtZW50ZWQnKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyA6VE9ETzogaXMgbXlBZ2VudCBhbHdheXMgYSAnUGVyc29uJyBpbiBIb2xvY2hhaW4sIG9yIHdpbGwgd2UgYWxsb3cgdXNlcnMgdG8gYWN0IGluIGFuIE9yZ2FuaXphdGlvbiBjb250ZXh0IGRpcmVjdGx5P1xuICAgIG15QWdlbnQ6IGluamVjdFR5cGVuYW1lKCdQZXJzb24nLCBhc3luYyAocm9vdCwgYXJncyk6IFByb21pc2U8QWdlbnQ+ID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgcmVhZE15QWdlbnQobnVsbCkpLmFnZW50XG4gICAgfSksXG4gICAgYWdlbnQ6IGFzeW5jIChyb290LCBhcmdzKTogUHJvbWlzZTxBZ2VudD4gPT4ge1xuICAgICAgcmV0dXJuIGFkZEFnZW50VHlwZW5hbWUoKGF3YWl0IHJlYWRBZ2VudCh7IGFkZHJlc3M6IGFyZ3MuaWQgfSkpLmFnZW50KVxuICAgIH0sXG4gICAgb3JnYW5pemF0aW9uOiBpbmplY3RUeXBlbmFtZSgnT3JnYW5pemF0aW9uJywgYXN5bmMgKHJvb3QsIGFyZ3MpOiBQcm9taXNlPE9yZ2FuaXphdGlvbj4gPT4ge1xuICAgICAgcmV0dXJuICgoYXdhaXQgcmVhZEFnZW50KHsgYWRkcmVzczogYXJncy5pZCB9KSkuYWdlbnQpIGFzIE9yZ2FuaXphdGlvblxuICAgICAgLy8gVE9ETzogdHlwZSBjaGVjayBpZiBwZXJzb24gb3Igb3JnYW5pemF0aW9uIGFuZCBwcm92aWRlIGVycm9yIGlmIHBlcnNvblxuICAgIH0pLFxuICAgIHBlcnNvbjogaW5qZWN0VHlwZW5hbWUoJ1BlcnNvbicsIGFzeW5jIChyb290LCBhcmdzKTogUHJvbWlzZTxQZXJzb24+ID0+IHtcbiAgICAgIHJldHVybiAoKGF3YWl0IHJlYWRBZ2VudCh7IGFkZHJlc3M6IGFyZ3MuaWQgfSkpLmFnZW50KSBhcyBQZXJzb25cbiAgICAgIC8vIFRPRE86IHR5cGUgY2hlY2sgaWYgcGVyc29uIG9yIG9yZ2FuaXphdGlvbiBhbmQgcHJvdmlkZSBlcnJvciBpZiBvcmdhbml6YXRpb25cbiAgICB9KSxcbiAgICBhZ2VudHM6IGFzeW5jIChyb290LCBhcmdzOiBQYWdpbmdQYXJhbXMpOiBQcm9taXNlPEFnZW50Q29ubmVjdGlvbj4gPT4ge1xuICAgICAgY29uc3QgYWdlbnRzID0gYXdhaXQgcmVhZEFsbChhcmdzKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZUluZm86IGFnZW50cy5wYWdlSW5mbyxcbiAgICAgICAgZWRnZXM6IGFnZW50cy5lZGdlcy5tYXAoKHsgY3Vyc29yLCBub2RlIH0pID0+IHtcbiAgICAgICAgICByZXR1cm4geyBjdXJzb3IsIG5vZGU6IGFkZEFnZW50VHlwZW5hbWUobm9kZSkgfVxuICAgICAgICB9KVxuICAgICAgfSBhcyBBZ2VudENvbm5lY3Rpb25cbiAgICB9LFxuICAgIG9yZ2FuaXphdGlvbnM6IGFzeW5jIChyb290LCBhcmdzOiBQYWdpbmdQYXJhbXMpOiBQcm9taXNlPE9yZ2FuaXphdGlvbkNvbm5lY3Rpb24+ID0+IHtcbiAgICAgIGNvbnN0IGFnZW50cyA9IGF3YWl0IHJlYWRBbGxBZ2VudFR5cGUoeyBwYXJhbXM6IHsgYWdlbnRUeXBlOiAnT3JnYW5pemF0aW9uJyB9IH0pXG4gICAgICByZXR1cm4gKGFnZW50cyBhcyBPcmdhbml6YXRpb25Db25uZWN0aW9uKVxuICAgIH0sXG4gICAgcGVvcGxlOiBhc3luYyAocm9vdCwgYXJnczogUGFnaW5nUGFyYW1zKTogUHJvbWlzZTxQZXJzb25Db25uZWN0aW9uPiA9PiB7XG4gICAgICBjb25zdCBhZ2VudHMgPSBhd2FpdCByZWFkQWxsQWdlbnRUeXBlKHsgcGFyYW1zOiB7IGFnZW50VHlwZTogJ1BlcnNvbicgfSB9KVxuICAgICAgcmV0dXJuIChhZ2VudHMgYXMgUGVyc29uQ29ubmVjdGlvbilcbiAgICB9LFxuICAgIGFnZW50UmVsYXRpb25zaGlwLFxuICAgIGFnZW50UmVsYXRpb25zaGlwcyxcbiAgICBhZ2VudFJlbGF0aW9uc2hpcFJvbGUsXG4gICAgYWdlbnRSZWxhdGlvbnNoaXBSb2xlcyxcbiAgfVxufVxuIl19