diff --git a/app/.DS_Store b/app/.DS_Store index 3a0254a..8a412a3 100644 Binary files a/app/.DS_Store and b/app/.DS_Store differ diff --git a/app/api/endpoints/knowledge_base.py b/app/api/endpoints/knowledge_base.py index bfc40b4..9bc9154 100644 --- a/app/api/endpoints/knowledge_base.py +++ b/app/api/endpoints/knowledge_base.py @@ -1,6 +1,6 @@ from fastapi import APIRouter, Depends, HTTPException, BackgroundTasks from typing import Optional, List -from app.models.models import KnowledgeBase, KnowledgeBaseListResponse, CreateKnowledgeBaseRequest, Tag +from app.models.models import KnowledgeBase, KnowledgeBaseListResponse, CreateKnowledgeBaseRequest, UpdateKnowledgeBaseRequest, Tag from app.core.database import get_db_connection from app.core.auth import get_current_user from app.core.response import create_api_response @@ -198,6 +198,46 @@ def get_knowledge_base_detail( return kb_data +@router.put("/knowledge-bases/{kb_id}") +def update_knowledge_base( + kb_id: int, + request: UpdateKnowledgeBaseRequest, + current_user: dict = Depends(get_current_user) +): + with get_db_connection() as connection: + cursor = connection.cursor(dictionary=True) + + # Check if knowledge base exists and user has permission + cursor.execute( + "SELECT kb_id, creator_id FROM knowledge_bases WHERE kb_id = %s", + (kb_id,) + ) + kb = cursor.fetchone() + + if not kb: + raise HTTPException(status_code=404, detail="Knowledge base not found") + + if kb['creator_id'] != current_user['user_id']: + raise HTTPException(status_code=403, detail="Only the creator can update this knowledge base") + + # Update the knowledge base + now = datetime.datetime.utcnow() + update_query = """ + UPDATE knowledge_bases + SET title = %s, content = %s, tags = %s, updated_at = %s + WHERE kb_id = %s + """ + cursor.execute(update_query, ( + request.title, + request.content, + request.tags, + now, + kb_id + )) + connection.commit() + + return {"message": "Knowledge base updated successfully"} + @router.delete("/knowledge-bases/{kb_id}") def delete_knowledge_base( kb_id: int, diff --git a/app/models/models.py b/app/models/models.py index f0ff74d..bfd1219 100644 --- a/app/models/models.py +++ b/app/models/models.py @@ -127,9 +127,12 @@ class KnowledgeBase(BaseModel): creator_caption: str # To show in the UI is_shared: bool source_meeting_ids: Optional[str] = None + user_prompt: Optional[str] = None tags: Optional[List[Tag]] = [] created_at: datetime.datetime updated_at: datetime.datetime + source_meeting_count: Optional[int] = 0 + created_by_name: Optional[str] = None class KnowledgeBaseTask(BaseModel): task_id: str @@ -150,6 +153,11 @@ class CreateKnowledgeBaseRequest(BaseModel): source_meeting_ids: Optional[str] = None tags: Optional[str] = None +class UpdateKnowledgeBaseRequest(BaseModel): + title: str + content: Optional[str] = None + tags: Optional[str] = None + class KnowledgeBaseListResponse(BaseModel): kbs: List[KnowledgeBase] total: int