diff --git a/src/main/java/com/mirna/hospitalmanagementapi/application/controllers/DoctorController.java b/src/main/java/com/mirna/hospitalmanagementapi/application/controllers/DoctorController.java index b73ae1d..c4f59f1 100644 --- a/src/main/java/com/mirna/hospitalmanagementapi/application/controllers/DoctorController.java +++ b/src/main/java/com/mirna/hospitalmanagementapi/application/controllers/DoctorController.java @@ -3,6 +3,8 @@ package com.mirna.hospitalmanagementapi.application.controllers; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -49,16 +51,16 @@ public class DoctorController { } /** - * Get method to receive a list of objects containing data transfer objects with Doctor public information + * Get method to receive a paginated sublist of objects containing data transfer objects with Doctor public information * - * @param + * @param pageable Pagination information, such as size and page number * - * @return A response entity containing the list of doctors if successful + * @return A response entity containing the paginated sublist of doctors if successful */ @GetMapping - public ResponseEntity getDoctors() { + public ResponseEntity getDoctors(Pageable pageable) { - List doctors = doctorService.findDoctors(); + Page doctors = doctorService.findDoctors(pageable); return ResponseEntity.ok(doctors); } diff --git a/src/main/java/com/mirna/hospitalmanagementapi/application/services/DoctorServiceImpl.java b/src/main/java/com/mirna/hospitalmanagementapi/application/services/DoctorServiceImpl.java index 7ed0e73..31dd1f2 100644 --- a/src/main/java/com/mirna/hospitalmanagementapi/application/services/DoctorServiceImpl.java +++ b/src/main/java/com/mirna/hospitalmanagementapi/application/services/DoctorServiceImpl.java @@ -1,12 +1,12 @@ package com.mirna.hospitalmanagementapi.application.services; -import java.util.List; - import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.mirna.hospitalmanagementapi.application.usecase.doctor.AddDoctorUseCase; -import com.mirna.hospitalmanagementapi.application.usecase.doctor.FindAllDoctorsUseCase; +import com.mirna.hospitalmanagementapi.application.usecase.doctor.FindDoctorsUseCase; import com.mirna.hospitalmanagementapi.domain.dtos.DoctorDTO; import com.mirna.hospitalmanagementapi.domain.dtos.DoctorPublicDataDTO; import com.mirna.hospitalmanagementapi.domain.entities.Doctor; @@ -28,7 +28,7 @@ public class DoctorServiceImpl implements DoctorService { private AddDoctorUseCase addDoctor; @Autowired - private FindAllDoctorsUseCase findAllDoctors; + private FindDoctorsUseCase findDoctors; /** * Adds a new doctor to the database. @@ -47,11 +47,13 @@ public class DoctorServiceImpl implements DoctorService { /** * Finds doctors from the database. * - * @return A paginated list containing data transfer objects with doctors public information in the repository + * @param pageable Pagination information, such as size and page number + * + * @return A paginated sublist containing data transfer objects with doctors public information in the repository */ @Override - public List findDoctors() { - return findAllDoctors.execute().stream().map(DoctorPublicDataDTO::new).toList(); + public Page findDoctors(Pageable pageable) { + return findDoctors.execute(pageable).map(DoctorPublicDataDTO::new); } } diff --git a/src/main/java/com/mirna/hospitalmanagementapi/application/usecase/doctor/FindAllDoctorsUseCase.java b/src/main/java/com/mirna/hospitalmanagementapi/application/usecase/doctor/FindDoctorsUseCase.java similarity index 60% rename from src/main/java/com/mirna/hospitalmanagementapi/application/usecase/doctor/FindAllDoctorsUseCase.java rename to src/main/java/com/mirna/hospitalmanagementapi/application/usecase/doctor/FindDoctorsUseCase.java index 17c269d..b30a84d 100644 --- a/src/main/java/com/mirna/hospitalmanagementapi/application/usecase/doctor/FindAllDoctorsUseCase.java +++ b/src/main/java/com/mirna/hospitalmanagementapi/application/usecase/doctor/FindDoctorsUseCase.java @@ -3,6 +3,8 @@ package com.mirna.hospitalmanagementapi.application.usecase.doctor; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; import com.mirna.hospitalmanagementapi.domain.entities.Doctor; @@ -15,7 +17,7 @@ import com.mirna.hospitalmanagementapi.domain.repositories.DoctorRepository; * @version 1.0 */ @Component -public class FindAllDoctorsUseCase { +public class FindDoctorsUseCase { @Autowired private DoctorRepository doctorRepository; @@ -23,10 +25,12 @@ public class FindAllDoctorsUseCase { /** * Executes the findAll method from Doctor repository * - * @return The list of all stored doctors if successful, or null if there is an error + * @param pageable Pagination information, such as size and page number + * + * @return A paginated list with stored doctors if successful, or null if there is an error * */ - public List execute() { - return this.doctorRepository.findAll(); + public Page execute(Pageable pageable) { + return this.doctorRepository.findAll(pageable); } } diff --git a/src/main/java/com/mirna/hospitalmanagementapi/domain/services/DoctorService.java b/src/main/java/com/mirna/hospitalmanagementapi/domain/services/DoctorService.java index 08d356f..78eb31e 100644 --- a/src/main/java/com/mirna/hospitalmanagementapi/domain/services/DoctorService.java +++ b/src/main/java/com/mirna/hospitalmanagementapi/domain/services/DoctorService.java @@ -2,6 +2,9 @@ package com.mirna.hospitalmanagementapi.domain.services; import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import com.mirna.hospitalmanagementapi.domain.dtos.DoctorDTO; import com.mirna.hospitalmanagementapi.domain.dtos.DoctorPublicDataDTO; import com.mirna.hospitalmanagementapi.domain.entities.Doctor; @@ -24,10 +27,12 @@ public interface DoctorService { public Doctor addDoctor(DoctorDTO doctorDTO); /** - * Retrieves a list of doctors. + * Retrieves a paginated sublist of doctors. * - * @return A list containing data transfer objects with doctors public information in the repository + * @param pageable Pagination information, such as size and page number + * + * @return A paginated sublist containing data transfer objects with doctors public information in the repository */ - public List findDoctors(); + public Page findDoctors(Pageable pageable); }