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.

52 lines (41 loc) 1.71 kB
import { INBOX_SESSION_ID } from '@/const/session'; import { clientDB } from '@/database/client/db'; import { MessageModel } from '@/database/models/message'; import { ThreadModel } from '@/database/models/thread'; import { BaseClientService } from '@/services/baseClientService'; import { IThreadService } from './type'; export class ClientService extends BaseClientService implements IThreadService { private get threadModel(): ThreadModel { return new ThreadModel(clientDB as any, this.userId); } private get messageModel(): MessageModel { return new MessageModel(clientDB as any, this.userId); } getThreads: IThreadService['getThreads'] = async (topicId) => { return this.threadModel.queryByTopicId(topicId); }; createThreadWithMessage: IThreadService['createThreadWithMessage'] = async (input) => { const thread = await this.threadModel.create({ parentThreadId: input.parentThreadId, sourceMessageId: input.sourceMessageId, title: input.message.content.slice(0, 20), topicId: input.topicId, type: input.type, }); const message = await this.messageModel.create({ ...input.message, sessionId: this.toDbSessionId(input.message.sessionId) as string, threadId: thread?.id, }); return { messageId: message?.id, threadId: thread?.id }; }; updateThread: IThreadService['updateThread'] = async (id, data) => { return this.threadModel.update(id, data); }; removeThread: IThreadService['removeThread'] = async (id) => { return this.threadModel.delete(id); }; private toDbSessionId = (sessionId: string | undefined) => { return sessionId === INBOX_SESSION_ID ? null : sessionId; }; }