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