39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlmodel import Session, select
|
|
from app.core.database import get_session
|
|
from app.models.models import ImageHistory, Character, StoryboardItem
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/{entity_type}/{entity_id}")
|
|
def get_history(entity_type: str, entity_id: int, session: Session = Depends(get_session)):
|
|
# entity_type: 'character' or 'panel'
|
|
statement = select(ImageHistory).where(
|
|
ImageHistory.entity_type == entity_type,
|
|
ImageHistory.entity_id == entity_id
|
|
).order_by(ImageHistory.created_at.desc())
|
|
history = session.exec(statement).all()
|
|
return history
|
|
|
|
@router.post("/select/{history_id}")
|
|
def select_image(history_id: int, session: Session = Depends(get_session)):
|
|
history = session.get(ImageHistory, history_id)
|
|
if not history:
|
|
raise HTTPException(status_code=404, detail="History item not found")
|
|
|
|
if history.entity_type == "character":
|
|
entity = session.get(Character, history.entity_id)
|
|
elif history.entity_type == "panel":
|
|
entity = session.get(StoryboardItem, history.entity_id)
|
|
else:
|
|
raise HTTPException(status_code=400, detail="Unknown entity type")
|
|
|
|
if not entity:
|
|
raise HTTPException(status_code=404, detail="Entity not found")
|
|
|
|
entity.image_url = history.image_url
|
|
session.add(entity)
|
|
session.commit()
|
|
session.refresh(entity)
|
|
return {"status": "success", "image_url": entity.image_url}
|