monitoring-api/packages/v1/administrativo/actions/client/client_index_action.py

31 lines
No EOL
1.5 KiB
Python

from abstracts.action import BaseAction
# O repositório deve ser adaptado para a listagem (indexação) da tabela 'client'
from packages.v1.administrativo.repositories.client.client_index_repository import IndexRepository
from typing import Tuple, List, Dict, Any
class IndexAction(BaseAction):
"""
Action responsável por orquestrar a listagem (indexação) de todos
os registros da tabela 'client' com suporte a paginação.
"""
# O método execute recebe 'first' e 'skip' para paginação
def execute(self, first: int, skip: int) -> Tuple[List[Dict[str, Any]], int]:
"""
Executa a lógica de listagem de clientes com paginação.
:param first: Número máximo de registros a retornar (LIMIT).
:param skip: Número de registros a pular (OFFSET).
:return: Tupla com a lista de clientes e o total de registros.
"""
# Instânciamento do repositório de indexação (listagem) de clientes
# Supondo que IndexRepository é onde a lógica de acesso ao BD está (SELECT * FROM client LIMIT first OFFSET skip)
client_index_repository = IndexRepository()
# Execução do repositório para buscar os clientes com paginação
# A resposta (response) conteria os campos da DDL: client_id, cns, name, date_register, state, city, responsible, consultant, type_contract
response, total_records = client_index_repository.execute(first, skip)
# Retorno da informação
return response, total_records