Files
discdrop/src/main/java/io/discdrop/service/FeedService.java
T
2026-07-27 10:20:20 +02:00

41 lines
1.1 KiB
Java

package io.discdrop.service;
import io.discdrop.persistence.ReleaseGroupEntity;
import io.quarkus.hibernate.orm.panache.PanacheQuery;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.transaction.Transactional;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import java.util.List;
@ApplicationScoped
public class FeedService {
@ConfigProperty(name = "discdrop.feed.page-size", defaultValue = "25")
int pageSize;
private static final String ORDER_HQL =
"ORDER BY firstReleaseDate DESC NULLS LAST, discoveredAt DESC";
private PanacheQuery<ReleaseGroupEntity> orderedQuery() {
return ReleaseGroupEntity.find(ORDER_HQL);
}
@Transactional
public List<ReleaseGroupEntity> feedPage(int offset) {
if (offset < 0) {
offset = 0;
}
return orderedQuery().range(offset, offset + pageSize - 1).list();
}
@Transactional
public List<ReleaseGroupEntity> latest(int count) {
return orderedQuery().range(0, Math.max(0, count - 1)).list();
}
public int pageSize() {
return pageSize;
}
}