Class: CongregaPlenum::PartiesService
- Inherits:
-
Object
- Object
- CongregaPlenum::PartiesService
- Defined in:
- lib/modules/parties_service.rb,
sig/congrega_plenum.rbs
Overview
Service responsible for interacting with party endpoints. It exposes class methods that hide pagination, retries and detail lookups.
Constant Summary collapse
- ITEMS_PER_PAGE =
Default page size for party listings.
100- PROGRESS_INTERVAL =
Interval used to emit progress logs while iterating.
20- SERVICE_TAG =
Tag prefix for structured logging.
'CongregaPlenum::PartiesService'
Class Method Summary collapse
-
.api_get(endpoint, params = {}) ⇒ payload_hash
Wraps Client#get to add service context without hiding request failures.
-
.api_get_paginated(endpoint, params = {}) ⇒ payload_list
Bulk variant of PartiesService.api_get.
-
.client ⇒ CongregaPlenum::Client
Shared client instance configured via configure.
-
.fetch_all ⇒ Array<Hash>
Fetches every party registered na API, enriquecendo com payload detalhado.
-
.fetch_by_id(party_id) ⇒ Hash?
Retrieves the detailed payload for a single party.
-
.fetch_list(page: 1, items_per_page: ITEMS_PER_PAGE) ⇒ Array<Hash>
Returns a paginated list of parties, without triggering detail lookups.
Class Method Details
.api_get(endpoint, params = {}) ⇒ payload_hash
Wraps Client#get to add service context without hiding request failures.
23 24 25 26 27 28 |
# File 'lib/modules/parties_service.rb', line 23 def api_get(endpoint, params = {}) client.get(endpoint, params) rescue StandardError => e log_error("Erro ao acessar API em #{endpoint}: #{e.}") raise end |
.api_get_paginated(endpoint, params = {}) ⇒ payload_list
Bulk variant of api_get. Failures are propagated so consumers can abort an incomplete synchronization.
32 33 34 35 36 37 |
# File 'lib/modules/parties_service.rb', line 32 def api_get_paginated(endpoint, params = {}) client.get_paginated(endpoint, params) rescue StandardError => e log_error("Erro paginando API em #{endpoint}: #{e.}") raise end |
.client ⇒ CongregaPlenum::Client
Shared client instance configured via CongregaPlenum.configure.
18 19 20 |
# File 'lib/modules/parties_service.rb', line 18 def client @client ||= CongregaPlenum::Client.instance end |
.fetch_all ⇒ Array<Hash>
Fetches every party registered na API, enriquecendo com payload detalhado.
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/modules/parties_service.rb', line 42 def fetch_all log_info('Iniciando coleta de todos os partidos') parties = api_get_paginated('partidos', itens: ITEMS_PER_PAGE) log_info("Coletamos #{parties.length} partidos da listagem") detailed_parties = build_detailed_parties(parties) log_info("Finalizamos a coleta detalhada de #{detailed_parties.length} partidos") detailed_parties end |
.fetch_by_id(party_id) ⇒ Hash?
Retrieves the detailed payload for a single party.
60 61 62 63 64 65 |
# File 'lib/modules/parties_service.rb', line 60 def fetch_by_id(party_id) log_debug("Buscando partido #{party_id}") response = api_get("partidos/#{party_id}") extract_detail(response, "partido #{party_id}") end |
.fetch_list(page: 1, items_per_page: ITEMS_PER_PAGE) ⇒ Array<Hash>
Returns a paginated list of parties, without triggering detail lookups.
72 73 74 75 76 77 |
# File 'lib/modules/parties_service.rb', line 72 def fetch_list(page: 1, items_per_page: ITEMS_PER_PAGE) log_debug("Buscando lista de partidos página #{page}") response = api_get('partidos', pagina: page, itens: items_per_page) response['dados'] || [] end |