-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStudyLogQueryService.java
More file actions
63 lines (50 loc) · 2.42 KB
/
StudyLogQueryService.java
File metadata and controls
63 lines (50 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.ject.studytrip.studylog.application.service;
import com.ject.studytrip.global.exception.CustomException;
import com.ject.studytrip.studylog.domain.error.StudyLogErrorCode;
import com.ject.studytrip.studylog.domain.model.StudyLog;
import com.ject.studytrip.studylog.domain.policy.StudyLogPolicy;
import com.ject.studytrip.studylog.domain.repository.StudyLogQueryRepository;
import com.ject.studytrip.studylog.domain.repository.StudyLogRepository;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class StudyLogQueryService {
private final StudyLogRepository studyLogRepository;
private final StudyLogQueryRepository studyLogQueryRepository;
public long getActiveStudyLogCountByMemberId(Long memberId) {
return studyLogQueryRepository.countActiveStudyLogsByMemberId(memberId);
}
public Slice<StudyLog> getStudyLogsSliceByTripId(
Long tripId, int page, int size, String order) {
return studyLogQueryRepository.findSliceByTripId(tripId, PageRequest.of(page, size), order);
}
public StudyLog getValidStudyLog(Long studyLogId) {
StudyLog studyLog =
studyLogRepository
.findById(studyLogId)
.orElseThrow(
() -> new CustomException(StudyLogErrorCode.STUDY_LOG_NOT_FOUND));
StudyLogPolicy.validateNotDeleted(studyLog);
return studyLog;
}
public List<StudyLog> getValidStudyLogs(List<Long> studyLogIds) {
List<StudyLog> studyLogs = studyLogRepository.findAllByIdIn(studyLogIds);
StudyLogPolicy.validateExistAll(studyLogs, studyLogIds);
studyLogs.forEach(StudyLogPolicy::validateNotDeleted);
return studyLogs;
}
public long getStudyLogCountByTripId(Long tripId) {
return studyLogQueryRepository.countStudyLogsByTripId(tripId);
}
public Slice<StudyLog> getStudyLogsSliceByTripReportId(Long tripReportId, int page, int size) {
return studyLogQueryRepository.findSliceByTripReportIdOrderByCreatedAtDesc(
tripReportId, PageRequest.of(page, size));
}
public List<Long> getStudyLogIdsByTripId(Long tripId) {
return studyLogQueryRepository.findAllIdsByTripIdOrderByCreatedDesc(tripId);
}
}