Files
ai-worker-platform/backend/app/api/v1/knowledge.py
T

62 lines
1.9 KiB
Python
Raw Normal View History

"""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")