lobe-chat

Форк
0
77 строк · 2.0 Кб
1
import { z } from 'zod';
2

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';
7

8
const sessionProcedure = authedProcedure.use(async (opts) => {
9
  const { ctx } = opts;
10

11
  return opts.next({
12
    ctx: {
13
      sessionGroupModel: new SessionGroupModel(ctx.userId),
14
    },
15
  });
16
});
17

18
export const sessionGroupRouter = router({
19
  createSessionGroup: sessionProcedure
20
    .input(
21
      z.object({
22
        name: z.string(),
23
        sort: z.number().optional(),
24
      }),
25
    )
26
    .mutation(async ({ input, ctx }) => {
27
      const data = await ctx.sessionGroupModel.create({
28
        name: input.name,
29
        sort: input.sort,
30
      });
31

32
      return data?.id;
33
    }),
34

35
  getSessionGroup: sessionProcedure.query(async ({ ctx }): Promise<SessionGroupItem[]> => {
36
    return ctx.sessionGroupModel.query() as any;
37
  }),
38

39
  removeAllSessionGroups: sessionProcedure.mutation(async ({ ctx }) => {
40
    return ctx.sessionGroupModel.deleteAll();
41
  }),
42

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);
47
    }),
48

49
  updateSessionGroup: sessionProcedure
50
    .input(
51
      z.object({
52
        id: z.string(),
53
        value: insertSessionGroupSchema.partial(),
54
      }),
55
    )
56
    .mutation(async ({ input, ctx }) => {
57
      return ctx.sessionGroupModel.update(input.id, input.value);
58
    }),
59
  updateSessionGroupOrder: sessionProcedure
60
    .input(
61
      z.object({
62
        sortMap: z.array(
63
          z.object({
64
            id: z.string(),
65
            sort: z.number(),
66
          }),
67
        ),
68
      }),
69
    )
70
    .mutation(async ({ input, ctx }) => {
71
      console.log('sortMap:', input.sortMap);
72

73
      return ctx.sessionGroupModel.updateOrder(input.sortMap);
74
    }),
75
});
76

77
export type SessionGroupRouter = typeof sessionGroupRouter;
78

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.