Add endpoint to retrieve latest publications.

This commit is contained in:
Florian THIERRY
2024-06-04 13:06:20 +02:00
parent 067bf7885a
commit 58295398e0
7 changed files with 53 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import org.codiki.domain.publication.port.PublicationPort;
import org.codiki.infrastructure.publication.model.PublicationEntity;
import org.codiki.infrastructure.publication.model.PublicationSearchResult;
import org.codiki.infrastructure.publication.repository.PublicationRepository;
import org.springframework.data.domain.Limit;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -56,4 +57,12 @@ public class PublicationJpaAdapter implements PublicationPort {
.map(PublicationSearchResult::getPublication)
.toList();
}
@Override
public List<Publication> getLatest() {
return repository.getLatest(Limit.of(10))
.stream()
.map(PublicationEntity::toDomain)
.toList();
}
}

View File

@@ -1,9 +1,11 @@
package org.codiki.infrastructure.publication.repository;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.codiki.infrastructure.publication.model.PublicationEntity;
import org.springframework.data.domain.Limit;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
@@ -16,4 +18,12 @@ public interface PublicationRepository extends JpaRepository<PublicationEntity,
WHERE p.id = :publicationId
""")
Optional<PublicationEntity> findById(@Param("publicationId") UUID publicationId);
@Query("""
SELECT p
FROM PublicationEntity p
JOIN FETCH p.author a
ORDER BY p.creationDate DESC
""")
List<PublicationEntity> getLatest(Limit limit);
}