mirror of
https://github.com/ArthurDanjou/website.git
synced 2026-01-27 02:10:35 +01:00
work
This commit is contained in:
@@ -1,3 +1,68 @@
|
||||
export default defineEventHandler((event) => {
|
||||
return 'Hello post'
|
||||
import { z } from 'zod'
|
||||
import { publicProcedure, router } from '~/server/trpc/trpc'
|
||||
|
||||
const PostSchema = z.object({
|
||||
slug: z.string(),
|
||||
})
|
||||
|
||||
export default router({
|
||||
createOrUpdate: publicProcedure
|
||||
.input(PostSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
return await ctx.prisma.post.upsert({
|
||||
where: {
|
||||
slug: input.slug,
|
||||
},
|
||||
update: {},
|
||||
create: {
|
||||
slug: input.slug,
|
||||
},
|
||||
})
|
||||
}),
|
||||
getTotalViews: publicProcedure
|
||||
.query(async ({ ctx }) => {
|
||||
const views = await ctx.prisma.post.aggregate({
|
||||
_sum: {
|
||||
views: true,
|
||||
},
|
||||
})
|
||||
return views._sum.views || 0
|
||||
}),
|
||||
view: publicProcedure
|
||||
.input(PostSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
return await ctx.prisma.post.update({
|
||||
where: {
|
||||
slug: input.slug,
|
||||
},
|
||||
data: {
|
||||
views: {
|
||||
increment: 1,
|
||||
},
|
||||
},
|
||||
})
|
||||
}),
|
||||
getTotalLikes: publicProcedure
|
||||
.query(async ({ ctx }) => {
|
||||
const likes = await ctx.prisma.post.aggregate({
|
||||
_sum: {
|
||||
likes: true,
|
||||
},
|
||||
})
|
||||
return likes._sum.likes || 0
|
||||
}),
|
||||
like: publicProcedure
|
||||
.input(PostSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
return await ctx.prisma.post.update({
|
||||
where: {
|
||||
slug: input.slug,
|
||||
},
|
||||
data: {
|
||||
likes: {
|
||||
increment: 1,
|
||||
},
|
||||
},
|
||||
})
|
||||
}),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user