This commit is contained in:
2023-08-16 23:07:33 +02:00
parent d97278c344
commit dc4107ac82
13 changed files with 1544 additions and 2258 deletions

View File

@@ -1,7 +1,7 @@
import { publicProcedure, router } from '~/server/trpc/trpc'
export default router({
announcement: publicProcedure
get: publicProcedure
.query(async ({ ctx }) => {
return await ctx.prisma.announcement.findFirst({
orderBy: {

View File

@@ -1,18 +1,14 @@
import { z } from 'zod'
import announcement from './announcement'
import { publicProcedure, router } from '~/server/trpc/trpc'
import maintenance from './maintenance'
import talents from './talents'
import post from './post'
import { router } from '~/server/trpc/trpc'
export const appRouter = router({
hello: publicProcedure
.input(z.object({
name: z.string().optional(),
}))
.query(({ input }) => {
return {
greeting: `Hello ${input.name ?? 'World'}!`,
}
}),
announcement,
post,
talents,
maintenance,
})
export type AppRouter = typeof appRouter

View File

@@ -0,0 +1,22 @@
import { publicProcedure, router } from '~/server/trpc/trpc'
export default router({
get: publicProcedure
.query(async ({ ctx }) => {
return await ctx.prisma.maintenance.findFirst({
orderBy: {
createdAt: 'desc',
},
})
}),
is: publicProcedure
.query(async ({ ctx }) => {
const maintenance = await ctx.prisma.maintenance.findFirst({
orderBy: {
createdAt: 'desc',
},
})
const today = new Date()
return !!maintenance && maintenance.beginAt.getTime() < today.getTime() && maintenance.endAt.getTime() > today.getTime()
}),
})

View File

@@ -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,
},
},
})
}),
})

View File

@@ -0,0 +1,68 @@
import { z } from 'zod'
import { publicProcedure, router } from '~/server/trpc/trpc'
export default router({
getTalents: publicProcedure
.input(z.object({
favorite: z.boolean(),
category: z.union([z.string(), z.literal('all')]),
}))
.query(async ({ ctx, input }) => {
if (input.favorite) {
return input.category === 'all'
? await ctx.prisma.talent.findMany({
orderBy: {
createdAt: 'desc',
},
include: {
categories: true,
},
where: {
favorite: true,
categories: { every: { category: {} } },
},
})
: await ctx.prisma.talent.findMany({
orderBy: {
createdAt: 'desc',
},
include: {
categories: true,
},
where: {
favorite: true,
categories: { some: { category: { slug: input.category } } },
},
})
}
else {
return input.category === 'all'
? await ctx.prisma.talent.findMany({
orderBy: {
createdAt: 'desc',
},
include: {
categories: true,
},
where: {
categories: { every: { category: {} } },
},
})
: await ctx.prisma.talent.findMany({
orderBy: {
createdAt: 'desc',
},
include: {
categories: true,
},
where: {
categories: { some: { category: { slug: input.category } } },
},
})
}
}),
getCategories: publicProcedure
.query(async ({ ctx }) => {
return await ctx.prisma.category.findMany()
}),
})