import logging

from typing import Optional, List
from crud.alerta_cliente import crud
from models.alerta_cliente import Cliente
from sqlalchemy.ext.asyncio import AsyncSession

logger = logging.getLogger(__name__)

class ClienteService:
    @staticmethod
    async def listar(
        db: AsyncSession,
        *,
        cnpj: Optional[str] = None,
    ) -> List[Cliente]:
        """Lista clientes com filtro opcional por CNPJ"""
        logger.debug(f"ClienteService.listar chamado - CNPJ: {cnpj}")
        try:
            result = await crud.list(db, cnpj=cnpj)
            logger.debug(f"ClienteService.listar retornou {len(result)} clientes")
            return result
        except Exception as e:
            logger.error(f"Erro em ClienteService.listar: {e}", exc_info=True)
            raise

    @staticmethod
    async def buscar_por_cnpj(
        db: AsyncSession,
        cnpj: str,
    ) -> Optional[Cliente]:
        """Busca cliente específico por CNPJ"""
        return await crud.get_by_cnpj(db, cnpj)

