Skip to content

Commit

Permalink
[Feature/paginate email receivers] - 페이지네이션 추가 (#43)
Browse files Browse the repository at this point in the history
  • Loading branch information
ekgns33 authored Oct 2, 2024
1 parent d8b058b commit 72e59d6
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -28,6 +30,11 @@ public List<EmailTask> getAllTaskAsList() {
return emailTaskRepository.findAll();
}

public Page<EmailTask> getAllTaskWithPage(int pageNo) {
Pageable pageable = PageRequest.of(pageNo, 10);
return emailTaskRepository.findAll(pageable);
}

public EmailTask getTaskDetails(Long taskId) {
return findEmailTaskById(emailTaskRepository, taskId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
Expand All @@ -35,6 +36,14 @@ public ResponseEntity<SuccessResponse> getAllEmailTask() {
return ResponseEntity.ok(SuccessResponse.of(emailTasks));
}

@GetMapping("/pages")
public ResponseEntity<SuccessResponse> getAllEmailTask(
@RequestParam(required = false, defaultValue = "0", value = "page") int pageNo
) {
EmailTaskListResponse emailTasks = EmailTaskMapper.mapToEmailTaskPageResponse(emailService.getAllTaskWithPage(pageNo));
return ResponseEntity.ok(SuccessResponse.of(emailTasks));
}

@GetMapping("/{taskId}")
public ResponseEntity<SuccessResponse> getEmailTask(@PathVariable Long taskId) {
EmailTaskDetailResponse emailTask = EmailTaskMapper.mapToEmailTaskDetailsResponse(emailService.getTaskDetails(taskId));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,15 @@
import gdsc.konkuk.platformcore.domain.email.entity.EmailTask;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.data.domain.Page;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class EmailTaskMapper {

public static EmailTaskListResponse mapToEmailTaskPageResponse(Page<EmailTask> emailTasks) {
return mapToEmailTaskListResponse(emailTasks.getContent());
}

public static EmailTaskListResponse mapToEmailTaskListResponse(List<EmailTask> emailTasks) {
List<SimpleEmailTaskResponse> simpleEmailTaskResponses =
emailTasks.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import jakarta.persistence.CollectionTable;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import java.util.HashSet;
import java.util.Objects;
Expand All @@ -11,13 +12,15 @@
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.BatchSize;

@Embeddable
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class EmailReceivers {

@ElementCollection
@BatchSize(size = 100)
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "email_receivers", joinColumns = @JoinColumn(name = "task_id"))
Set<EmailReceiver> receivers = new HashSet<>();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package gdsc.konkuk.platformcore.domain.email.repository;

import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import gdsc.konkuk.platformcore.domain.email.entity.EmailTask;
Expand All @@ -10,4 +12,6 @@ public interface EmailTaskRepository extends JpaRepository<EmailTask, Long> {

@Query("SELECT e FROM EmailTask e WHERE e.isSent = false")
List<EmailTask> findAllWhereNotSent();

Page<EmailTask> findAll(Pageable pageable);
}

0 comments on commit 72e59d6

Please sign in to comment.