Skip to content

3.0 – Feed with Fan-Out, Event Filters, and Privacy Support

Choose a tag to compare

@lucas-adm lucas-adm released this 02 Jun 12:02
· 10 commits to main since this release

Destaques

  • Implementação do sistema de feed baseado em fan-out — eventos de usuários seguidos são distribuídos em tempo real para os seguidores do actor
  • Suporte a múltiplos tipos de evento: criação de notas, chamas, comentários e novos follows
  • Respeito à política de privacidade de perfil — usuários privados só geram eventos para mútuos
  • Filtro de eventos por tipo via query param events, suportando múltiplos valores
  • Limpeza automática de eventos via ON DELETE CASCADE e handlers dedicados para unfollow, nota oculta e alteração de privacidade

Alterações principais

  • Novo endpoint GET /api/v1/feed com paginação, ordenação por createdAt DESC e filtro por tipo de evento
  • Fan-out assíncrono com @Async + @Transactional para inserção de eventos, recebendo IDs para evitar entidades detached
  • Limpeza de eventos delegada ao banco via ON DELETE CASCADE para deleção de notas, chamas e comentários
  • Handlers de limpeza para unfollow, nota oculta e alteração de privacidade de perfil
  • FeedSpec com JpaSpecificationExecutor para filtros dinâmicos opcionais
  • FeedEventParamConverter para aceitar valores User_Followed, Note_Created, Note_Flamed e Note_Commented como query params
  • Migration V20260529__create_table_feed.sql com índice composto (recipient_id, created_at DESC)
  • DetailCommentRES atualizado para incluir o campo note
  • Remoção do endpoint legado GET /api/v1/notes/private/following e métodos associados

Breaking Changes

  • Endpoint GET /api/v1/notes/private/following removido — substituído por GET /api/v1/feed
  • DetailCommentRES passou a incluir o campo note, o que pode impactar consumers que dependiam da estrutura anterior

Notas de upgrade

Atualize para a tag / release:

git fetch --tags
git checkout v3.0