feat: migrate quest api to trpc

This commit is contained in:
Justin Lin committed 2025-04-16 16:24:29 +08:00
1 parent 55a41dd3b5
commit ac92950177
14 files changed
+55 -71

No files matched your search

+2
View File
@@ -1,5 +1,6 @@
import { router, publicProcedure } from '../trpc.js'
import { linkRouter } from './linkRouter.js'
import { questRouter } from './questRouter.js'
export const appRouter = router({
userList: publicProcedure.query(async (opts) => {
@@ -7,6 +8,7 @@ export const appRouter = router({
return opts.ctx
}),
links: linkRouter,
quests: questRouter,
})
export type AppRouter = typeof appRouter
+30
View File
@@ -0,0 +1,30 @@
import { TRPCError } from '@trpc/server'
import { Quest } from '@linux-odyssey/models'
import { QuestDetailResponse } from '@linux-odyssey/constants'
import { z } from 'zod'
import { router, publicProcedure } from '../trpc.js'
export const questRouter = router({
getQuests: publicProcedure.query(async () => {
const quests = await Quest.find({})
return quests.map(({ title, _id, requirements }) => ({
_id,
title,
requirements,
}))
}),
getQuestDetail: publicProcedure
.input(z.string())
.query(async (opts): Promise<QuestDetailResponse> => {
const id = opts.input
const quest = await Quest.findById(id)
if (!quest) {
throw new TRPCError({
code: 'NOT_FOUND',
message: 'Quest not found.',
})
}
const { _id, title, instruction, requirements } = quest
return { _id, title, instruction, requirements }
}),
})