mirror of
https://github.com/jorgev259/soc_site-astro.git
synced 2025-06-29 07:57:41 +00:00
32 lines
1 KiB
TypeScript
32 lines
1 KiB
TypeScript
import fg from 'fast-glob'
|
|
|
|
import { composeResolvers } from '@graphql-tools/resolvers-composition'
|
|
import type { Resolvers } from '@/graphql/__generated__/types.generated'
|
|
import prismaClient from 'prisma/client'
|
|
import { checkPerm } from 'utils/resolvers'
|
|
|
|
const resolversComposition = {
|
|
'Query.banners': checkPerm('UPDATE')
|
|
}
|
|
|
|
const resolvers: Resolvers = {
|
|
Query: {
|
|
config: (_, { name }, __, ___) =>
|
|
prismaClient.config.upsert({
|
|
where: { name },
|
|
create: { name },
|
|
update: {}
|
|
}),
|
|
banners: async (parent, args) => {
|
|
const filePaths = await fg(['/var/www/soc_img/img/live/**/ /**.png'])
|
|
const images = filePaths.map((f) => f.split('/').pop())
|
|
|
|
return images
|
|
},
|
|
highlight: () => prismaClient.config.findUnique({ where: { name: 'highlight' } }),
|
|
recentComments: async (parent, { limit: take = 5 }) =>
|
|
prismaClient.comments.findMany({ take, orderBy: [{ updatedAt: 'desc' }] })
|
|
}
|
|
}
|
|
|
|
export default composeResolvers(resolvers, resolversComposition)
|