"""Supplier profile endpoints.""" from typing import Annotated from fastapi import APIRouter, Depends, Query from app.api.dependencies import DatabaseSession, require_permission from app.models.entities import UserAccount from app.schemas.common import ApiResponse from app.schemas.suppliers import SupplierListData, SupplierProfileData from app.services.suppliers import SupplierProfileService router = APIRouter(prefix="/suppliers", tags=["suppliers"]) @router.get("", response_model=ApiResponse[SupplierListData]) async def list_suppliers( session: DatabaseSession, _current_user: Annotated[UserAccount, Depends(require_permission("supplier.read"))], keyword: str | None = Query(default=None, max_length=100), limit: int = Query(default=100, ge=1, le=100), ) -> ApiResponse[SupplierListData]: return ApiResponse(data=await SupplierProfileService(session).list(keyword=keyword, limit=limit)) @router.get("/{supplier_name}", response_model=ApiResponse[SupplierProfileData]) async def get_supplier_profile( supplier_name: str, session: DatabaseSession, _current_user: Annotated[UserAccount, Depends(require_permission("supplier.read"))], ) -> ApiResponse[SupplierProfileData]: return ApiResponse(data=await SupplierProfileService(session).detail(supplier_name))