from datetime import datetime
from typing import Annotated

from fastapi import APIRouter, Depends, Query

from app.dependencies import get_event_service, require_auth
from app.schemas.event import EventSearchResponse
from app.services.event_service import EventService

router = APIRouter(prefix="/api/events", tags=["Events"], dependencies=[Depends(require_auth)])


@router.get("", response_model=EventSearchResponse, summary="Search event timeline")
async def search_events(
    event_service: Annotated[EventService, Depends(get_event_service)],
    camera_id: int | None = None,
    detected_object: str | None = None,
    start: datetime | None = None,
    end: datetime | None = None,
    page: int = Query(default=1, ge=1),
    limit: int = Query(default=50, ge=1, le=500),
) -> EventSearchResponse:
    items, total = await event_service.search_events(camera_id, detected_object, start, end, page, limit)
    return EventSearchResponse(items=items, page=page, limit=limit, total=total)
