From 1b15a5a5650398b5f84c049d027e9157b57f781b Mon Sep 17 00:00:00 2001 From: 13jksingh Date: Thu, 19 Oct 2023 13:02:51 +0530 Subject: [PATCH] Made event controller get reqs pageable --- .../backend/controllers/EventsController.java | 31 +++++++++++++------ .../backend/repository/EventRepository.java | 7 +++-- .../pecacm/backend/services/EventService.java | 13 ++++---- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/pecacm/backend/controllers/EventsController.java b/src/main/java/com/pecacm/backend/controllers/EventsController.java index cde99ba..fe11a24 100644 --- a/src/main/java/com/pecacm/backend/controllers/EventsController.java +++ b/src/main/java/com/pecacm/backend/controllers/EventsController.java @@ -36,7 +36,12 @@ public EventsController(EventService eventService) { @GetMapping @PreAuthorize(Constants.HAS_ANY_ROLE) - public ResponseEntity> getAllEvents(@RequestParam @Nullable LocalDate eventsFrom, @RequestParam @Nullable LocalDate eventsTill) { + public ResponseEntity> getAllEvents(@RequestParam @Nullable LocalDate eventsFrom, @RequestParam @Nullable LocalDate eventsTill, @RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) { + if (offset == null) offset = 0; + if (pageSize == null) pageSize = 20; // returning first 20 users + + if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST); + if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST); if (eventsFrom==null){ eventsFrom = LocalDate.now().minusYears(99); @@ -48,32 +53,40 @@ public ResponseEntity> getAllEvents(@RequestParam @Nullable LocalDat if (eventsFrom.isAfter(eventsTill)) { throw new AcmException("eventsFrom Date must be <= eventsTill Date", HttpStatus.BAD_REQUEST); } - // TODO : Return pageable response - List events = eventService.getEventsBetweenTwoTimestamps(eventsFrom, eventsTill); + List events = eventService.getEventsBetweenTwoTimestamps(eventsFrom, eventsTill,offset, pageSize); return ResponseEntity.ok(events); } @GetMapping("/ongoing") @PreAuthorize(Constants.HAS_ANY_ROLE) - public ResponseEntity> getOngoingEvents() { - return ResponseEntity.ok(eventService.getOngoingEvents()); + public ResponseEntity> getOngoingEvents(@RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) { + if (offset == null) offset = 0; + if (pageSize == null) pageSize = 20; // returning first 20 users + + if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST); + if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST); + return ResponseEntity.ok(eventService.getOngoingEvents(offset, pageSize)); } @GetMapping("/{eventId}") @PreAuthorize(Constants.HAS_ANY_ROLE) public ResponseEntity getSingleEvent(@PathVariable Integer eventId){ - // TODO : Return pageable response Event event = eventService.getSingleEvent(eventId); return ResponseEntity.ok(event); } @GetMapping("/branches/{branch}") @PreAuthorize(Constants.HAS_ANY_ROLE) - public ResponseEntity> getEventsByBranch(@PathVariable Branch branch){ - // TODO : Return pageable response - List events = eventService.getEventsByBranch(branch); + public ResponseEntity> getEventsByBranch(@PathVariable Branch branch, @RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize){ + if (offset == null) offset = 0; + if (pageSize == null) pageSize = 20; // returning first 20 users + + if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST); + if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST); + + List events = eventService.getEventsByBranch(branch,offset, pageSize); return ResponseEntity.ok(events); } diff --git a/src/main/java/com/pecacm/backend/repository/EventRepository.java b/src/main/java/com/pecacm/backend/repository/EventRepository.java index 1e85f9e..d15254d 100644 --- a/src/main/java/com/pecacm/backend/repository/EventRepository.java +++ b/src/main/java/com/pecacm/backend/repository/EventRepository.java @@ -2,6 +2,7 @@ import com.pecacm.backend.entities.Event; import com.pecacm.backend.enums.Branch; +import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -11,9 +12,9 @@ @Repository public interface EventRepository extends JpaRepository { - List findByBranch(Branch branch); - List findAllByEndedFalse(); + List findByBranch(Branch branch,PageRequest pageRequest); + List findAllByEndedFalse(PageRequest pageRequest); @Query("SELECT e from Event e WHERE e.startDate > :currDateTime ORDER BY e.startDate ASC LIMIT 1") Event getNearestEvent(@Param("currDateTime") LocalDateTime currDate); - List findAllByStartDateGreaterThanEqualAndEndDateLessThanEqual(LocalDateTime startDate, LocalDateTime endDate); + List findAllByStartDateGreaterThanEqualAndEndDateLessThanEqual(LocalDateTime startDate, LocalDateTime endDate, PageRequest pageRequest); } \ No newline at end of file diff --git a/src/main/java/com/pecacm/backend/services/EventService.java b/src/main/java/com/pecacm/backend/services/EventService.java index 23fb149..1e62438 100644 --- a/src/main/java/com/pecacm/backend/services/EventService.java +++ b/src/main/java/com/pecacm/backend/services/EventService.java @@ -39,16 +39,17 @@ public EventService(EventRepository eventRepository, UserRepository userReposito // TODO : change all GET events to pageable repositories - public List getEventsBetweenTwoTimestamps(LocalDate eventsFrom, LocalDate eventsTill) { + public List getEventsBetweenTwoTimestamps(LocalDate eventsFrom, LocalDate eventsTill, Integer offset, Integer pageSize) { return eventRepository .findAllByStartDateGreaterThanEqualAndEndDateLessThanEqual( eventsFrom.atStartOfDay(), - eventsTill.plusDays(1).atStartOfDay() + eventsTill.plusDays(1).atStartOfDay(), + PageRequest.of(offset, pageSize) ); } - public List getOngoingEvents() { - return eventRepository.findAllByEndedFalse(); + public List getOngoingEvents(Integer offset, Integer pageSize) { + return eventRepository.findAllByEndedFalse(PageRequest.of(offset, pageSize)); } public Event getSingleEvent(Integer eventId) { @@ -59,8 +60,8 @@ public Event getSingleEvent(Integer eventId) { return event.get(); } - public List getEventsByBranch(Branch branch) { - return eventRepository.findByBranch(branch); + public List getEventsByBranch(Branch branch, Integer offset, Integer pageSize) { + return eventRepository.findByBranch(branch,PageRequest.of(offset,pageSize)); } public EventAttendeesResponse getEventUsersByRole(Integer eventId, EventRole eventRole, PageRequest pageRequest) {