Interface MensagemM2mRepository

All Superinterfaces:
io.micronaut.data.repository.CrudRepository<MensagemM2m, Long>, io.micronaut.data.repository.GenericRepository<MensagemM2m, Long>

@JdbcRepository(dialect=POSTGRES) public interface MensagemM2mRepository extends io.micronaut.data.repository.CrudRepository<MensagemM2m, Long>
Repositório Data JDBC da MensagemM2m. Dialeto Postgres — o dialeto de produção; o teste de plataforma sobe Postgres real (Testcontainers), então o SQL gerado é exercitado tal como roda em produção.
  • Method Details

    • findByDirecaoAndStatusInAndTentativasLessThanOrderById

      List<MensagemM2m> findByDirecaoAndStatusInAndTentativasLessThanOrderById(Direcao direcao, Collection<Status> status, int tentativas, io.micronaut.data.model.Pageable pageable)
      Candidatas ao despacho: saída pendente/em-erro ainda abaixo do teto de tentativas, mais antigas primeiro. Sem lock de linha (semântica AT-LEAST-ONCE — dedup é do receptor).
      Parameters:
      direcao - sempre Direcao.SAIDA.
      status - tipicamente [PENDENTE, ERRO].
      tentativas - teto exclusivo (linhas com tentativas < este valor).
      pageable - limite do lote por tick.
      Returns:
      lote a despachar.
    • listarRecentes

      @Query("SELECT * FROM mensagem_m2m ORDER BY id DESC") List<MensagemM2m> listarRecentes()
      Lista para a tela (mais recentes primeiro); filtro fino fica no controller (volume de admin).
    • deleteByStatusInAndUpdatedAtLessThan

      long deleteByStatusInAndUpdatedAtLessThan(Collection<Status> status, Instant corte)
      Poda de retenção: remove os terminais de auditoria mais velhos que o corte. PAUSADO/ CANCELADO nunca entram aqui (retidos até o operador limpar).
      Parameters:
      status - tipicamente [ENVIADO, RECEBIDO].
      corte - instante-limite; linhas com updatedAt < corte são removidas.
      Returns:
      quantidade removida.