UNPKG

@valueflows/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, 'agent', 'agent', 'get_my_agent'); const readAgent = mapZomeFn(dnaConfig, conductorUri, 'agent', 'agent', 'get_agent'); const readAll = mapZomeFn(dnaConfig, conductorUri, 'agent', 'agent_index', 'read_all_agents'); const readAllAgentType = mapZomeFn(dnaConfig, conductorUri, 'agent', 'agent_index', '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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9xdWVyaWVzL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQWlCLGNBQWMsRUFBYyxNQUFNLGFBQWEsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFrQyxNQUFNLGtCQUFrQixDQUFBO0FBOEI1RSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBcUI7SUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzlFLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3RGLENBQUE7SUFDRCxPQUFPLE1BQWUsQ0FBQTtBQUN4QixDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQXdCLEVBQUUsWUFBb0IsRUFBRSxFQUFFO0lBRWhFLGtHQUFrRztJQUNsRyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQXNCLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUM3RyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQW9DLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUN0SCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQXdDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BJLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFvQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFFdEks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QUNELGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIscUJBQXFCO1FBQ3JCLHNCQUFzQjtLQUN2QixDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZ2VudCBxdWVyaWVzXG4gKlxuICogOlRPRE86IHdpcmUgaW50byBQZXJzb25hcyBoQXBwIGFuZCByZXBsYWNlIGdlbmVyYXRlZCBhZ2VudCBuYW1lcyB3aXRoIHNlcnZpbmcgb2YgcHJvZmlsZSBkYXRhXG4gKlxuICogQHBhY2thZ2U6IGhSRUFcbiAqIEBzaW5jZTogICAyMDIwLTAyLTE5XG4gKi9cblxuaW1wb3J0IHsgRE5BSWRNYXBwaW5ncywgaW5qZWN0VHlwZW5hbWUsIFJlYWRQYXJhbXMgfSBmcm9tICcuLi90eXBlcy5qcydcbmltcG9ydCB7IG1hcFpvbWVGbiwgc2VyaWFsaXplSGFzaCwgZGVzZXJpYWxpemVIYXNoIH0gZnJvbSAnLi4vY29ubmVjdGlvbi5qcydcblxuaW1wb3J0IHtcbiAgQWNjb3VudGluZ1Njb3BlLFxuICBBZ2VudCxcbiAgQWdlbnRDb25uZWN0aW9uLFxuICBBZ2VudEVkZ2UsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uQ29ubmVjdGlvbixcbiAgUGVyc29uLFxuICBQZXJzb25Db25uZWN0aW9uXG59IGZyb20gJ0B2YWx1ZWZsb3dzL3ZmLWdyYXBocWwnXG5pbXBvcnQgeyBBZ2VudFB1YktleSB9IGZyb20gJ0Bob2xvY2hhaW4vY2xpZW50J1xuaW1wb3J0IHsgQWdlbnRSZXNwb25zZSB9IGZyb20gJy4uL211dGF0aW9ucy9hZ2VudCdcbmltcG9ydCB7IEFnZW50U2VhcmNoSW5wdXQsIFBhZ2luZ1BhcmFtcyB9IGZyb20gJy4uL3Jlc29sdmVycy96b21lU2VhcmNoSW5wdXRUeXBlcy5qcydcblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25RdWVyeVBhcmFtcyB7XG4gIHB1YktleTogQWdlbnRQdWJLZXksXG59XG5leHBvcnQgdHlwZSBBZ2VudFdpdGhUeXBlID0gQWdlbnQgJiB7IGFnZW50VHlwZTogc3RyaW5nIH1cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRXaXRoVHlwZVJlc3BvbnNlIHtcbiAgYWdlbnQ6IEFnZW50V2l0aFR5cGVcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFZGdlV2l0aFR5cGVFZGdlIGV4dGVuZHMgT21pdDxBZ2VudEVkZ2UsICdub2RlJz4ge1xuICBub2RlOiBBZ2VudFdpdGhUeXBlXG59XG5leHBvcnQgaW50ZXJmYWNlIEFnZW50Q29ubmVjdGlvbldpdGhUeXBlIGV4dGVuZHMgT21pdDxBZ2VudENvbm5lY3Rpb24sICdlZGdlcyc+IHtcbiAgZWRnZXM6IEFnZW50RWRnZVdpdGhUeXBlRWRnZVtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBZ2VudFR5cGVuYW1lKHJlY29yZDogQWdlbnRXaXRoVHlwZSkge1xuICByZWNvcmRbJ19fdHlwZW5hbWUnXSA9IHJlY29yZC5hZ2VudFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ3BlcnNvbicgPyAnUGVyc29uJyA6IChcbiAgICByZWNvcmQuYWdlbnRUeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdvcmdhbml6YXRpb24nID8gJ09yZ2FuaXphdGlvbicgOiByZWNvcmQuYWdlbnRUeXBlXG4gIClcbiAgcmV0dXJuIHJlY29yZCBhcyBBZ2VudFxufVxuXG5leHBvcnQgZGVmYXVsdCAoZG5hQ29uZmlnOiBETkFJZE1hcHBpbmdzLCBjb25kdWN0b3JVcmk6IHN0cmluZykgPT4ge1xuXG4gIC8vYXNzdW1lcyB0aGVyZSBpcyBhIGxpbmsgZnJvbSBhZ2VudFB1YktleSB0byBhIFBlcnNvbiBlbnRyeSwgYnV0IHdoYXQgaWYgbGluayBjYW5ub3QgYmUgcmVzb2x2ZWQ/XG4gIGNvbnN0IHJlYWRNeUFnZW50ID0gbWFwWm9tZUZuPG51bGwsIEFnZW50UmVzcG9uc2U+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnYWdlbnQnLCAnYWdlbnQnLCAnZ2V0X215X2FnZW50JylcbiAgY29uc3QgcmVhZEFnZW50ID0gbWFwWm9tZUZuPFJlYWRQYXJhbXMsIEFnZW50V2l0aFR5cGVSZXNwb25zZT4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdhZ2VudCcsICdhZ2VudCcsICdnZXRfYWdlbnQnKVxuICBjb25zdCByZWFkQWxsID0gbWFwWm9tZUZuPFBhZ2luZ1BhcmFtcywgQWdlbnRDb25uZWN0aW9uV2l0aFR5cGU+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnYWdlbnQnLCAnYWdlbnRfaW5kZXgnLCAncmVhZF9hbGxfYWdlbnRzJylcbiAgY29uc3QgcmVhZEFsbEFnZW50VHlwZSA9IG1hcFpvbWVGbjxBZ2VudFNlYXJjaElucHV0LCBBZ2VudENvbm5lY3Rpb24+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAnYWdlbnQnLCAnYWdlbnRfaW5kZXgnLCAncXVlcnlfYWdlbnRzJylcblxuICBjb25zdCBhZ2VudFJlbGF0aW9uc2hpcCA9ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5IHVuaW1wbGVtZW50ZWQnKVxuICB9XG4gIGNvbnN0IGFnZW50UmVsYXRpb25zaGlwcyA9ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5IHVuaW1wbGVtZW50ZWQnKVxuICB9XG4gIGNvbnN0IGFnZW50UmVsYXRpb25zaGlwUm9sZSA9ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5IHVuaW1wbGVtZW50ZWQnKVxuICB9XG4gIGNvbnN0IGFnZW50UmVsYXRpb25zaGlwUm9sZXMgPSAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdxdWVyeSB1bmltcGxlbWVudGVkJylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gOlRPRE86IGlzIG15QWdlbnQgYWx3YXlzIGEgJ1BlcnNvbicgaW4gSG9sb2NoYWluLCBvciB3aWxsIHdlIGFsbG93IHVzZXJzIHRvIGFjdCBpbiBhbiBPcmdhbml6YXRpb24gY29udGV4dCBkaXJlY3RseT9cbiAgICBteUFnZW50OiBpbmplY3RUeXBlbmFtZSgnUGVyc29uJywgYXN5bmMgKHJvb3QsIGFyZ3MpOiBQcm9taXNlPEFnZW50PiA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IHJlYWRNeUFnZW50KG51bGwpKS5hZ2VudFxuICAgIH0pLFxuICAgIGFnZW50OiBhc3luYyAocm9vdCwgYXJncyk6IFByb21pc2U8QWdlbnQ+ID0+IHtcbiAgICAgIHJldHVybiBhZGRBZ2VudFR5cGVuYW1lKChhd2FpdCByZWFkQWdlbnQoeyBhZGRyZXNzOiBhcmdzLmlkIH0pKS5hZ2VudClcbiAgICB9LFxuICAgIG9yZ2FuaXphdGlvbjogaW5qZWN0VHlwZW5hbWUoJ09yZ2FuaXphdGlvbicsIGFzeW5jIChyb290LCBhcmdzKTogUHJvbWlzZTxPcmdhbml6YXRpb24+ID0+IHtcbiAgICAgIHJldHVybiAoKGF3YWl0IHJlYWRBZ2VudCh7IGFkZHJlc3M6IGFyZ3MuaWQgfSkpLmFnZW50KSBhcyBPcmdhbml6YXRpb25cbiAgICAgIC8vIFRPRE86IHR5cGUgY2hlY2sgaWYgcGVyc29uIG9yIG9yZ2FuaXphdGlvbiBhbmQgcHJvdmlkZSBlcnJvciBpZiBwZXJzb25cbiAgICB9KSxcbiAgICBwZXJzb246IGluamVjdFR5cGVuYW1lKCdQZXJzb24nLCBhc3luYyAocm9vdCwgYXJncyk6IFByb21pc2U8UGVyc29uPiA9PiB7XG4gICAgICByZXR1cm4gKChhd2FpdCByZWFkQWdlbnQoeyBhZGRyZXNzOiBhcmdzLmlkIH0pKS5hZ2VudCkgYXMgUGVyc29uXG4gICAgICAvLyBUT0RPOiB0eXBlIGNoZWNrIGlmIHBlcnNvbiBvciBvcmdhbml6YXRpb24gYW5kIHByb3ZpZGUgZXJyb3IgaWYgb3JnYW5pemF0aW9uXG4gICAgfSksXG4gICAgYWdlbnRzOiBhc3luYyAocm9vdCwgYXJnczogUGFnaW5nUGFyYW1zKTogUHJvbWlzZTxBZ2VudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgIGNvbnN0IGFnZW50cyA9IGF3YWl0IHJlYWRBbGwoYXJncylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VJbmZvOiBhZ2VudHMucGFnZUluZm8sXG4gICAgICAgIGVkZ2VzOiBhZ2VudHMuZWRnZXMubWFwKCh7IGN1cnNvciwgbm9kZSB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgY3Vyc29yLCBub2RlOiBhZGRBZ2VudFR5cGVuYW1lKG5vZGUpIH1cbiAgICAgICAgfSlcbiAgICAgIH0gYXMgQWdlbnRDb25uZWN0aW9uXG4gICAgfSxcbiAgICBvcmdhbml6YXRpb25zOiBhc3luYyAocm9vdCwgYXJnczogUGFnaW5nUGFyYW1zKTogUHJvbWlzZTxPcmdhbml6YXRpb25Db25uZWN0aW9uPiA9PiB7XG4gICAgICBjb25zdCBhZ2VudHMgPSBhd2FpdCByZWFkQWxsQWdlbnRUeXBlKHsgcGFyYW1zOiB7IGFnZW50VHlwZTogJ09yZ2FuaXphdGlvbicgfSB9KVxuICAgICAgcmV0dXJuIChhZ2VudHMgYXMgT3JnYW5pemF0aW9uQ29ubmVjdGlvbilcbiAgICB9LFxuICAgIHBlb3BsZTogYXN5bmMgKHJvb3QsIGFyZ3M6IFBhZ2luZ1BhcmFtcyk6IFByb21pc2U8UGVyc29uQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgY29uc3QgYWdlbnRzID0gYXdhaXQgcmVhZEFsbEFnZW50VHlwZSh7IHBhcmFtczogeyBhZ2VudFR5cGU6ICdQZXJzb24nIH0gfSlcbiAgICAgIHJldHVybiAoYWdlbnRzIGFzIFBlcnNvbkNvbm5lY3Rpb24pXG4gICAgfSxcbiAgICBhZ2VudFJlbGF0aW9uc2hpcCxcbiAgICBhZ2VudFJlbGF0aW9uc2hpcHMsXG4gICAgYWdlbnRSZWxhdGlvbnNoaXBSb2xlLFxuICAgIGFnZW50UmVsYXRpb25zaGlwUm9sZXMsXG4gIH1cbn1cbiJdfQ==