Search code examples
typescripttypesgraphqlprismacode-generation

TypeScript Types for Resolvers GraphQL yoga (use prisma2 on context)


Sry about my English

So, i need create Types for resolvers on GraphQL yoga. I create this with graphql-codegen, but it works weirdly. And he do not currently create types context for Prisma2.

codegen.yml

schema: ./src/schema.graphql
generates:
  ./src/resolvers/resolvers-types.ts:
    plugins:
      - typescript
      - typescript-resolvers
config:
  contextType: './context#Context'

context.ts

import {PrismaClient} from '@prisma/client'

export type Context = { prisma:PrismaClient }

resolvers.ts

import {IResolvers, Mutation} from './resolvers-types'

interface StringIndexSignatureInterface {
    [index: string]: any
}

type StringIndexed<T> = T & StringIndexSignatureInterface

const resolvers: StringIndexed<IResolvers> = {
Query: {
        users: (parent, args, ctx, info) => {
            return ctx.prisma.user.findMany
        }
    }
};

he throw error about type incompatibility

Without StringIndexed he don't work

Plz tell me how i can do this


Solution

  • I find solution I add to codegen.yml contextType

    codegen.yml

    generates:
      ./src/resolvers/resolvers-types/resolvers-types.ts:
        plugins:
          - typescript
          - typescript-resolvers
          
    config:
      contextType: './context#Context'
      enumsAsTypes: true
    

    context.ts

    import {PrismaClient} from '@prisma/client'
    
    export type Context = { prisma:PrismaClient}