Files
study-agent-service/routers/library.py
2026-08-02 22:57:36 +08:00

38 lines
1.3 KiB
Python

from typing import List
from fastapi import APIRouter, Depends, File, Form, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from database import get_db
from schemas.library import LibraryFileRequest, LibraryFileResponse
from service import library_service
from storage import upload_rustfs
from ocr import ocr_from_url
router = APIRouter(prefix="/library", tags=["Library"])
@router.post("/upload")
def upload(file: UploadFile = File(...), filename: str = Form(...)):
url = upload_rustfs(file.file, filename)
return ocr_from_url(url)
@router.get("/files", response_model=List[LibraryFileResponse])
async def list_files(db: AsyncSession = Depends(get_db)):
return await library_service.list_files(db)
@router.get("/files/{file_id}", response_model=LibraryFileResponse)
async def get_file(file_id: int, db: AsyncSession = Depends(get_db)):
return await library_service.get_file(db, file_id)
@router.post("/files", response_model=bool)
async def add_file(data: LibraryFileRequest, db: AsyncSession = Depends(get_db)):
return await library_service.add_file(db, data)
@router.put("/files/{file_id}", response_model=bool)
async def edit_file(file_id: int, data: LibraryFileRequest, db: AsyncSession = Depends(get_db)):
return await library_service.edit_file(db, file_id, data)