import { Injectable } from '@nestjs/common'; import { generateShortId } from '../../common/utils/id.util'; import { KnowledgeItemType } from './types/knowledge-item.types'; export interface KnowledgeItem { id: string; userId: string; knowledgeBaseId: string; parentId: string | null; itemType: KnowledgeItemType; title: string; content: string; orderIndex: number; createdAt: Date; updatedAt: Date; } @Injectable() export class KnowledgeItemsRepository { private items: Map = new Map(); async create(userId: string, knowledgeBaseId: string, dto: any): Promise { const item: KnowledgeItem = { id: generateShortId(), userId, knowledgeBaseId, parentId: dto.parentId || null, itemType: dto.itemType || 'lesson', title: dto.title || '', content: dto.content || '', orderIndex: dto.orderIndex || 0, createdAt: new Date(), updatedAt: new Date(), }; this.items.set(item.id, item); return item; } async findById(id: string): Promise { return this.items.get(id); } async findByKnowledgeBaseId(knowledgeBaseId: string): Promise { return Array.from(this.items.values()).filter((i) => i.knowledgeBaseId === knowledgeBaseId); } async update(id: string, dto: any): Promise { const item = this.items.get(id); if (!item) return undefined; Object.assign(item, { ...dto, updatedAt: new Date() }); return item; } }