"""Knowledge base endpoints.""" from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from typing import List, Optional from app.database import get_db from app.schemas.knowledge import KnowledgeCreate, KnowledgeResponse, KnowledgeSearchResult from app.services.knowledge_service import KnowledgeService from app.api.deps import get_current_user from app.models.user import User router = APIRouter(prefix="/knowledge") @router.get("", response_model=List[KnowledgeResponse]) def list_docs( project_id: Optional[int] = None, user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return KnowledgeService.list_docs(db, user.tenant_id, project_id) @router.post("", response_model=KnowledgeResponse, status_code=201) def create_doc( req: KnowledgeCreate, user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return KnowledgeService.create_doc(db, user.tenant_id, req) @router.get("/search", response_model=List[KnowledgeSearchResult]) def search_docs( q: str = Query(..., min_length=1), project_id: Optional[int] = None, user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return KnowledgeService.search(db, user.tenant_id, q, project_id) @router.get("/{doc_id}", response_model=KnowledgeResponse) def get_doc( doc_id: int, user: User = Depends(get_current_user), db: Session = Depends(get_db), ): doc = KnowledgeService.get_doc(db, user.tenant_id, doc_id) if not doc: raise HTTPException(status_code=404, detail="Document not found") return doc @router.delete("/{doc_id}") def delete_doc( doc_id: int, user: User = Depends(get_current_user), db: Session = Depends(get_db), ): if KnowledgeService.delete_doc(db, user.tenant_id, doc_id): return {"success": True} raise HTTPException(status_code=404, detail="Document not found")