Skip to content

Commit

Permalink
feat: generate resolve result
Browse files Browse the repository at this point in the history
  • Loading branch information
plantain-00 committed Nov 8, 2018
1 parent f3048e0 commit 4b82f47
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
6 changes: 6 additions & 0 deletions demo/root-type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@ export interface Root {
user(input: { id: string }): GetResult | Promise<GetResult>
users(): GetResult | Promise<GetResult>
}

export interface ResolveResult {
create: MutationResult
user: GetResult
users: GetResult
}
12 changes: 9 additions & 3 deletions src/graphql-root-type-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,27 @@ import * as path from 'path'
import { TypeDeclaration, Type, MemberParameter, ReferenceType, EnumType } from './utils'

export function generateGraphqlRootType(declarations: TypeDeclaration[], graphqlRootTypePath: string) {
const members: string[] = []
const rootTypes: string[] = []
const resolveResults: string[] = []
const referenceTypes: (ReferenceType | EnumType)[] = []
for (const typeDeclaration of declarations) {
if (typeDeclaration.kind === 'object'
&& (typeDeclaration.name === 'Query' || typeDeclaration.name === 'Mutation')) {
for (const member of typeDeclaration.members) {
const memberType = getMemberType(member.type, referenceTypes)
const parameters = getMemberParameters(referenceTypes, member.parameters)
members.push(` ${member.name}(${parameters}): ${memberType} | Promise<${memberType}>`)
rootTypes.push(` ${member.name}(${parameters}): ${memberType} | Promise<${memberType}>`)
resolveResults.push(` ${member.name}: ${memberType}`)
}
}
}
const referenceTypeImports = getReferenceTypeImports(referenceTypes, graphqlRootTypePath)
return referenceTypeImports + `export interface Root {
${members.join('\n')}
${rootTypes.join('\n')}
}
export interface ResolveResult {
${resolveResults.join('\n')}
}
`
}
Expand Down

0 comments on commit 4b82f47

Please sign in to comment.