1
import { z } from 'zod';
3
import { KnowledgeBaseModel } from '@/database/server/models/knowledgeBase';
4
import { insertKnowledgeBasesSchema } from '@/database/server/schemas/lobechat';
5
import { authedProcedure, router } from '@/libs/trpc';
6
import { KnowledgeBaseItem } from '@/types/knowledgeBase';
8
const knowledgeBaseProcedure = authedProcedure.use(async (opts) => {
13
knowledgeBaseModel: new KnowledgeBaseModel(ctx.userId),
18
export const knowledgeBaseRouter = router({
19
addFilesToKnowledgeBase: knowledgeBaseProcedure
20
.input(z.object({ ids: z.array(z.string()), knowledgeBaseId: z.string() }))
21
.mutation(async ({ input, ctx }) => {
22
return ctx.knowledgeBaseModel.addFilesToKnowledgeBase(input.knowledgeBaseId, input.ids);
25
createKnowledgeBase: knowledgeBaseProcedure
28
avatar: z.string().optional(),
29
description: z.string().optional(),
33
.mutation(async ({ input, ctx }) => {
34
const data = await ctx.knowledgeBaseModel.create({
36
description: input.description,
43
getKnowledgeBaseById: knowledgeBaseProcedure
44
.input(z.object({ id: z.string() }))
45
.query(async ({ ctx, input }): Promise<KnowledgeBaseItem | undefined> => {
46
return ctx.knowledgeBaseModel.findById(input.id);
49
getKnowledgeBases: knowledgeBaseProcedure.query(async ({ ctx }): Promise<KnowledgeBaseItem[]> => {
50
return ctx.knowledgeBaseModel.query();
53
removeAllKnowledgeBases: knowledgeBaseProcedure.mutation(async ({ ctx }) => {
54
return ctx.knowledgeBaseModel.deleteAll();
57
removeFilesFromKnowledgeBase: knowledgeBaseProcedure
58
.input(z.object({ ids: z.array(z.string()), knowledgeBaseId: z.string() }))
59
.mutation(async ({ input, ctx }) => {
60
return ctx.knowledgeBaseModel.removeFilesFromKnowledgeBase(input.knowledgeBaseId, input.ids);
63
removeKnowledgeBase: knowledgeBaseProcedure
64
.input(z.object({ id: z.string(), removeFiles: z.boolean().optional() }))
65
.mutation(async ({ input, ctx }) => {
66
return ctx.knowledgeBaseModel.delete(input.id);
69
updateKnowledgeBase: knowledgeBaseProcedure
73
value: insertKnowledgeBasesSchema.partial(),
76
.mutation(async ({ input, ctx }) => {
77
return ctx.knowledgeBaseModel.update(input.id, input.value);