from __future__ import annotations from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.database import get_db from app.auth import get_current_user from app.models.site_image import SiteImage from app.schemas.site_image import SiteImageSchema, SiteImageResponse router = APIRouter(prefix="/api/site-images", tags=["网站图片"], dependencies=[Depends(get_current_user)]) @router.get("/", response_model=list[SiteImageResponse]) def list_images(db: Session = Depends(get_db)): images = db.query(SiteImage).order_by(SiteImage.group_name, SiteImage.image_key).all() return [SiteImageResponse.model_validate(img) for img in images] @router.put("/{image_id}", response_model=SiteImageResponse) def update_image(image_id: int, req: SiteImageSchema, db: Session = Depends(get_db)): img = db.query(SiteImage).get(image_id) if not img: raise HTTPException(status_code=404, detail="图片不存在") img.image_path = req.image_path img.label = req.label img.size_hint = req.size_hint img.description = req.description db.commit() db.refresh(img) return SiteImageResponse.model_validate(img) @router.post("/", response_model=SiteImageResponse, status_code=201) def create_image(req: SiteImageSchema, db: Session = Depends(get_db)): img = SiteImage(**req.model_dump()) db.add(img) db.commit() db.refresh(img) return SiteImageResponse.model_validate(img) @router.delete("/{image_id}") def delete_image(image_id: int, db: Session = Depends(get_db)): img = db.query(SiteImage).get(image_id) if not img: raise HTTPException(status_code=404, detail="图片不存在") db.delete(img) db.commit() return {"message": "删除成功"}