@leosprograms/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, '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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9xdWVyaWVzL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQWlCLGNBQWMsRUFBYyxNQUFNLGFBQWEsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFrQyxNQUFNLGtCQUFrQixDQUFBO0FBOEI1RSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBcUI7SUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzlFLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3RGLENBQUE7SUFDRCxPQUFPLE1BQWUsQ0FBQTtBQUN4QixDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQXdCLEVBQUUsWUFBb0IsRUFBRSxFQUFFO0lBRWhFLGtHQUFrRztJQUNsRyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQXNCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNoSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQW9DLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUN6SCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQXdDLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BJLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFvQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFFdEks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QUNELGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIscUJBQXFCO1FBQ3JCLHNCQUFzQjtLQUN2QixDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZ2VudCBxdWVyaWVzXG4gKlxuICogOlRPRE86IHdpcmUgaW50byBQZXJzb25hcyBoQXBwIGFuZCByZXBsYWNlIGdlbmVyYXRlZCBhZ2VudCBuYW1lcyB3aXRoIHNlcnZpbmcgb2YgcHJvZmlsZSBkYXRhXG4gKlxuICogQHBhY2thZ2U6IGhSRUFcbiAqIEBzaW5jZTogICAyMDIwLTAyLTE5XG4gKi9cblxuaW1wb3J0IHsgRE5BSWRNYXBwaW5ncywgaW5qZWN0VHlwZW5hbWUsIFJlYWRQYXJhbXMgfSBmcm9tICcuLi90eXBlcy5qcydcbmltcG9ydCB7IG1hcFpvbWVGbiwgc2VyaWFsaXplSGFzaCwgZGVzZXJpYWxpemVIYXNoIH0gZnJvbSAnLi4vY29ubmVjdGlvbi5qcydcblxuaW1wb3J0IHtcbiAgQWNjb3VudGluZ1Njb3BlLFxuICBBZ2VudCxcbiAgQWdlbnRDb25uZWN0aW9uLFxuICBBZ2VudEVkZ2UsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uQ29ubmVjdGlvbixcbiAgUGVyc29uLFxuICBQZXJzb25Db25uZWN0aW9uXG59IGZyb20gJ0BsZW9zcHJvZ3JhbXMvdmYtZ3JhcGhxbCdcbmltcG9ydCB7IEFnZW50UHViS2V5IH0gZnJvbSAnQGhvbG9jaGFpbi9jbGllbnQnXG5pbXBvcnQgeyBBZ2VudFJlc3BvbnNlIH0gZnJvbSAnLi4vbXV0YXRpb25zL2FnZW50J1xuaW1wb3J0IHsgQWdlbnRTZWFyY2hJbnB1dCwgUGFnaW5nUGFyYW1zIH0gZnJvbSAnLi4vcmVzb2x2ZXJzL3pvbWVTZWFyY2hJbnB1dFR5cGVzLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJhdGlvblF1ZXJ5UGFyYW1zIHtcbiAgcHViS2V5OiBBZ2VudFB1YktleSxcbn1cbmV4cG9ydCB0eXBlIEFnZW50V2l0aFR5cGUgPSBBZ2VudCAmIHsgYWdlbnRUeXBlOiBzdHJpbmcgfVxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdpdGhUeXBlUmVzcG9uc2Uge1xuICBhZ2VudDogQWdlbnRXaXRoVHlwZVxufVxuZXhwb3J0IGludGVyZmFjZSBBZ2VudEVkZ2VXaXRoVHlwZUVkZ2UgZXh0ZW5kcyBPbWl0PEFnZW50RWRnZSwgJ25vZGUnPiB7XG4gIG5vZGU6IEFnZW50V2l0aFR5cGVcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb25uZWN0aW9uV2l0aFR5cGUgZXh0ZW5kcyBPbWl0PEFnZW50Q29ubmVjdGlvbiwgJ2VkZ2VzJz4ge1xuICBlZGdlczogQWdlbnRFZGdlV2l0aFR5cGVFZGdlW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFnZW50VHlwZW5hbWUocmVjb3JkOiBBZ2VudFdpdGhUeXBlKSB7XG4gIHJlY29yZFsnX190eXBlbmFtZSddID0gcmVjb3JkLmFnZW50VHlwZS50b0xvd2VyQ2FzZSgpID09PSAncGVyc29uJyA/ICdQZXJzb24nIDogKFxuICAgIHJlY29yZC5hZ2VudFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ29yZ2FuaXphdGlvbicgPyAnT3JnYW5pemF0aW9uJyA6IHJlY29yZC5hZ2VudFR5cGVcbiAgKVxuICByZXR1cm4gcmVjb3JkIGFzIEFnZW50XG59XG5cbmV4cG9ydCBkZWZhdWx0IChkbmFDb25maWc6IEROQUlkTWFwcGluZ3MsIGNvbmR1Y3RvclVyaTogc3RyaW5nKSA9PiB7XG5cbiAgLy9hc3N1bWVzIHRoZXJlIGlzIGEgbGluayBmcm9tIGFnZW50UHViS2V5IHRvIGEgUGVyc29uIGVudHJ5LCBidXQgd2hhdCBpZiBsaW5rIGNhbm5vdCBiZSByZXNvbHZlZD9cbiAgY29uc3QgcmVhZE15QWdlbnQgPSBtYXBab21lRm48bnVsbCwgQWdlbnRSZXNwb25zZT4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdhZ2VudCcsICdnZXRfbXlfYWdlbnQnKVxuICBjb25zdCByZWFkQWdlbnQgPSBtYXBab21lRm48UmVhZFBhcmFtcywgQWdlbnRXaXRoVHlwZVJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ2NvbWJpbmVkJywgJ2FnZW50JywgJ2dldF9hZ2VudCcpXG4gIGNvbnN0IHJlYWRBbGwgPSBtYXBab21lRm48UGFnaW5nUGFyYW1zLCBBZ2VudENvbm5lY3Rpb25XaXRoVHlwZT4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdpbmRleGluZycsICdyZWFkX2FsbF9hZ2VudHMnKVxuICBjb25zdCByZWFkQWxsQWdlbnRUeXBlID0gbWFwWm9tZUZuPEFnZW50U2VhcmNoSW5wdXQsIEFnZW50Q29ubmVjdGlvbj4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdjb21iaW5lZCcsICdpbmRleGluZycsICdxdWVyeV9hZ2VudHMnKVxuXG4gIGNvbnN0IGFnZW50UmVsYXRpb25zaGlwID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgdW5pbXBsZW1lbnRlZCcpXG4gIH1cbiAgY29uc3QgYWdlbnRSZWxhdGlvbnNoaXBzID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgdW5pbXBsZW1lbnRlZCcpXG4gIH1cbiAgY29uc3QgYWdlbnRSZWxhdGlvbnNoaXBSb2xlID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcigncXVlcnkgdW5pbXBsZW1lbnRlZCcpXG4gIH1cbiAgY29uc3QgYWdlbnRSZWxhdGlvbnNoaXBSb2xlcyA9ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXJ5IHVuaW1wbGVtZW50ZWQnKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyA6VE9ETzogaXMgbXlBZ2VudCBhbHdheXMgYSAnUGVyc29uJyBpbiBIb2xvY2hhaW4sIG9yIHdpbGwgd2UgYWxsb3cgdXNlcnMgdG8gYWN0IGluIGFuIE9yZ2FuaXphdGlvbiBjb250ZXh0IGRpcmVjdGx5P1xuICAgIG15QWdlbnQ6IGluamVjdFR5cGVuYW1lKCdQZXJzb24nLCBhc3luYyAocm9vdCwgYXJncyk6IFByb21pc2U8QWdlbnQ+ID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgcmVhZE15QWdlbnQobnVsbCkpLmFnZW50XG4gICAgfSksXG4gICAgYWdlbnQ6IGFzeW5jIChyb290LCBhcmdzKTogUHJvbWlzZTxBZ2VudD4gPT4ge1xuICAgICAgcmV0dXJuIGFkZEFnZW50VHlwZW5hbWUoKGF3YWl0IHJlYWRBZ2VudCh7IGFkZHJlc3M6IGFyZ3MuaWQgfSkpLmFnZW50KVxuICAgIH0sXG4gICAgb3JnYW5pemF0aW9uOiBpbmplY3RUeXBlbmFtZSgnT3JnYW5pemF0aW9uJywgYXN5bmMgKHJvb3QsIGFyZ3MpOiBQcm9taXNlPE9yZ2FuaXphdGlvbj4gPT4ge1xuICAgICAgcmV0dXJuICgoYXdhaXQgcmVhZEFnZW50KHsgYWRkcmVzczogYXJncy5pZCB9KSkuYWdlbnQpIGFzIE9yZ2FuaXphdGlvblxuICAgICAgLy8gVE9ETzogdHlwZSBjaGVjayBpZiBwZXJzb24gb3Igb3JnYW5pemF0aW9uIGFuZCBwcm92aWRlIGVycm9yIGlmIHBlcnNvblxuICAgIH0pLFxuICAgIHBlcnNvbjogaW5qZWN0VHlwZW5hbWUoJ1BlcnNvbicsIGFzeW5jIChyb290LCBhcmdzKTogUHJvbWlzZTxQZXJzb24+ID0+IHtcbiAgICAgIHJldHVybiAoKGF3YWl0IHJlYWRBZ2VudCh7IGFkZHJlc3M6IGFyZ3MuaWQgfSkpLmFnZW50KSBhcyBQZXJzb25cbiAgICAgIC8vIFRPRE86IHR5cGUgY2hlY2sgaWYgcGVyc29uIG9yIG9yZ2FuaXphdGlvbiBhbmQgcHJvdmlkZSBlcnJvciBpZiBvcmdhbml6YXRpb25cbiAgICB9KSxcbiAgICBhZ2VudHM6IGFzeW5jIChyb290LCBhcmdzOiBQYWdpbmdQYXJhbXMpOiBQcm9taXNlPEFnZW50Q29ubmVjdGlvbj4gPT4ge1xuICAgICAgY29uc3QgYWdlbnRzID0gYXdhaXQgcmVhZEFsbChhcmdzKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZUluZm86IGFnZW50cy5wYWdlSW5mbyxcbiAgICAgICAgZWRnZXM6IGFnZW50cy5lZGdlcy5tYXAoKHsgY3Vyc29yLCBub2RlIH0pID0+IHtcbiAgICAgICAgICByZXR1cm4geyBjdXJzb3IsIG5vZGU6IGFkZEFnZW50VHlwZW5hbWUobm9kZSkgfVxuICAgICAgICB9KVxuICAgICAgfSBhcyBBZ2VudENvbm5lY3Rpb25cbiAgICB9LFxuICAgIG9yZ2FuaXphdGlvbnM6IGFzeW5jIChyb290LCBhcmdzOiBQYWdpbmdQYXJhbXMpOiBQcm9taXNlPE9yZ2FuaXphdGlvbkNvbm5lY3Rpb24+ID0+IHtcbiAgICAgIGNvbnN0IGFnZW50cyA9IGF3YWl0IHJlYWRBbGxBZ2VudFR5cGUoeyBwYXJhbXM6IHsgYWdlbnRUeXBlOiAnT3JnYW5pemF0aW9uJyB9IH0pXG4gICAgICByZXR1cm4gKGFnZW50cyBhcyBPcmdhbml6YXRpb25Db25uZWN0aW9uKVxuICAgIH0sXG4gICAgcGVvcGxlOiBhc3luYyAocm9vdCwgYXJnczogUGFnaW5nUGFyYW1zKTogUHJvbWlzZTxQZXJzb25Db25uZWN0aW9uPiA9PiB7XG4gICAgICBjb25zdCBhZ2VudHMgPSBhd2FpdCByZWFkQWxsQWdlbnRUeXBlKHsgcGFyYW1zOiB7IGFnZW50VHlwZTogJ1BlcnNvbicgfSB9KVxuICAgICAgcmV0dXJuIChhZ2VudHMgYXMgUGVyc29uQ29ubmVjdGlvbilcbiAgICB9LFxuICAgIGFnZW50UmVsYXRpb25zaGlwLFxuICAgIGFnZW50UmVsYXRpb25zaGlwcyxcbiAgICBhZ2VudFJlbGF0aW9uc2hpcFJvbGUsXG4gICAgYWdlbnRSZWxhdGlvbnNoaXBSb2xlcyxcbiAgfVxufVxuIl19