Skip to content

feature: entityArticles — artigos de entidade via Postgres (fix página /entidades)#22

Merged
nitaibezerra merged 1 commit into
mainfrom
feat/entity-articles-pg-resolver
Jun 23, 2026
Merged

feature: entityArticles — artigos de entidade via Postgres (fix página /entidades)#22
nitaibezerra merged 1 commit into
mainfrom
feat/entity-articles-pg-resolver

Conversation

@nitaibezerra

Copy link
Copy Markdown
Contributor

Problema

A página /entidades/[id] mostra 0 artigos ao clicar em qualquer entidade canônica (Q... / dgb_...). Causa: getEntityArticles filtrava por entityCanonical no Typesense, mas o campo entity_canonical dos documentos ainda não foi populado (o reprocessamento está pendente, bloqueado em infra#198).

Solução

Novo resolver entityArticles(entityId, page, limit) que consulta news_entities → news diretamente no Postgres, sem depender do Typesense:

  • _ENTITY_ARTICLES_SQL: CTE deduplica unique_id (news_entities pode ter várias linhas por artigo), ordena por published_at DESC, pagina com LIMIT/OFFSET. Total via subquery.
  • PostgresDatasource.get_entity_articles(): retorna (list[NewsRecord], total_count).
  • EntityQuery.entity_articles: mapeia NewsRecord → Article; clamp defensivo em page/limit.

O campo entityCanonical e o Typesense não são afetados — o reprocessamento ainda vai acontecer; este fix é independente.

Teste

{ entityArticles(entityId: "Q5933752", page: 1, limit: 5) {
    found
    articles { uniqueId title publishedAt }
} }

Confirmado em staging que retorna 7 artigos para Q5933752 (antes retornava 0 via filter.entityCanonical).

Checklist

  • 501 testes passando
  • SDL regenerado (make docs-schema)
  • Companion PR no portal atualiza actions.ts para usar getArticlesByEntity (Postgres) quando canonicalId presente

🤖 Generated with Claude Code

…ense)

Adiciona resolver entityArticles(entityId, page, limit) que consulta
news_entities → news diretamente no Postgres, sem depender do campo
entityCanonical no Typesense (reprocessamento ainda pendente).

- _ENTITY_ARTICLES_SQL: CTE deduplica por unique_id, conta total sem
  window fn no outer SELECT, ordena por published_at DESC
- PostgresDatasource.get_entity_articles(): retorna (records, total_count)
- EntityQuery.entity_articles(): mapeaia NewsRecord → Article via helper
  _news_record_to_article; safe clamp em page/limit
- SDL regenerado: entityArticles(entityId, page, limit) → ArticlesResult
@nitaibezerra nitaibezerra merged commit bb30c39 into main Jun 23, 2026
4 checks passed
@nitaibezerra nitaibezerra deleted the feat/entity-articles-pg-resolver branch June 23, 2026 21:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant