My custom type "Observations" doesn't seem to be generating correctly as I am getting this error message
Property 'observations' is missing in type 'import("/Users/thomasandrew/Documents/webApps/social-innovate/boilerplate/packages/api/node_modules/.prisma/client/index").ActionPlan' but required in type 'import("/Users/thomasandrew/Documents/webApps/social-innovate/boilerplate/packages/api/src/modules/actionPlan/actionPlan.model").ActionPlan'.ts(2741) actionPlan.model.ts(25, 5): 'observations' is declared here.
This is my Prisma schema file (removed some extraneous fields)
model Observation {
id String @id @default(dbgenerated("gen_random_uuid()"))
actionPlan ActionPlan @relation(fields: [actionPlanId], references: [id])
actionPlanId String
meetingDate DateTime?
place String?
}
model ActionPlan {
id String @id @default(dbgenerated("gen_random_uuid()")) @unique
testName String
observations Observation[]
}
type-graphql model
@ObjectType()
export class ActionPlan extends BaseModel implements Prisma.ActionPlan {
@Field()
testName: string
@Field()
department: string
@Field()
code: string
@Field()
outcome: string
@Field()
hypothesis: string
@Field(type => [Observation])
observations: Observation[]
}
However even when I run prisma generate successfully, it doesn't add the 'observations' to the Action Plan. Am I missing something? Any help would be great. I also attached screenshot of generated types at node_modules/.prisma/client/index.d.ts
.

Prisma doesn't include relationships in generated types because not all queries include them. Prisma queries do return relationships according options used, but in the generated code this is done through complex TypeScript.
But always you can define types with relationships included manually or using a combination of ReturnType<T> and Awaited<T> utilities.
Example defining manually:
type ActionPlanWithObservations = ActionPlan & {
observations: Observation[]
}
Example using Awaited and ReturnType:
type ActionPlanWithObservations =
Awaited<ReturnType<ActionPlanService["getActionPlan"]>>
Where ActionPlanService is:
class ActionPlanService {
getActionPlan(id: string) {
return prisma.actionPlan.findFirst({
where: {
id,
},
include: {
observations: true,
}
})
}
}
Note: Awaited<T> utility is available since TypeScript 4.5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With