api-server/src/modules/knowledge-base/knowledge-base.service.ts

45 lines
1.5 KiB
TypeScript
Raw Normal View History

import { Injectable, BadRequestException, NotFoundException } from '@nestjs/common';
import { KnowledgeBaseRepository } from './knowledge-base.repository';
import { MAX_KNOWLEDGE_BASE_COUNT } from './constants/knowledge-base.constants';
@Injectable()
export class KnowledgeBaseService {
constructor(private readonly repository: KnowledgeBaseRepository) {}
async create(userId: string, dto: any) {
const count = await this.repository.countByUserId(userId);
if (count >= MAX_KNOWLEDGE_BASE_COUNT) {
throw new BadRequestException('知识库数量已达到上限');
}
return this.repository.create(userId, dto);
}
async findAll(userId: string, query: any) {
return this.repository.findAllByUserId(userId);
}
async findOne(userId: string, id: string) {
const kb = await this.repository.findById(id);
if (!kb || String(kb.userId) !== userId) {
throw new NotFoundException('知识库不存在');
}
return kb;
}
async update(userId: string, id: string, dto: any) {
const kb = await this.repository.findById(id);
if (!kb || String(kb.userId) !== userId) {
throw new NotFoundException('知识库不存在');
}
return this.repository.update(id, dto);
}
async remove(userId: string, id: string) {
const kb = await this.repository.findById(id);
if (!kb || String(kb.userId) !== userId) {
throw new NotFoundException('知识库不存在');
}
return this.repository.softDelete(id);
}
}