[R2] Implement pagination
This commit is contained in:
parent
74616bae4e
commit
bc8a6b3ba2
@ -3,6 +3,8 @@ package com.mirna.hospitalmanagementapi.application.controllers;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
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
|
@GetMapping
|
||||||
public ResponseEntity<Object> getDoctors() {
|
public ResponseEntity<Object> getDoctors(Pageable pageable) {
|
||||||
|
|
||||||
List<DoctorPublicDataDTO> doctors = doctorService.findDoctors();
|
Page<DoctorPublicDataDTO> doctors = doctorService.findDoctors(pageable);
|
||||||
|
|
||||||
return ResponseEntity.ok(doctors);
|
return ResponseEntity.ok(doctors);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
package com.mirna.hospitalmanagementapi.application.services;
|
package com.mirna.hospitalmanagementapi.application.services;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.mirna.hospitalmanagementapi.application.usecase.doctor.AddDoctorUseCase;
|
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.DoctorDTO;
|
||||||
import com.mirna.hospitalmanagementapi.domain.dtos.DoctorPublicDataDTO;
|
import com.mirna.hospitalmanagementapi.domain.dtos.DoctorPublicDataDTO;
|
||||||
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
||||||
@ -28,7 +28,7 @@ public class DoctorServiceImpl implements DoctorService {
|
|||||||
private AddDoctorUseCase addDoctor;
|
private AddDoctorUseCase addDoctor;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private FindAllDoctorsUseCase findAllDoctors;
|
private FindDoctorsUseCase findDoctors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new doctor to the database.
|
* Adds a new doctor to the database.
|
||||||
@ -47,11 +47,13 @@ public class DoctorServiceImpl implements DoctorService {
|
|||||||
/**
|
/**
|
||||||
* Finds doctors from the database.
|
* 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
|
@Override
|
||||||
public List<DoctorPublicDataDTO> findDoctors() {
|
public Page<DoctorPublicDataDTO> findDoctors(Pageable pageable) {
|
||||||
return findAllDoctors.execute().stream().map(DoctorPublicDataDTO::new).toList();
|
return findDoctors.execute(pageable).map(DoctorPublicDataDTO::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package com.mirna.hospitalmanagementapi.application.usecase.doctor;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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 org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
||||||
@ -15,7 +17,7 @@ import com.mirna.hospitalmanagementapi.domain.repositories.DoctorRepository;
|
|||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class FindAllDoctorsUseCase {
|
public class FindDoctorsUseCase {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DoctorRepository doctorRepository;
|
private DoctorRepository doctorRepository;
|
||||||
@ -23,10 +25,12 @@ public class FindAllDoctorsUseCase {
|
|||||||
/**
|
/**
|
||||||
* Executes the findAll method from Doctor repository
|
* 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<Doctor> execute() {
|
public Page<Doctor> execute(Pageable pageable) {
|
||||||
return this.doctorRepository.findAll();
|
return this.doctorRepository.findAll(pageable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,6 +2,9 @@ package com.mirna.hospitalmanagementapi.domain.services;
|
|||||||
|
|
||||||
import java.util.List;
|
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.DoctorDTO;
|
||||||
import com.mirna.hospitalmanagementapi.domain.dtos.DoctorPublicDataDTO;
|
import com.mirna.hospitalmanagementapi.domain.dtos.DoctorPublicDataDTO;
|
||||||
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
||||||
@ -24,10 +27,12 @@ public interface DoctorService {
|
|||||||
public Doctor addDoctor(DoctorDTO doctorDTO);
|
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<DoctorPublicDataDTO> findDoctors();
|
public Page<DoctorPublicDataDTO> findDoctors(Pageable pageable);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user