"""Endpoints module.""" from typing import Annotated, List from fastapi import APIRouter, Depends from pydantic import BaseModel from dependency_injector.wiring import Provide, inject from .containers import Container from .services import SearchService class Gif(BaseModel): url: str class Response(BaseModel): query: str limit: int gifs: List[Gif] router = APIRouter() @router.get("/", response_model=Response) @inject async def index( default_query: Annotated[str, Depends(Provide[Container.config.default.query])], default_limit: Annotated[ int, Depends(Provide[Container.config.default.limit.as_int()]) ], search_service: Annotated[ SearchService, Depends(Provide[Container.search_service]) ], query: str | None = None, limit: int | None = None, ): query = query or default_query limit = limit or default_limit gifs = await search_service.search(query, limit) return { "query": query, "limit": limit, "gifs": gifs, }