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.

76 lines (56 loc) 1.92 kB
import { TopicModel } from '@/database/_deprecated/models/topic'; import { ChatTopic } from '@/types/topic'; import { CreateTopicParams, ITopicService, QueryTopicParams } from './type'; export class ClientService implements ITopicService { async createTopic(params: CreateTopicParams): Promise<string> { const item = await TopicModel.create(params as any); if (!item) { throw new Error('topic create Error'); } return item.id; } async batchCreateTopics(importTopics: ChatTopic[]) { return TopicModel.batchCreate(importTopics as any); } async cloneTopic(id: string, newTitle?: string) { return TopicModel.duplicateTopic(id, newTitle); } async getTopics(params: QueryTopicParams): Promise<ChatTopic[]> { return TopicModel.query(params); } async searchTopics(keyword: string, sessionId?: string) { return TopicModel.queryByKeyword(keyword, sessionId); } async getAllTopics() { return TopicModel.queryAll(); } async countTopics() { return TopicModel.count(); } // @ts-ignore async rankTopics() { throw new Error('Method not implemented.'); } async updateTopicFavorite(id: string, favorite?: boolean) { return this.updateTopic(id, { favorite }); } async updateTopicTitle(id: string, text: string) { return this.updateTopic(id, { title: text }); } async updateTopic(id: string, data: Partial<ChatTopic>) { const favorite = typeof data.favorite !== 'undefined' ? (data.favorite ? 1 : 0) : undefined; return TopicModel.update(id, { ...data, favorite }); } async removeTopic(id: string) { return TopicModel.delete(id); } async removeTopics(sessionId: string) { return TopicModel.batchDeleteBySessionId(sessionId); } async batchRemoveTopics(topics: string[]) { return TopicModel.batchDelete(topics); } async removeAllTopic() { return TopicModel.clearTable(); } }