package com.example.university.repo;
import com.example.university.domain.Staff;
import com.example.university.domain.Student;
import com.example.university.view.CourseView;
import com.example.university.domain.Course;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* DataSource Management for the Courses at the University.
*
* Created by maryellenbowman
*/
public interface CourseRepository extends CrudRepository<Course,Integer>{
Course findByName(String name);
List<Course> findByDepartmentChairMemberLastName(String chair);
// or
@Query("Select c from Course c where c.department.chair.member.lastName=:chair")
List<Course> findByChairLastName(@Param("chair")String chairLastName);
// or
@Query("Select c from Course c where c.department.chair.member.lastname = ?1")
List<Course> findByChairLastName(String chairLastName);
@Query("Select c from Course c join c.prerequisites p where p.id = ?1")
List<Course> findCourseByPrerequisite(int id);
@Query("Select new com.example.university.view.CourseView" +
"(c.name, c.instructor.member.lastName, c.department.name) from Course c where c.id=?1")
CourseView getCourseView(int courseId) ;
List<Course> findByCredits(@Param("credits") int credits);
Page<Course> findByCredits(@Param("credits") int credits, Pageable pageable);
// Common Querying Mistake
// Uncomment to Debug.
//
// Course findByDeptName(String deptName);
//
// @Query("Select new com.example.university.view.CourseView" +
// "(c.name, c.instructor.member.lastName, c.department.name) from course c where c.name=?1")
// Course getCourseViewByName(String name);
}