|
3 | 3 | import com.back.domain.mission.entity.Task; |
4 | 4 | import org.springframework.data.domain.PageRequest; |
5 | 5 | import org.springframework.data.domain.Slice; |
| 6 | +import org.springframework.data.jpa.repository.EntityGraph; |
6 | 7 | import org.springframework.data.jpa.repository.JpaRepository; |
7 | 8 | import org.springframework.data.jpa.repository.Query; |
8 | 9 | import org.springframework.data.repository.query.Param; |
|
15 | 16 | public interface TaskRepository extends JpaRepository<Task, Integer> { |
16 | 17 | List<Task> findBySubGoalId(Integer subGoalId); |
17 | 18 | @Query(""" |
18 | | - SELECT DISTINCT t FROM Task t |
19 | | - JOIN FETCH t.subGoal sg |
20 | | - JOIN FETCH sg.mission m |
21 | | - LEFT JOIN m.party p |
22 | | - LEFT JOIN p.partyMembers pm |
23 | | - WHERE (m.member.id = :memberId |
24 | | - OR (pm.member.id = :memberId AND pm.status = 'ACCEPTED')) |
25 | | - AND m.isCompleted = false |
26 | | - AND t.dayNum = :dayNum |
27 | | - AND :date BETWEEN sg.startDate AND sg.endDate |
28 | | - AND :date BETWEEN m.startDate AND m.endDate |
29 | | - ORDER BY m.id, sg.orderNum, t.dayNum |
30 | | - """) |
| 19 | +SELECT DISTINCT t FROM Task t |
| 20 | +JOIN t.subGoal sg |
| 21 | +JOIN sg.mission m |
| 22 | +LEFT JOIN m.party p |
| 23 | +LEFT JOIN p.partyMembers pm ON pm.member.id = :memberId AND pm.status = 'ACCEPTED' |
| 24 | +WHERE m.isCompleted = false |
| 25 | +AND t.dayNum = :dayNum |
| 26 | +AND :date BETWEEN sg.startDate AND sg.endDate |
| 27 | +AND :date BETWEEN m.startDate AND m.endDate |
| 28 | +AND ( |
| 29 | + (m.party IS NULL AND m.member.id = :memberId) OR |
| 30 | + (m.party IS NOT NULL AND pm IS NOT NULL) |
| 31 | +) |
| 32 | +ORDER BY m.id, sg.orderNum, t.dayNum |
| 33 | +""") |
| 34 | + @EntityGraph(attributePaths = {"subGoal", "subGoal.mission"}) |
31 | 35 | List<Task> findTodayTasks( |
32 | 36 | @Param("memberId") Integer memberId, |
33 | 37 | @Param("date") LocalDate date, |
|
0 commit comments