@leosprograms/vf-graphql-holochain
Version:
GraphQL schema bindings for the Holochain implementation of ValueFlows
39 lines (32 loc) • 1.18 kB
text/typescript
/**
* Resolvers for Proposal fields
*
* @package: HoloREA
* @since: 2019-08-27
*/
import { DNAIdMappings, DEFAULT_VF_MODULES, VfModule, ReadParams, ProposalAddress, AgentAddress } from '../types.js'
import { mapZomeFn } from '../connection.js'
import {
Proposal,
ProposedTo,
Agent,
ProposalResponse,
} from '@leosprograms/vf-graphql'
import agentQueries from '../queries/agent.js'
export default (enabledVFModules: VfModule[] = DEFAULT_VF_MODULES, dnaConfig: DNAIdMappings, conductorUri: string) => {
const hasAgent = -1 !== enabledVFModules.indexOf(VfModule.Agent)
const readProposal = mapZomeFn<ReadParams, ProposalResponse>(dnaConfig, conductorUri, 'combined', 'proposal', 'get_proposal')
const readAgent = agentQueries(dnaConfig, conductorUri)['agent']
return Object.assign(
{
proposed: async (record: { proposed: ProposalAddress }): Promise<Proposal> => {
return (await readProposal({address:record.proposed})).proposal
},
},
(hasAgent ? {
proposedTo: async (record: { proposedTo: AgentAddress}): Promise<Agent> => {
return readAgent(record, { id: record.proposedTo })
},
} : {}),
)
}