"""Panel widget yönetimi (JWT). Thin handler'lar."""
from fastapi import APIRouter, Depends

from app.auth.dependencies import get_current_tenant
from app.models.tenant import Tenant
from app.schemas.chat import CreateWidgetRequest, UpdateWidgetRequest
from app.services.widget_service import WidgetService
from app.utils.responses import created, ok

router = APIRouter(prefix="/api/widgets", tags=["widgets"])


@router.get("")
async def list_widgets(
    tenant: Tenant = Depends(get_current_tenant),
    service: WidgetService = Depends(),
):
    return ok(await service.list_widgets(tenant.id))


@router.post("")
async def create_widget(
    body: CreateWidgetRequest,
    tenant: Tenant = Depends(get_current_tenant),
    service: WidgetService = Depends(),
):
    result = await service.create_widget(tenant.id, body)
    return created(result.model_dump(mode="json"))


@router.get("/{widget_id}")
async def get_widget(
    widget_id: str,
    tenant: Tenant = Depends(get_current_tenant),
    service: WidgetService = Depends(),
):
    result = await service.get_widget(widget_id, tenant.id)
    return ok(result.model_dump(mode="json"))


@router.put("/{widget_id}")
async def update_widget(
    widget_id: str,
    body: UpdateWidgetRequest,
    tenant: Tenant = Depends(get_current_tenant),
    service: WidgetService = Depends(),
):
    result = await service.update_widget(widget_id, tenant.id, body)
    return ok(result.model_dump(mode="json"))
