Skip to content

Commit

Permalink
[FEATURE] 학과 조회 API 최적화 (#155)
Browse files Browse the repository at this point in the history
* feat: member_count 필드 추가 (#154)

* feat: 학과 조회 API 수정 (#154)

* feat: 회원가입 시 데이터 동기화 (#154)

* feat: 회원 탈퇴 시 데이터 동기화 (#154)
  • Loading branch information
hyunmin0317 authored Jan 15, 2025
1 parent f1a9c84 commit 477c827
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ private static DepartmentResponseDto from(Department department) {
.college(department.getCollege())
.name(department.getName())
.code(department.getCode())
.count(department.getMembers().size())
.count(department.getMemberCount())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,6 @@ public MemberInfoResponseDto changePasswordByAuth(String username, ChangePasswor

public void deleteMember(Long memberId) {
Member member = memberRepository.findById(memberId).orElseThrow(() -> new GeneralException(ErrorCode.MEMBER_NOT_FOUND));
memberRepository.delete(member);
member.delete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,15 @@ public class Department {
@Column(nullable = false)
private boolean isEditable;

@Column(nullable = false)
private int memberCount = 0;

private String code;

@OneToMany(mappedBy = "department", cascade = CascadeType.ALL, orphanRemoval = true)
private final List<Member> members = new ArrayList<>();

public void updateMemberCount() {
this.memberCount = members.size();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public class Member extends BaseEntity {
public void setDepartment(Department department) {
this.department = department;
department.getMembers().add(this);
department.updateMemberCount();
}

public void setInfo(Year year, Department department, String encodePw) {
Expand All @@ -81,6 +82,13 @@ public void update(Department department, String name, String email) {
this.email = email;
}

public void delete() {
Department department = this.department;
this.department = null;
department.getMembers().remove(this);
department.updateMemberCount();
}

public void changePassword(String password) {
this.password = password;
}
Expand Down

0 comments on commit 477c827

Please sign in to comment.