Implementing Drizzle to add views and like for post

This commit is contained in:
2024-06-30 14:30:15 +02:00
parent 0faa737863
commit 5af447e4a9
14 changed files with 977 additions and 943 deletions

View File

@@ -0,0 +1,17 @@
import { useValidatedParams, z } from 'h3-zod'
export default defineEventHandler(async (event) => {
const { slug } = await useValidatedParams(event, {
slug: z.string()
})
return useDB().insert(tables.posts).values({
slug
}).onConflictDoUpdate({
target: tables.posts.slug,
set: {
slug,
views: sql`${tables.posts.views}
+ 1`
}
}).returning().get()
})

View File

@@ -0,0 +1,3 @@
export default defineEventHandler(() => {
return useDB().query.posts.findMany()
})

View File

@@ -0,0 +1,13 @@
import { useValidatedParams, z } from 'h3-zod'
export default defineEventHandler(async (event) => {
const { slug } = await useValidatedParams(event, {
slug: z.string()
})
return useDB().update(tables.posts)
.set({
likes: sql`${tables.posts.likes}
+ 1`
})
.where(eq(tables.posts.slug, slug))
})