<aside> <img src="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" alt="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" width="40px" /> ์ฐธ์กฐ Github Code
</aside>
DMakerController
์ editDeveloper
๋ฉ์๋ ์ถ๊ฐ@PutMapping("/developer/{memberId}")
public DeveloperDetailDto editDeveloper(
@PathVariable String memberId,
@Valid @RequestBody EditDeveloper.Request request
) {
log.info("GET /getAllDeveloperDetail HTTP/1.1 ");
return dmakerService.editDeveloper(memberId, request);
}
EditDeveloper
๊ตฌํpublic class EditDeveloper {
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public static class Request{
@NotNull // ๋น๊ฐ ํ์ฉ X
private DeveloperLevel developerLevel;
@NotNull
private DeveloperSkillType developerSkillType;
@NotNull
@Min(0) // ์ต์ 0
@Max(20) // ์ต๋ 20
private Integer experienceYears;
}
}
DMakerService
์ ํ๋ผ๋ฏธํฐ CHECK(Update)
๊ตฌํ// ํ๋ผ๋ฏธํฐ CHECK(Update)
private void validateEditDeveloperRequest(String memberId, EditDeveloper.Request request) {
// Business Validation
DeveloperLevel developerLevel = request.getDeveloperLevel();
Integer experienceYears = request.getExperienceYears();
validateDeveloperLevel(developerLevel, experienceYears);
}
private void validateDeveloperLevel(DeveloperLevel developerLevel, Integer experienceYears) {
if (developerLevel == DeveloperLevel.SENIOR
&& experienceYears < 10) {
throw new DMakerException(LEVEL_EXPERIENCE_YEARS_NOT_MATCHED);
} else if (developerLevel == DeveloperLevel.JUNGNIOR
&& (experienceYears < 4 || experienceYears > 10)) {
throw new DMakerException(LEVEL_EXPERIENCE_YEARS_NOT_MATCHED);
} else if (developerLevel == DeveloperLevel.JUNIOR
&& experienceYears > 4) {
throw new DMakerException(LEVEL_EXPERIENCE_YEARS_NOT_MATCHED);
}
}
DMakerService
์ editDeveloper
๊ตฌํ@Transactional
public DeveloperDetailDto editDeveloper(String memberId, EditDeveloper.Request request) {
validateEditDeveloperRequest(memberId, request);
Developer developer = developerRepository.findByMemberId(memberId)
.orElseThrow(() -> new DMakerException(NO_DEVELOPER));
developer.setDeveloperLevel(request.getDeveloperLevel());
developer.setDeveloperSkillType(request.getDeveloperSkillType());
developer.setExperienceYear(request.getExperienceYears());
return DeveloperDetailDto.fromEntity(developer);
}
Developer developer = developerRepository.findByMemberId(memberId) .orElseThrow(() -> new DMakerException(NO_DEVELOPER));
โ> ์์ ์ ํด๋น ๊ฐ์ด ์๋ค๋ฉด ์๋ฌ ๋ฐ์๋๊ฒ ์ฒ๋ฆฌ(DMakerException
)PUT <http://localhost:8080/developer/Mini>
Content-Type: application/json;charset=utf-8
{
"developerLevel":"JUNGNIOR",
"developerSkillType":"FRONT_END",
"experienceYears":5
}
### EditDevelopers TEST
<aside> ๐ก ์์ธํ ์์ค์ฝ๋๋ ํด๋น COMMIT์ ํด๋ฆญํ์ฌ ์ฐธ์กฐ
</aside>