Files
portfolio/api/src/services/projects/projects.ts
2024-09-27 22:52:41 -04:00

58 lines
1.4 KiB
TypeScript

import type {
QueryResolvers,
MutationResolvers,
ProjectRelationResolvers,
} from 'types/graphql'
import { db } from 'src/lib/db'
export const projects: QueryResolvers['projects'] = () => db.project.findMany()
export const project: QueryResolvers['project'] = ({ id }) =>
db.project.findUnique({
where: { id },
})
export const createProject: MutationResolvers['createProject'] = ({ input }) =>
db.project.create({
data: {
title: input.title,
description: input.description,
date: input.date,
links: input.links,
images: input.images,
tags: {
connect: input.tags.map((tagId) => ({ id: tagId })),
},
},
})
export const updateProject: MutationResolvers['updateProject'] = async ({
id,
input,
}) =>
db.project.update({
data: {
title: input.title,
description: input.description,
date: input.date,
links: input.links,
images: input.images,
tags: {
disconnect: input.removeTags?.map((tagId) => ({ id: tagId })),
connect: input.tags?.map((tagId) => ({ id: tagId })),
},
},
where: { id },
})
export const deleteProject: MutationResolvers['deleteProject'] = ({ id }) =>
db.project.delete({
where: { id },
})
export const Project: ProjectRelationResolvers = {
tags: (_obj, { root }) =>
db.project.findUnique({ where: { id: root?.id } }).tags(),
}