Исправлены избранные стримы

This commit is contained in:
serega6531
2019-05-19 00:21:03 +03:00
parent 90c113731c
commit abf5273adf
3 changed files with 80 additions and 19 deletions

View File

@@ -27,14 +27,22 @@ public class StreamController {
@PostMapping("/all") @PostMapping("/all")
public List<Stream> getStreams(@RequestBody Pagination pagination) { public List<Stream> getStreams(@RequestBody Pagination pagination) {
if (pagination.isFavorites()) {
return streamService.findFavorites(pagination);
} else {
return streamService.findAll(pagination); return streamService.findAll(pagination);
} }
}
@PostMapping("/{port}") @PostMapping("/{port}")
public List<Stream> getStreams(@PathVariable int port, @RequestBody Pagination pagination) { public List<Stream> getStreams(@PathVariable int port, @RequestBody Pagination pagination) {
final Optional<CtfService> serviceOptional = servicesService.findByPort(port); final Optional<CtfService> serviceOptional = servicesService.findByPort(port);
if(serviceOptional.isPresent()) { if (serviceOptional.isPresent()) {
if (pagination.isFavorites()) {
return streamService.findFavoritesByService(pagination, serviceOptional.get());
} else {
return streamService.findAllByService(pagination, serviceOptional.get()); return streamService.findAllByService(pagination, serviceOptional.get());
}
} else { } else {
return Collections.emptyList(); return Collections.emptyList();
} }

View File

@@ -10,20 +10,37 @@ import java.util.List;
public interface StreamRepository extends JpaRepository<Stream, Long> { public interface StreamRepository extends JpaRepository<Stream, Long> {
List<Stream> findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByIdGreaterThanAndFavoriteIsTrue(long streamId, Pageable pageable);
List<Stream> findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByIdLessThanAndFavoriteIsTrue(long streamId, Pageable pageable);
List<Stream> findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable); List<Stream> findAllByIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable); List<Stream> findAllByIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByServiceAndIdGreaterThanAndFavoriteIsTrue(CtfService service, long streamId, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable); List<Stream> findAllByServiceAndIdLessThanAndFavoriteIsTrue(CtfService service, long streamId, Pageable pageable);
List<Stream> findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable); List<Stream> findAllByServiceAndIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByIdGreaterThan(long streamId, Pageable pageable);
List<Stream> findAllByIdLessThan(long streamId, Pageable pageable);
List<Stream> findAllByIdGreaterThanAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByIdLessThanAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdGreaterThan(CtfService service, long streamId, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThan(CtfService service, long streamId, Pageable pageable);
List<Stream> findAllByServiceAndIdGreaterThanAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThanAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable);
List<Stream> findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable);
} }

View File

@@ -168,20 +168,56 @@ public class StreamService {
} }
} }
public List<Stream> findFavorites(Pagination pagination) {
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
if (pagination.getPattern() != null) { // задан паттерн для поиска
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page);
} else { // более старые стримы
return repository.findAllByIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page);
}
} else {
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByIdGreaterThanAndFavoriteIsTrue(pagination.getStartingFrom(), page);
} else { // более старые стримы
return repository.findAllByIdLessThanAndFavoriteIsTrue(pagination.getStartingFrom(), page);
}
}
}
public List<Stream> findFavoritesByService(Pagination pagination, CtfService service) {
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
if (pagination.getPattern() != null) { // задан паттерн для поиска
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByServiceAndIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page);
} else { // более старые стримы
return repository.findAllByServiceAndIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page);
}
} else {
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByServiceAndIdGreaterThanAndFavoriteIsTrue(service, pagination.getStartingFrom(), page);
} else { // более старые стримы
return repository.findAllByServiceAndIdLessThanAndFavoriteIsTrue(service, pagination.getStartingFrom(), page);
}
}
}
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.getPattern() != null) { // задан паттерн для поиска if (pagination.getPattern() != null) { // задан паттерн для поиска
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); return repository.findAllByIdGreaterThanAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page);
} else { // более старые стримы } else { // более старые стримы
return repository.findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); return repository.findAllByIdLessThanAndFoundPatternsContaining(pagination.getStartingFrom(), 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.findAllByIdGreaterThan(pagination.getStartingFrom(), page);
} else { // более старые стримы } else { // более старые стримы
return repository.findAllByIdLessThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page); return repository.findAllByIdLessThan(pagination.getStartingFrom(), page);
} }
} }
} }
@@ -191,15 +227,15 @@ public class StreamService {
if (pagination.getPattern() != null) { // задан паттерн для поиска if (pagination.getPattern() != null) { // задан паттерн для поиска
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
return repository.findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); return repository.findAllByServiceAndIdGreaterThanAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page);
} else { // более старые стримы } else { // более старые стримы
return repository.findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); return repository.findAllByServiceAndIdLessThanAndFoundPatternsContaining(service, pagination.getStartingFrom(), 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.findAllByServiceAndIdGreaterThan(service, pagination.getStartingFrom(), page);
} else { // более старые стримы } else { // более старые стримы
return repository.findAllByServiceAndIdLessThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page); return repository.findAllByServiceAndIdLessThan(service, pagination.getStartingFrom(), page);
} }
} }
} }