Добавлена возможность делать стримы избранными
This commit is contained in:
@@ -40,4 +40,14 @@ public class StreamController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/favorite")
|
||||||
|
public void favoriteStream(@PathVariable long id) {
|
||||||
|
streamService.setFavorite(id, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/unfavorite")
|
||||||
|
public void unfavoriteStream(@PathVariable long id) {
|
||||||
|
streamService.setFavorite(id, false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,4 +14,6 @@ public class Pagination {
|
|||||||
|
|
||||||
private int pageSize;
|
private int pageSize;
|
||||||
|
|
||||||
|
private boolean favorites; // только для стримов, определяет, искать только избранные стримы или все
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,4 +43,6 @@ public class Stream {
|
|||||||
@ManyToMany(cascade = CascadeType.ALL)
|
@ManyToMany(cascade = CascadeType.ALL)
|
||||||
private List<Pattern> foundPatterns;
|
private List<Pattern> foundPatterns;
|
||||||
|
|
||||||
|
private boolean favorite;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,14 +9,16 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface StreamRepository extends JpaRepository<Stream, Long> {
|
public interface StreamRepository extends JpaRepository<Stream, Long> {
|
||||||
|
|
||||||
List<Stream> findAllByIdGreaterThan(long streamId, Pageable pageable);
|
List<Stream> findAllByFavorite(Pageable pageable, boolean favorite);
|
||||||
|
|
||||||
List<Stream> findAllByIdLessThan(long streamId, Pageable pageable);
|
List<Stream> findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByService(CtfService service, Pageable pageable);
|
List<Stream> findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByServiceAndIdGreaterThan(CtfService service, long streamId, Pageable pageable);
|
List<Stream> findAllByServiceAndFavorite(CtfService service, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
List<Stream> findAllByServiceAndIdLessThan(CtfService service, long streamId, Pageable pageable);
|
List<Stream> findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
|
List<Stream> findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class StreamService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!serviceOptional.isPresent()) {
|
if (!serviceOptional.isPresent()) {
|
||||||
log.info("Не удалось сохранить стрим: сервиса на порту {} или {} не существует",
|
log.warn("Не удалось сохранить стрим: сервиса на порту {} или {} не существует",
|
||||||
unfinishedStream.getFirstPort(), unfinishedStream.getSecondPort());
|
unfinishedStream.getFirstPort(), unfinishedStream.getSecondPort());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ public class StreamService {
|
|||||||
packets.removeIf(packet -> packet.getContent().length == 0);
|
packets.removeIf(packet -> packet.getContent().length == 0);
|
||||||
|
|
||||||
if(packets.isEmpty()) {
|
if(packets.isEmpty()) {
|
||||||
log.info("Стрим состоит только из пустых пакетов и не будет сохранен");
|
log.debug("Стрим состоит только из пустых пакетов и не будет сохранен");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,16 +107,26 @@ public class StreamService {
|
|||||||
return repository.findById(id);
|
return repository.findById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void setFavorite(long id, boolean favorite) {
|
||||||
|
final Optional<Stream> streamOptional = repository.findById(id);
|
||||||
|
if(streamOptional.isPresent()) {
|
||||||
|
final Stream stream = streamOptional.get();
|
||||||
|
stream.setFavorite(favorite);
|
||||||
|
repository.save(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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.isFetchLatest()) { // последние стримы
|
||||||
return repository.findAll(page).getContent();
|
return repository.findAllByFavorite(page, pagination.isFavorites());
|
||||||
} else {
|
} else {
|
||||||
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
||||||
return repository.findAllByIdGreaterThan(pagination.getStartingFrom(), page);
|
return repository.findAllByIdGreaterThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page);
|
||||||
} else { // более старые стримы
|
} else { // более старые стримы
|
||||||
return repository.findAllByIdLessThan(pagination.getStartingFrom(), page);
|
return repository.findAllByIdLessThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -125,12 +135,12 @@ public class StreamService {
|
|||||||
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.isFetchLatest()) { // последние стримы
|
||||||
return repository.findAllByService(service, page);
|
return repository.findAllByServiceAndFavorite(service, pagination.isFavorites(), page);
|
||||||
} else {
|
} else {
|
||||||
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы
|
||||||
return repository.findAllByServiceAndIdGreaterThan(service, pagination.getStartingFrom(), page);
|
return repository.findAllByServiceAndIdGreaterThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page);
|
||||||
} else { // более старые стримы
|
} else { // более старые стримы
|
||||||
return repository.findAllByServiceAndIdLessThan(service, pagination.getStartingFrom(), page);
|
return repository.findAllByServiceAndIdLessThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user