mirror of
https://github.com/ArthurDanjou/website.git
synced 2026-01-18 14:08:05 +01:00
Remove trpc and use H3 instead
This commit is contained in:
7
src/server/api/announcement.get.ts
Normal file
7
src/server/api/announcement.get.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export default defineEventHandler(() => {
|
||||
return usePrisma().announcement.findFirst({
|
||||
orderBy: {
|
||||
createdAt: 'desc',
|
||||
},
|
||||
})
|
||||
})
|
||||
16
src/server/api/article.post.ts
Normal file
16
src/server/api/article.post.ts
Normal 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,
|
||||
},
|
||||
})
|
||||
})
|
||||
3
src/server/api/categories.get.ts
Normal file
3
src/server/api/categories.get.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export default defineEventHandler(async () => {
|
||||
return await usePrisma().category.findMany()
|
||||
})
|
||||
17
src/server/api/like.put.ts
Normal file
17
src/server/api/like.put.ts
Normal 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,
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
23
src/server/api/maintenance.get.ts
Normal file
23
src/server/api/maintenance.get.ts
Normal 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,
|
||||
}
|
||||
})
|
||||
11
src/server/api/suggestion.post.ts
Normal file
11
src/server/api/suggestion.post.ts
Normal 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)
|
||||
})
|
||||
47
src/server/api/talents.get.ts
Normal file
47
src/server/api/talents.get.ts
Normal 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',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
17
src/server/api/view.put.ts
Normal file
17
src/server/api/view.put.ts
Normal 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,
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
13
src/server/utils/prisma.ts
Normal file
13
src/server/utils/prisma.ts
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user