Howdy! I think I have a similar issue where I’ve added some custom relationship names and its not generating the graphql types in the schema.graphql
file correctly nor are the TypeScript types being generated correctly in the graphql.d.ts
file.
Here’s my prisma schema:
model Organization {
id Int @id @default(autoincrement())
name String
memberships Membership[] @relation("OrgMemberships")
loggedInUsers User[] @relation("LoggedInUsers")
}
model Membership {
id Int @id @default(autoincrement())
organization Organization @relation("OrgMemberships", fields: [organizationId], references: [id])
organizationId Int
user User? @relation("UserMemberships", fields: [userId], references: [id])
userId Int?
loggedInUsers User[] @relation("LoggedInUsersMem")
@@unique([organizationId, invitedEmail])
@@unique([organizationId, userId])
}
model User {
id Int @id @default(autoincrement())
...
memberships Membership[] @relation("UserMemberships")
loggedInOrg Organization? @relation("LoggedInUsers", fields: [loggedInOrgId], references: [id])
loggedInOrgId Int?
loggedInMembership Membership? @relation("LoggedInUsersMem", fields: [loggedInMembershipId], references: [id])
loggedInMembershipId Int?
}
Here’s what Redwood is generating in the graphql.d.ts
file
export type OrganizationResolvers<ContextType = RedwoodGraphQLContext, ParentType extends ResolversParentTypes['Organization'] = ResolversParentTypes['Organization']> = {
id: OptArgsResolverFn<ResolversTypes['Int'], ParentType, ContextType>;
name: OptArgsResolverFn<ResolversTypes['String'], ParentType, ContextType>;
users: OptArgsResolverFn<Array<Maybe<ResolversTypes['User']>>, ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};
export type OrganizationRelationResolvers<ContextType = RedwoodGraphQLContext, ParentType extends ResolversParentTypes['Organization'] = ResolversParentTypes['Organization']> = {
id?: RequiredResolverFn<ResolversTypes['Int'], ParentType, ContextType>;
name?: RequiredResolverFn<ResolversTypes['String'], ParentType, ContextType>;
users?: RequiredResolverFn<Array<Maybe<ResolversTypes['User']>>, ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};
Here’s what is in the schema.graphql
file
type Organization {
id: Int!
name: String!
users: [User]!
}
And finally the error when I try to add the relation resolver to the SDL file:
export const Organization: OrganizationRelationResolvers = {
memberships: (_obj, { root }) => {
return db.organization.findUnique({ where: { id: root?.id } }).memberships()
},
loggedInUsers: (_obj, { root }) => {
return db.organization
.findUnique({ where: { id: root?.id } })
.loggedInUsers()
},
}
error:
Type '{ memberships: (_obj: any, { root }: { root: any; }) => PrismaPromise<(GetResult<{ id: number; role: MembershipRole; active: boolean; organizationId: number; invitedName: string; invitedEmail: string; userId: number; }, unknown> & {})[]>; loggedInUsers: (_obj: any, { root }: { ...; }) => PrismaPromise<...>; }' is not assignable to type 'OrganizationRelationResolvers'.
Object literal may only specify known properties, and 'memberships' does not exist in type 'OrganizationRelationResolvers'.ts(2322)
@dom any ideas? I apologize if this isn’t enough or this is a dumb question. Pretty new to Redwood & GraphQL