Skip to content

Commit f80b5c8

Browse files
authored
Merge pull request #63 from Hsu-Connect/feat/#61
[#61] Feat: 커리어 단건 조회 API 구현
2 parents 4a27185 + e228574 commit f80b5c8

File tree

4 files changed

+55
-0
lines changed

4 files changed

+55
-0
lines changed

src/main/java/hansung/hansung_connect/config/SecurityConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
4545
.requestMatchers("/users/me/careers/**").permitAll()
4646
.requestMatchers("/links/**").permitAll()
4747
.requestMatchers("/users/**").permitAll()
48+
.requestMatchers("/careers/**").permitAll()
4849
// 그 외는 인증 필요
4950
.anyRequest().authenticated()
5051
)

src/main/java/hansung/hansung_connect/domain/career/controller/CareerController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import hansung.hansung_connect.domain.career.dto.CareerRequestDTO.BatchCreateRequestDTO;
66
import hansung.hansung_connect.domain.career.dto.CareerResponseDTO;
77
import hansung.hansung_connect.domain.career.service.CareerCommandService;
8+
import hansung.hansung_connect.domain.career.service.CareerQueryService;
89
import io.swagger.v3.oas.annotations.Operation;
910
import io.swagger.v3.oas.annotations.tags.Tag;
1011
import lombok.RequiredArgsConstructor;
12+
import org.springframework.web.bind.annotation.GetMapping;
1113
import org.springframework.web.bind.annotation.PathVariable;
1214
import org.springframework.web.bind.annotation.PostMapping;
1315
import org.springframework.web.bind.annotation.PutMapping;
@@ -20,6 +22,7 @@
2022
public class CareerController {
2123

2224
private final CareerCommandService careerCommandService;
25+
private final CareerQueryService careerQueryService;
2326

2427
@Operation(
2528
summary = "내 커리어 1개 추가",
@@ -90,5 +93,18 @@ public ApiResponse<CareerResponseDTO.UpdateResponseDTO> updateCareer(
9093
return ApiResponse.onSuccess(careerCommandService.updateCareer(careerId, request));
9194
}
9295

96+
@Operation(
97+
summary = "커리어 단건 조회",
98+
description = """
99+
커리어 ID로 단건을 조회합니다. <br>
100+
사용자와 무관하게 careerId만 있으면 조회 가능합니다. <br><br>
101+
응답 필드: id, companyName, position, jobType, employed, startYm, endYm
102+
"""
103+
)
104+
@GetMapping("/careers/{careerId}")
105+
public ApiResponse<CareerResponseDTO.CreateResponseDTO> getCareer(@PathVariable Long careerId) {
106+
return ApiResponse.onSuccess(careerQueryService.getCareer(careerId));
107+
}
108+
93109
}
94110

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package hansung.hansung_connect.domain.career.service;
2+
3+
import hansung.hansung_connect.domain.career.dto.CareerResponseDTO;
4+
5+
public interface CareerQueryService {
6+
CareerResponseDTO.CreateResponseDTO getCareer(Long careerId);
7+
}
8+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package hansung.hansung_connect.domain.career.service;
2+
3+
import static hansung.hansung_connect.common.exception.code.status.ErrorStatus.CAREER_NOT_FOUND;
4+
5+
import hansung.hansung_connect.common.exception.GeneralException;
6+
import hansung.hansung_connect.domain.career.converter.CareerConverter;
7+
import hansung.hansung_connect.domain.career.dto.CareerResponseDTO;
8+
import hansung.hansung_connect.domain.career.entity.Career;
9+
import hansung.hansung_connect.domain.career.repository.CareerRepository;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.stereotype.Service;
12+
import org.springframework.transaction.annotation.Transactional;
13+
14+
@Service
15+
@RequiredArgsConstructor
16+
@Transactional(readOnly = true)
17+
public class CareerQueryServiceImpl implements CareerQueryService {
18+
19+
private final CareerRepository careerRepository;
20+
private final CareerConverter careerConverter;
21+
22+
@Override
23+
public CareerResponseDTO.CreateResponseDTO getCareer(Long careerId) {
24+
Career career = careerRepository.findById(careerId)
25+
.orElseThrow(() -> new GeneralException(CAREER_NOT_FOUND));
26+
27+
return careerConverter.toResponseDTO(career);
28+
}
29+
}
30+

0 commit comments

Comments
 (0)