Skip to content

Commit

Permalink
Merge pull request #364 from TEAM-LIAISON/local_edcuation_fix_branch
Browse files Browse the repository at this point in the history
fix : education entity fix
  • Loading branch information
oznchex authored Jul 29, 2024
2 parents 2626c28 + 2d86013 commit 33ef48b
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 148 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,47 +31,46 @@ public class Education {
@Column(nullable = false)
private int graduationYear;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "university_id")
private University university;
@Column(nullable = false)
private String universityName;

@Column(nullable = false)
private String majorName;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "degree_id")
private Degree degree;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "major_id")
private Major major;

public static Education of(
final Profile profile,
final int admissionYear,
final int graduationYear,
final University university,
final Degree degree,
final Major major
final String universityName,
final String majorName,
final Degree degree
){
return new Education(
null,
profile,
admissionYear,
graduationYear,
university,
degree,
major
universityName,
majorName,
degree
);
}

public void update(
final EducationCreateRequest educationCreateRequest,
final University university,
final Major major,
final String universityName,
final String majorName,
final Degree degree
) {
this.admissionYear = educationCreateRequest.getAdmissionYear();
this.graduationYear = educationCreateRequest.getGraduationYear();
this.university = university;
this.major = major;
this.universityName = universityName;
this.majorName = majorName;
this.degree = degree;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ public static EducationResponse of(final Education education) {
education.getId(),
education.getAdmissionYear(),
education.getGraduationYear(),
education.getUniversity().getUniversityName(),
education.getMajor().getMajorName(),
education.getUniversityName(),
education.getMajorName(),
education.getDegree().getDegreeName()
);
}
Expand All @@ -35,8 +35,8 @@ public static EducationResponse personalEducation(final Education education) {
education.getId(),
education.getAdmissionYear(),
education.getGraduationYear(),
education.getUniversity().getUniversityName(),
education.getMajor().getMajorName(),
education.getUniversityName(),
education.getMajorName(),
education.getDegree().getDegreeName()
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import liaison.linkit.auth.MemberOnly;
import liaison.linkit.auth.domain.Accessor;
import liaison.linkit.profile.dto.request.education.EducationCreateRequest;
import liaison.linkit.profile.dto.request.education.EducationListCreateRequest;
import liaison.linkit.profile.service.EducationService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -22,17 +21,6 @@ public class EducationController {

public final EducationService educationService;

// 1.5.6. 학력 생성/수정
@PostMapping("/educations")
@MemberOnly
public ResponseEntity<Void> createEducations(
@Auth final Accessor accessor,
@RequestBody @Valid EducationListCreateRequest educationListCreateRequest
) {
log.info("memberId={}의 학력 생성/수정 요청이 들어왔습니다.", accessor.getMemberId());
educationService.saveAll(accessor.getMemberId(), educationListCreateRequest.getEducationList());
return ResponseEntity.ok().build();
}

// 학력 단일 생성
@PostMapping("/education")
Expand Down
35 changes: 7 additions & 28 deletions src/main/java/liaison/linkit/profile/service/EducationService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import liaison.linkit.profile.domain.Profile;
import liaison.linkit.profile.domain.education.Degree;
import liaison.linkit.profile.domain.education.Education;
import liaison.linkit.profile.domain.education.Major;
import liaison.linkit.profile.domain.education.University;
import liaison.linkit.profile.domain.repository.ProfileRepository;
import liaison.linkit.profile.domain.repository.education.DegreeRepository;
import liaison.linkit.profile.domain.repository.education.EducationRepository;
Expand Down Expand Up @@ -61,7 +59,6 @@ public void validateEducationByProfile(final Long profileId) {
}
}


public void saveAll(
final Long memberId,
final List<EducationCreateRequest> educationCreateRequests
Expand All @@ -78,22 +75,16 @@ public void saveAll(

// 반복문을 통해 들어온 순서대로 저장한다.
for (EducationCreateRequest request : educationCreateRequests) {
final University university = universityRepository.findByUniversityName(request.getUniversityName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_UNIVERSITY_NAME));

final Degree degree = degreeRepository.findByDegreeName(request.getDegreeName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_DEGREE_NAME));

final Major major = majorRepository.findByMajorName(request.getMajorName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_MAJOR_NAME));

final Education newEducation = Education.of(
profile,
request.getAdmissionYear(),
request.getGraduationYear(),
university,
degree,
major
request.getUniversityName(),
request.getMajorName(),
degree
);

Education savedEducation = educationRepository.save(newEducation);
Expand Down Expand Up @@ -168,39 +159,27 @@ public Long update(
) {
final Education education = getEducation(educationId);

final University university = universityRepository.findByUniversityName(educationCreateRequest.getUniversityName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_UNIVERSITY_NAME));

final Degree degree = degreeRepository.findByDegreeName(educationCreateRequest.getDegreeName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_DEGREE_NAME));

final Major major = majorRepository.findByMajorName(educationCreateRequest.getMajorName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_MAJOR_NAME));

education.update(educationCreateRequest, university, major, degree);
education.update(educationCreateRequest, educationCreateRequest.getUniversityName(), educationCreateRequest.getMajorName(), degree);
return education.getId();
}

private Long makeNewEducation(
final EducationCreateRequest educationCreateRequest,
final Profile profile
) {
final University university = universityRepository.findByUniversityName(educationCreateRequest.getUniversityName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_UNIVERSITY_NAME));

final Degree degree = degreeRepository.findByDegreeName(educationCreateRequest.getDegreeName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_DEGREE_NAME));

final Major major = majorRepository.findByMajorName(educationCreateRequest.getMajorName())
.orElseThrow(() -> new BadRequestException(NOT_FOUND_MAJOR_NAME));

final Education newEducation = Education.of(
profile,
educationCreateRequest.getAdmissionYear(),
educationCreateRequest.getGraduationYear(),
university,
degree,
major
educationCreateRequest.getUniversityName(),
educationCreateRequest.getMajorName(),
degree
);

return educationRepository.save(newEducation).getId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,31 +61,18 @@ void setUp() {
doNothing().when(educationService).validateEducationByMember(1L);
}

private void makeEducations() throws Exception {
private void makeEducation() throws Exception {
// given
final EducationCreateRequest firstEducationCreateRequest = new EducationCreateRequest(
final EducationCreateRequest educationCreateRequest = new EducationCreateRequest(
2022,
2025,
"홍익대학교",
"컴퓨터공학과",
"졸업"
);

final EducationCreateRequest secondEducationCreateRequest = new EducationCreateRequest(
2022,
2025,
"연세대학교",
"경영학과",
"졸업"
);
final List<EducationCreateRequest> educationCreateRequests = Arrays.asList(firstEducationCreateRequest, secondEducationCreateRequest);

final EducationListCreateRequest educationListCreateRequest = new EducationListCreateRequest(
educationCreateRequests
);

doNothing().when(educationService).saveAll(1L, educationCreateRequests);
performPostRequests(educationListCreateRequest);
doNothing().when(educationService).save(1L, educationCreateRequest);
performPostRequest(educationCreateRequest);
}

private ResultActions performUpdateRequest(final int educationId, final EducationCreateRequest educationCreateRequest) throws Exception {
Expand Down Expand Up @@ -178,76 +165,6 @@ void updateEducation() throws Exception {
));
}

// 1.5.6. 학력 생성 테스트
@DisplayName("학력 항목을 생성할 수 있다.")
@Test
void createEducations() throws Exception {
// given
final EducationCreateRequest firstEducationCreateRequest = new EducationCreateRequest(
2022,
2025,
"홍익대학교",
"컴퓨터공학과",
"졸업"
);

final EducationCreateRequest secondEducationCreateRequest = new EducationCreateRequest(
2022,
2025,
"연세대학교",
"경영학과",
"졸업"
);
final List<EducationCreateRequest> educationCreateRequests = Arrays.asList(firstEducationCreateRequest, secondEducationCreateRequest);

final EducationListCreateRequest educationListCreateRequest = new EducationListCreateRequest(
educationCreateRequests
);

doNothing().when(educationService).saveAll(anyLong(), anyList());

// when
final ResultActions resultActions = performPostRequests(educationListCreateRequest);

// then
resultActions.andExpect(status().isOk())
.andDo(
restDocs.document(
requestCookies(
cookieWithName("refresh-token")
.description("갱신 토큰")
),
requestHeaders(
headerWithName("Authorization")
.description("access token")
.attributes(field("constraint", "문자열(jwt)"))
),
requestFields(
subsectionWithPath("educationList").description("학력 정보 배열").attributes(field("constraint", "객체(배열)")),
fieldWithPath("educationList[].admissionYear")
.type(JsonFieldType.NUMBER)
.description("입학 연도")
.attributes(field("constraint", "4자리 숫자")),
fieldWithPath("educationList[].graduationYear")
.type(JsonFieldType.NUMBER)
.description("졸업 연도")
.attributes(field("constraint", "4자리 숫자")),
fieldWithPath("educationList[].universityName")
.type(JsonFieldType.STRING)
.description("학교명")
.attributes(field("constraint", "문자열")),
fieldWithPath("educationList[].majorName")
.type(JsonFieldType.STRING)
.description("전공명")
.attributes(field("constraint", "문자열")),
fieldWithPath("educationList[].degreeName")
.type(JsonFieldType.STRING)
.description("학위명")
.attributes(field("constraint", "문자열"))
)
)
);
}
@DisplayName("학력 항목 1개를 생성할 수 있다.")
@Test
void createEducation() throws Exception {
Expand Down

0 comments on commit 33ef48b

Please sign in to comment.