Доделана пагинация в пакетах
This commit is contained in:
@@ -26,7 +26,7 @@ public class PacketController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/{streamId}")
|
@PostMapping("/{streamId}")
|
||||||
public List<Packet> getPacketsForStream(@PathVariable int streamId, @RequestBody Pagination pagination) {
|
public List<Packet> getPacketsForStream(@PathVariable long streamId, @RequestBody Pagination pagination) {
|
||||||
final Optional<Stream> stream = streamService.find(streamId);
|
final Optional<Stream> stream = streamService.find(streamId);
|
||||||
if(stream.isPresent()) {
|
if(stream.isPresent()) {
|
||||||
return packetService.getPacketsForStream(pagination, stream.get());
|
return packetService.getPacketsForStream(pagination, stream.get());
|
||||||
|
|||||||
@@ -1,4 +1,17 @@
|
|||||||
package ru.serega6531.packmate.model;
|
package ru.serega6531.packmate.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
|
||||||
|
@Data
|
||||||
public class Pagination {
|
public class Pagination {
|
||||||
|
|
||||||
|
private boolean fetchLatest;
|
||||||
|
|
||||||
|
private Sort.Direction direction;
|
||||||
|
|
||||||
|
private long startingFrom;
|
||||||
|
|
||||||
|
private int pageSize;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package ru.serega6531.packmate.model;
|
package ru.serega6531.packmate.model;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.hibernate.annotations.GenericGenerator;
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ public class Pattern {
|
|||||||
private String color; // для вставки в css
|
private String color; // для вставки в css
|
||||||
|
|
||||||
@ManyToMany(mappedBy = "foundPatterns", cascade = CascadeType.ALL)
|
@ManyToMany(mappedBy = "foundPatterns", cascade = CascadeType.ALL)
|
||||||
|
@JsonIgnore
|
||||||
private List<Stream> matchedStreams;
|
private List<Stream> matchedStreams;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,18 @@
|
|||||||
package ru.serega6531.packmate.repository;
|
package ru.serega6531.packmate.repository;
|
||||||
|
|
||||||
|
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.Packet;
|
import ru.serega6531.packmate.model.Packet;
|
||||||
|
import ru.serega6531.packmate.model.Stream;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface PacketRepository extends JpaRepository<Packet, Long> {
|
public interface PacketRepository extends JpaRepository<Packet, Long> {
|
||||||
|
|
||||||
|
List<Packet> findAllByStream(Stream stream, Pageable pageable);
|
||||||
|
|
||||||
|
List<Packet> findAllByStreamAndIdGreaterThan(Stream stream, long packetId, Pageable pageable);
|
||||||
|
|
||||||
|
List<Packet> findAllByStreamAndIdLessThan(Stream stream, long packetId, Pageable pageable);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package ru.serega6531.packmate.service;
|
package ru.serega6531.packmate.service;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.serega6531.packmate.model.Packet;
|
import ru.serega6531.packmate.model.Packet;
|
||||||
import ru.serega6531.packmate.model.Pagination;
|
import ru.serega6531.packmate.model.Pagination;
|
||||||
@@ -20,7 +22,17 @@ public class PacketService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Packet> getPacketsForStream(Pagination pagination, Stream stream) {
|
public List<Packet> getPacketsForStream(Pagination pagination, Stream stream) {
|
||||||
return repository.findAll();
|
PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id");
|
||||||
|
|
||||||
|
if(pagination.isFetchLatest()) { // последние пакеты
|
||||||
|
return repository.findAllByStream(stream, page);
|
||||||
|
} else {
|
||||||
|
if (pagination.getDirection() == Sort.Direction.ASC) { // более новые пакеты
|
||||||
|
return repository.findAllByStreamAndIdGreaterThan(stream, pagination.getStartingFrom(), page);
|
||||||
|
} else { // более старые пакеты
|
||||||
|
return repository.findAllByStreamAndIdLessThan(stream, pagination.getStartingFrom(), page);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Packet save(Packet packet) {
|
public Packet save(Packet packet) {
|
||||||
|
|||||||
Reference in New Issue
Block a user