[R9] Custom method in doctor jpa repository to find one free doctor by specialty
This commit is contained in:
parent
e91b7b4038
commit
22ba9ab9ec
@ -1,10 +1,14 @@
|
|||||||
package com.mirna.hospitalmanagementapi.domain.repositories;
|
package com.mirna.hospitalmanagementapi.domain.repositories;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
|
||||||
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
import com.mirna.hospitalmanagementapi.domain.entities.Doctor;
|
||||||
|
import com.mirna.hospitalmanagementapi.domain.enums.Specialty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repository interface for retrieving and manipulating all Doctor objects using their unique Long identifier.
|
* Repository interface for retrieving and manipulating all Doctor objects using their unique Long identifier.
|
||||||
@ -20,4 +24,23 @@ public interface DoctorRepository extends JpaRepository<Doctor, Long> {
|
|||||||
* @return A paginated list with active stored doctors if successful, or null if there is an error
|
* @return A paginated list with active stored doctors if successful, or null if there is an error
|
||||||
*/
|
*/
|
||||||
Page<Doctor> findDoctorsByActiveTrue(Pageable pageable);
|
Page<Doctor> findDoctorsByActiveTrue(Pageable pageable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param specialty Desired specialty for doctor search
|
||||||
|
* @param consultationDate Date to check if the doctor is free
|
||||||
|
* @return A random free doctor with the defined specialty if successful, or null if it is non-existent
|
||||||
|
*/
|
||||||
|
@Query("""
|
||||||
|
select d from Doctor d
|
||||||
|
where d.active = true
|
||||||
|
and specialty = :specialty
|
||||||
|
and d.id not in (
|
||||||
|
select c.doctor.id from Consultation c
|
||||||
|
where c.consultationDate = :consultationDate
|
||||||
|
)
|
||||||
|
order by rand()
|
||||||
|
limit 1
|
||||||
|
""")
|
||||||
|
Doctor findOneFreeDoctorBySpecialty(Specialty specialty, LocalDateTime consultationDate);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user