Skip to content

Commit 18055c6

Browse files
committed
feat: StudyService #1 (Make Study, Get Study, Pagination)
1 parent 119239b commit 18055c6

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dcom.homepage.api.domain.study.repository;
2+
3+
import dcom.homepage.api.domain.study.Study;
4+
import dcom.homepage.api.domain.study.dto.StudyResponseDto;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Pageable;
7+
import org.springframework.data.jpa.repository.JpaRepository;
8+
9+
import java.util.Optional;
10+
11+
public interface StudyRepository extends JpaRepository<Study, Integer> {
12+
Optional<Study> getStudyById(Integer id);
13+
Page<Study> findAll(Pageable pageable);
14+
Page<Study> findAllByNameContains(String name, Pageable pageable);
15+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package dcom.homepage.api.domain.study.service;
2+
3+
import dcom.homepage.api.domain.study.Study;
4+
import dcom.homepage.api.domain.study.dto.StudyRequestDto;
5+
import dcom.homepage.api.domain.study.dto.StudyResponseDto;
6+
import dcom.homepage.api.domain.users.User;
7+
import org.springframework.data.domain.Page;
8+
import org.springframework.data.domain.Pageable;
9+
10+
import java.util.List;
11+
import java.util.Optional;
12+
13+
public interface StudyService {
14+
StudyResponseDto.Info findStudyById(Integer id);
15+
StudyResponseDto.SimpleInfo makeStudy(User user, StudyRequestDto.Make make);
16+
Page<StudyResponseDto.SimpleInfo> findAll(Pageable pageable);
17+
Page<StudyResponseDto.SimpleInfo> findAllByNameContains(String name, Pageable pageable);
18+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package dcom.homepage.api.domain.study.service;
2+
3+
import dcom.homepage.api.domain.study.Study;
4+
import dcom.homepage.api.domain.study.dto.StudyRequestDto;
5+
import dcom.homepage.api.domain.study.dto.StudyResponseDto;
6+
import dcom.homepage.api.domain.study.repository.StudyRepository;
7+
import dcom.homepage.api.domain.users.User;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.data.domain.Page;
10+
import org.springframework.data.domain.Pageable;
11+
import org.springframework.http.HttpStatus;
12+
import org.springframework.stereotype.Service;
13+
import org.springframework.web.server.ResponseStatusException;
14+
15+
@Service
16+
@RequiredArgsConstructor
17+
public class StudyServiceImpl implements StudyService {
18+
private final StudyRepository studyRepository;
19+
20+
@Override
21+
public StudyResponseDto.Info findStudyById(Integer id) {
22+
return StudyResponseDto.Info.of(studyRepository.getStudyById(id).orElseThrow(
23+
() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "스터디를 찾을 수 없습니다.")
24+
));
25+
}
26+
27+
@Override
28+
public StudyResponseDto.SimpleInfo makeStudy(User user, StudyRequestDto.Make make) {
29+
Study study = Study.builder()
30+
.name(make.getName())
31+
.type(make.getType())
32+
.description(make.getDescription())
33+
.startDate(make.getStartDate())
34+
.endDate(make.getEndDate())
35+
.cycle(make.getCycle())
36+
.build();
37+
studyRepository.save(study);
38+
39+
return StudyResponseDto.SimpleInfo.of(study);
40+
}
41+
42+
@Override
43+
public Page<StudyResponseDto.SimpleInfo> findAll(Pageable pageable) {
44+
return studyRepository.findAll(pageable).map(StudyResponseDto.SimpleInfo::of);
45+
}
46+
47+
@Override
48+
public Page<StudyResponseDto.SimpleInfo> findAllByNameContains(String name, Pageable pageable) {
49+
return studyRepository.findAllByNameContains(name, pageable).map(StudyResponseDto.SimpleInfo::of);
50+
}
51+
}

0 commit comments

Comments
 (0)