31 lines
No EOL
1.5 KiB
Python
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 ClientIndexRepository
|
|
from typing import Tuple, List, Dict, Any
|
|
|
|
|
|
class ClientIndexAction(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 ClientIndexRepository é onde a lógica de acesso ao BD está (SELECT * FROM client LIMIT first OFFSET skip)
|
|
client_index_repository = ClientIndexRepository()
|
|
|
|
# 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 |