1
import { z } from 'zod';
3
import { SessionGroupModel } from '@/database/server/models/sessionGroup';
4
import { insertSessionGroupSchema } from '@/database/server/schemas/lobechat';
5
import { authedProcedure, router } from '@/libs/trpc';
6
import { SessionGroupItem } from '@/types/session';
8
const sessionProcedure = authedProcedure.use(async (opts) => {
13
sessionGroupModel: new SessionGroupModel(ctx.userId),
18
export const sessionGroupRouter = router({
19
createSessionGroup: sessionProcedure
23
sort: z.number().optional(),
26
.mutation(async ({ input, ctx }) => {
27
const data = await ctx.sessionGroupModel.create({
35
getSessionGroup: sessionProcedure.query(async ({ ctx }): Promise<SessionGroupItem[]> => {
36
return ctx.sessionGroupModel.query() as any;
39
removeAllSessionGroups: sessionProcedure.mutation(async ({ ctx }) => {
40
return ctx.sessionGroupModel.deleteAll();
43
removeSessionGroup: sessionProcedure
44
.input(z.object({ id: z.string(), removeChildren: z.boolean().optional() }))
45
.mutation(async ({ input, ctx }) => {
46
return ctx.sessionGroupModel.delete(input.id);
49
updateSessionGroup: sessionProcedure
53
value: insertSessionGroupSchema.partial(),
56
.mutation(async ({ input, ctx }) => {
57
return ctx.sessionGroupModel.update(input.id, input.value);
59
updateSessionGroupOrder: sessionProcedure
70
.mutation(async ({ input, ctx }) => {
71
console.log('sortMap:', input.sortMap);
73
return ctx.sessionGroupModel.updateOrder(input.sortMap);
77
export type SessionGroupRouter = typeof sessionGroupRouter;