@valueflows/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
72 lines • 12.6 kB
JavaScript
/**
* 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==