UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

77 lines (66 loc) 2.12 kB
import { z } from 'zod'; import { SessionGroupModel } from '@/database/models/sessionGroup'; import { insertSessionGroupSchema } from '@/database/schemas'; import { authedProcedure, router } from '@/libs/trpc/lambda'; import { serverDatabase } from '@/libs/trpc/lambda/middleware'; import { SessionGroupItem } from '@/types/session'; const sessionProcedure = authedProcedure.use(serverDatabase).use(async (opts) => { const { ctx } = opts; return opts.next({ ctx: { sessionGroupModel: new SessionGroupModel(ctx.serverDB, ctx.userId), }, }); }); export const sessionGroupRouter = router({ createSessionGroup: sessionProcedure .input( z.object({ name: z.string(), sort: z.number().optional(), }), ) .mutation(async ({ input, ctx }) => { const data = await ctx.sessionGroupModel.create({ name: input.name, sort: input.sort, }); return data?.id; }), getSessionGroup: sessionProcedure.query(async ({ ctx }): Promise<SessionGroupItem[]> => { return ctx.sessionGroupModel.query() as any; }), removeAllSessionGroups: sessionProcedure.mutation(async ({ ctx }) => { return ctx.sessionGroupModel.deleteAll(); }), removeSessionGroup: sessionProcedure .input(z.object({ id: z.string(), removeChildren: z.boolean().optional() })) .mutation(async ({ input, ctx }) => { return ctx.sessionGroupModel.delete(input.id); }), updateSessionGroup: sessionProcedure .input( z.object({ id: z.string(), value: insertSessionGroupSchema.partial(), }), ) .mutation(async ({ input, ctx }) => { return ctx.sessionGroupModel.update(input.id, input.value); }), updateSessionGroupOrder: sessionProcedure .input( z.object({ sortMap: z.array( z.object({ id: z.string(), sort: z.number(), }), ), }), ) .mutation(async ({ input, ctx }) => { return ctx.sessionGroupModel.updateOrder(input.sortMap); }), }); export type SessionGroupRouter = typeof sessionGroupRouter;