"""POST /api/featured-image/{entity_type}/{entity_id} — featured-image upload.

Replaces v1's eight per-entity ``POST /{plural}/{id}/featured-image`` routes
(main.py ≈4788-4827) with one parameterized route over the same entity map
(area/planting/plant/species/variety/station/supply/year).

Multipart form: file field ``image``; optional ``remove=1`` clears the
current featured image instead (v2 addition). All behavior lives in
services/featured_images.py.
"""
from __future__ import annotations

from fastapi import APIRouter, Depends, File, Form, UploadFile
from pydantic import BaseModel
from sqlalchemy.orm import Session

from ..db import get_db
from ..deps import current_garden_id
from ..services import featured_images as svc

router = APIRouter(prefix="/api/featured-image", tags=["featured-image"])


class FeaturedImageOut(BaseModel):
    ok: bool = True
    entity_type: str
    entity_id: int
    featured_image_path: str = ""


@router.post("/{entity_type}/{entity_id}", response_model=FeaturedImageOut)
def set_featured_image(
    entity_type: str,
    entity_id: int,
    image: UploadFile | None = File(None),
    remove: str = Form(""),
    db: Session = Depends(get_db),
    garden_id: int = Depends(current_garden_id),
) -> dict:
    if remove.strip() == "1":
        return svc.remove_featured_image(db, garden_id, entity_type, entity_id)
    return svc.set_featured_image(db, garden_id, entity_type, entity_id, image)
