Удален fetchLatest, добавлен поиск по паттерну

This commit is contained in:
serega6531
2019-05-16 16:01:15 +03:00
parent 0e84950041
commit 414bb151ae
3 changed files with 23 additions and 12 deletions

View File

@@ -6,8 +6,6 @@ import org.springframework.data.domain.Sort;
@Data @Data
public class Pagination { public class Pagination {
private boolean fetchLatest;
private Sort.Direction direction; private Sort.Direction direction;
private long startingFrom; private long startingFrom;

View File

@@ -3,22 +3,27 @@ package ru.serega6531.packmate.repository;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import ru.serega6531.packmate.model.CtfService; import ru.serega6531.packmate.model.CtfService;
import ru.serega6531.packmate.model.Pattern;
import ru.serega6531.packmate.model.Stream; import ru.serega6531.packmate.model.Stream;
import java.util.List; import java.util.List;
public interface StreamRepository extends JpaRepository<Stream, Long> { public interface StreamRepository extends JpaRepository<Stream, Long> {
List<Stream> findAllByFavorite(Pageable pageable, boolean favorite);
List<Stream> findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
List<Stream> findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
List<Stream> findAllByServiceAndFavorite(CtfService service, boolean favorite, Pageable pageable); List<Stream> findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable);
List<Stream> findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
List<Stream> findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable);
} }

View File

@@ -124,8 +124,12 @@ public class StreamService {
public List<Stream> findAll(Pagination pagination) { public List<Stream> findAll(Pagination pagination) {
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id"); PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
if(pagination.isFetchLatest()) { // последние стримы if (pagination.getPattern() != null) { // задан паттерн для поиска
return repository.findAllByFavorite(page, pagination.isFavorites()); if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page);
} else { // более старые стримы
return repository.findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page);
}
} else { } else {
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByIdGreaterThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page); return repository.findAllByIdGreaterThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page);
@@ -138,8 +142,12 @@ public class StreamService {
public List<Stream> findAllByService(Pagination pagination, CtfService service) { public List<Stream> findAllByService(Pagination pagination, CtfService service) {
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id"); PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
if(pagination.isFetchLatest()) { // последние стримы if (pagination.getPattern() != null) { // задан паттерн для поиска
return repository.findAllByServiceAndFavorite(service, pagination.isFavorites(), page); if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern() page);
} else { // более старые стримы
return repository.findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page);
}
} else { } else {
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByServiceAndIdGreaterThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page); return repository.findAllByServiceAndIdGreaterThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page);