83 lines
No EOL
1.5 KiB
TypeScript
83 lines
No EOL
1.5 KiB
TypeScript
import { prisma } from '$lib/server/prisma';
|
|
import { builder } from '../builder';
|
|
|
|
export const User = builder.prismaObject('User', {
|
|
fields: (t) => ({
|
|
id: t.exposeID('id'),
|
|
email: t.exposeString('email'),
|
|
name: t.exposeString('name'),
|
|
posts: t.relation('posts'),
|
|
createdAt: t.expose('createdAt', {
|
|
type: 'Date'
|
|
}),
|
|
updatedAt: t.expose('updatedAt', {
|
|
type: 'Date'
|
|
})
|
|
})
|
|
});
|
|
|
|
const CreateUser = builder.inputType('CreateUser', {
|
|
fields: (t) => ({
|
|
email: t.string({
|
|
required: true
|
|
}),
|
|
name: t.string({
|
|
required: true
|
|
})
|
|
})
|
|
});
|
|
|
|
const UpdateUser = builder.inputType('UpdateUser', {
|
|
fields: (t) => ({
|
|
id: t.id({
|
|
required: true
|
|
}),
|
|
email: t.string(),
|
|
name: t.string()
|
|
})
|
|
});
|
|
|
|
builder.queryFields((t) => ({
|
|
users: t.prismaField({
|
|
type: [User],
|
|
resolve: async () => {
|
|
return await prisma.user.findMany();
|
|
}
|
|
})
|
|
}));
|
|
|
|
builder.mutationFields((t) => ({
|
|
createUser: t.field({
|
|
type: User,
|
|
args: {
|
|
input: t.arg({ required: true, type: CreateUser })
|
|
},
|
|
resolve: async (parent, args) => {
|
|
const post = await prisma.user.create({
|
|
data: {
|
|
email: args.input.email,
|
|
name: args.input.name
|
|
}
|
|
});
|
|
return post;
|
|
}
|
|
}),
|
|
updateUser: t.field({
|
|
type: User,
|
|
args: {
|
|
input: t.arg({ required: true, type: UpdateUser })
|
|
},
|
|
resolve: async (parent, args) => {
|
|
const post = await prisma.user.update({
|
|
where: {
|
|
id: Number(args.input.id)
|
|
},
|
|
data: {
|
|
email: args.input.email,
|
|
name: args.input.name ?? undefined
|
|
}
|
|
});
|
|
return post;
|
|
}
|
|
})
|
|
})); |