from typing import List
from sqlalchemy.ext.asyncio import AsyncSession

from src.core.api_responses import to_schema_dict
from src.schemas.classificacao import ClassifierSchema, ClassifierUpdate
from src.crud.classificacao import crud as classifier_crud


class ClassifierService:

    @staticmethod
    async def get_classifiers(db: AsyncSession) -> List[ClassifierSchema]:
        classifiers = await classifier_crud.get_classifiers(db)
        return [to_schema_dict(ClassifierSchema, c) for c in classifiers]

    @staticmethod
    async def update_classifier(
        db: AsyncSession,
        empresa: str,
        sistema: str,
        update_data: ClassifierUpdate
    ) -> ClassifierSchema:
        updated = await classifier_crud.update_classifier(
            db,
            empresa,
            sistema,
            update_data
        )
        if not updated:
            return None
        return to_schema_dict(ClassifierSchema, updated)
