I am using TypeGraphql and Prisma 2 on an Apollo Express server with a PostgreSQL db.
I used Prisma to introspect my DB and then generated the TypeScript types from schema.prisma
.
I also have my @ObjectType
model classes made with TypeGraphQL.
My issue is that I seem to be running into type conflicts between my TypeGraphQL classes and the generated types from Prisma. For example I have a TypeGraphQL Course
class that looks like this
@ObjectType()
export class Course {
@Field(() => Int)
id: number;
@Field()
title: string;
.......
@Field(() => User)
creator: User;
}
and Prisma generates a Course
type that looks like this:
/**
* Model Course
*/
export type Course = {
id: number
title: string
.......
creator_id: number
}
So in my custom resolvers, when I try to create a Course
, I say that the mutation returns a type of Course
. (I have a controller using this service but the service is where the issue is)
export const createCourseService = async (
prisma: PrismaClient,
createCourseInput: CreateCourseInput,
userId: number
): Promise<Course> => {
let err, newCourse, foundUser;
const { course, user } = prisma;
.....
[err, newCourse] = await to(
course.create({
data: {
...createCourseInput,
creator: {
connect: { id: userId },
},
},
})
);
return newCourse;
};
But the Course
type that comes from my TypeGraphQL class is different from the Course
type generated by Prisma but they're named the same so TypeScript sort of thinks they're the same but gives and error saying that creator is missing in type Course
but required in type Course
. Not really sure what the best way to resolve this is.
Is there some way to stitch my TypeGraphQL classes and my Prisma types together or go about it some other way?