Remove trpc and use H3 instead

This commit is contained in:
2023-12-09 21:26:34 +01:00
parent bcd123c5df
commit f0aa9ebdf4
11 changed files with 225 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
export default defineEventHandler(() => {
return usePrisma().announcement.findFirst({
orderBy: {
createdAt: 'desc',
},
})
})

View File

@@ -0,0 +1,16 @@
import { z } from 'zod'
const PostSchema = z.object({ slug: z.string() }).parse
export default defineEventHandler(async (event) => {
const { slug } = await readValidatedBody(event, PostSchema)
return usePrisma().post.upsert({
where: {
slug,
},
update: {},
create: {
slug,
},
})
})

View File

@@ -0,0 +1,3 @@
export default defineEventHandler(async () => {
return await usePrisma().category.findMany()
})

View File

@@ -0,0 +1,17 @@
import { z } from 'zod'
const PostSchema = z.object({ slug: z.string() }).parse
export default defineEventHandler(async (event) => {
const { slug } = await readValidatedBody(event, PostSchema)
return usePrisma().post.update({
where: {
slug,
},
data: {
likes: {
increment: 1,
},
},
})
})

View File

@@ -0,0 +1,23 @@
export default defineEventHandler(async () => {
const maintenance = await usePrisma().maintenance.findFirst({
orderBy: {
createdAt: 'desc',
},
})
let enabled = true
if (process.env.NODE_ENV === 'development') {
enabled = false
}
else {
const today = new Date()
enabled = !!maintenance
&& maintenance.enabled
&& maintenance.beginAt.getTime() < today.getTime()
&& maintenance.endAt.getTime() > today.getTime()
}
return {
enabled,
maintenance,
}
})

View File

@@ -0,0 +1,11 @@
import { z } from 'zod'
const SuggestionValidator = z.object({
author: z.string().trim(),
content: z.string(),
}).parse
export default defineEventHandler(async (event) => {
const { author, content } = await getValidatedQuery(event, SuggestionValidator)
const { user } = await requireUserSession(event)
})

View File

@@ -0,0 +1,47 @@
export default defineEventHandler(async (event) => {
const { favorite, category } = getQuery(event)
const prisma = usePrisma()
let whereClause: any
if (favorite === 'true') {
category === 'all'
? whereClause = {
favorite: true,
categories: { every: { category: {} } },
}
: whereClause = {
favorite: true,
categories: { some: { category: { slug: category } } },
}
}
else {
category === 'all'
? whereClause = {
categories: { every: { category: {} } },
}
: whereClause = {
categories: { some: { category: { slug: category } } },
}
}
return await prisma.talent.findMany({
where: whereClause,
orderBy: {
createdAt: 'desc',
},
include: {
categories: {
include: {
talent: true,
category: true,
},
orderBy: {
category: {
name: 'asc',
},
},
},
},
})
})

View File

@@ -0,0 +1,17 @@
import { z } from 'zod'
const PostSchema = z.object({ slug: z.string() }).parse
export default defineEventHandler(async (event) => {
const { slug } = await readValidatedBody(event, PostSchema)
return usePrisma().post.update({
where: {
slug,
},
data: {
views: {
increment: 1,
},
},
})
})

View File

@@ -0,0 +1,13 @@
import { PrismaClient } from '@prisma/client'
let prisma: PrismaClient | undefined
export function usePrisma() {
if (!prisma) {
prisma = new PrismaClient({
log: ['warn', 'info', 'error'],
})
}
return prisma
}