graphqlgen icon indicating copy to clipboard operation
graphqlgen copied to clipboard

Does not generate resolvers for relation fields

Open Elijen opened this issue 5 years ago • 0 comments

Description

Is this expected behavior? The library was recommended by a Prisma team member as a solution to the need of manually defining resolvers for all relation fields (even to-one), but it does seem to generate these.

Steps to reproduce

Model:

type User {
  id: ID! @unique
  name: String!
  assignedTasks: [Task!]! @relation(name: "UserAssignedTasks")
  createdTasks: [Task!]! @relation(name: "UserCreatedTasks")
}

type Task {
  id: ID! @unique
  title: String!
  assignedTo: User! @relation(name: "UserAssignedTasks")
  createdBy: User! @relation(name: "UserCreatedTasks")
}

Query:

query MyTasks {
   myTasks {
      id
      title
      assignedTo {
         id
         name
      }
   }
}

Query.myTasks resolver:

myTasks(parent, args, ctx: Context) {
  const id = getUserId(ctx);
  return ctx.prisma.tasks({ where: { assignedTo: { id } } });
}

Resolvers:

import { Query } from "./Query";
import { TaskResolvers, UserResolvers } from "../generated/graphqlgen";

export default {
  Query,
  User: UserResolvers.defaultResolvers,
  Task: TaskResolvers.defaultResolvers
};

Expected results

Query returns data successfully and includes the assignedTo field

Actual results

Error is thrown:

Error: Cannot return null for non-nullable field Task.assignedTo.

Versions

  • graphqlgen: 0.6.0-rc9
  • OS name and version: macOS 10.14.2

Elijen avatar Mar 12 '19 11:03 Elijen