Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: 스터디 엔티티 수정 #466

Merged
merged 16 commits into from
Oct 15, 2023
Merged

refactor: 스터디 엔티티 수정 #466

merged 16 commits into from
Oct 15, 2023

Conversation

CFalws
Copy link
Member

@CFalws CFalws commented Oct 4, 2023

👍 관련 이슈


기획의 어떤 부분을 구현 / 수정했는가 (굉장히 상세하게 적어주세요, 해당 커밋의 링크, 코드의 위치를 남겨주면 더욱 좋습니다.)

밑은 예시입니다.
이슈 링크

  • Round의 진행 요일을 추가하지는 않았습니다. 다만, 날짜를 계산해서 Round에 endAt을 넣어주는 것이 더 낫지 않을까 하는 생각이었어요
    • 홈뷰에서 남은 날짜가 있어야 해서 endAt이 있는 것이 좋다고 생각했습니다.
    • 한 주 단위로 조회하기에 weekNumber와 Study의 요일들, 그리고 상대적 순서를 통해 요일을 알 수 있다고 판단했어요
    • 다만 ProgressDayOfWeek가 Study를 참조하고 있는 모양이기에 Study로 현재 주차의 회차들을 조회하는 게 쉽지 않을 거라는 생각이 듭니다.
  • Study에 minimumWeeks를 추가하였습니다. 해당 필드가 최소 진행 주차를 표현하게 됩니다.
  • 요일을 int 자료형으로 표현하였습니다. (Enum으로 수정)
  • flyway에서 기존 column을 drop하고 새로운 칼럼을 추가하였습니다. 다만 컴파일 에러가 많아서 실제 디비 서버에 적용해보지는 못했습니다.
  • 스터디와 진행 요일의 매핑 테이블을 composite key로 식별케 하였습니다.

@CFalws CFalws changed the title Be/feature/452 스터디 엔티티 수정 Oct 4, 2023
@CFalws CFalws self-assigned this Oct 4, 2023
@CFalws CFalws added backend🤎 백엔드 feat 기능 추가 ε'miliene🏊 에밀 labels Oct 4, 2023
@github-actions
Copy link

github-actions bot commented Oct 4, 2023

Test Results

106 tests   106 ✔️  17s ⏱️
  22 suites      0 💤
  22 files        0

Results for commit 716b01e.

♻️ This comment has been updated with latest results.

Copy link
Member

@yujamint yujamint left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

에밀 고생하셨습니다~ 궁금한 부분이 좀 있어서 질문 몇 가지 남겼습니다. 답변 주시면 감사하겠습니다~

}

private void validateStudyProcessingStatus() {
protected void validateStudyProcessingStatus() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2: V1,V2를 없앴으니 접근제어자가 private이어도 좋을 거 같습니다!

this.currentRoundNumber = currentRoundNumber == null ? 1 : currentRoundNumber;
this.rounds = rounds == null ? new ArrayList<>() : rounds;
}

public static Study initializeStudyOf(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 빌더, update 메서드를 비롯하여 minimumWeeks의 값이 할당되는 부분이 없는 이유는 너무 변경지점이 많아서 일단 보류한 것인가요??

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

민트의 코멘트를 보고 빌더가 있는데 왜 이걸 이렇게 썼지? 생각해보니 Period와 Round를 문자열만 받아 생성하기 어려워서였군요ㅋㅋㅋ.. 두 객체에 문자열을 받아 생성할 수 있는 책임을 넘겨주고 빌더에 .period(new Period(PeriodOfRound)) 처럼 스트링을 넘겨주는 편이 좋아보이는데 이때는 왜 이렇게 했을까요??

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

우린 확실히 뉴비였네요

@Column(nullable = false)
@Enumerated(value = EnumType.STRING)
private PeriodUnit periodUnit;
private int minimumWeeks;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p5: 뭔가 속이 시원한데요 ㅋㅋ

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

객체도 지워버리시죠

@@ -306,4 +240,15 @@ public Round getCurrentRound() {
public boolean isMaster(Member member) {
return getCurrentRound().isMaster(member);
}

protected void updateInformation(Member member, String name, Integer numberOfMaximumMembers, LocalDateTime startAt, String introduction) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2: 이 메서드도 private이어도 될 거 같습니다!

@Entity
public class ProgressDayOfWeek {

@EmbeddedId
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 이렇게 복합키를 사용할 수 있는 줄은 처음 알았네요 👍
엔티티의 id로 쓰인다는 점에서 클래스명을 ProgressDayOfWeekId로 바꾸는 게 더 직관적일 거 같은데 어떻게 생각하시나요??

private Long studyId;

@Column(name = "progress_day_of_week")
private int progressDayOfWeek;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 이게 스터디를 주 몇 일 하는지 나타내는 값인가요?? 왜 복합키로 사용한 건지 궁금합니다!

Copy link
Collaborator

@poi1649 poi1649 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생많으셨습니다 에밀
이 녀석을 dev에 봉합시키는 순간 말도안되는 문제들이 생기겠군요. git 이 없었다면 정말 걱정됐을 것 같아요ㅋㅋㅋㅋㅋㅋ.
api 만들면서 하나씩 해결해보죠! 컴파일 에러 처리반 TEAM 201 화이팅입니다

this.currentRoundNumber = currentRoundNumber == null ? 1 : currentRoundNumber;
this.rounds = rounds == null ? new ArrayList<>() : rounds;
}

public static Study initializeStudyOf(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

민트의 코멘트를 보고 빌더가 있는데 왜 이걸 이렇게 썼지? 생각해보니 Period와 Round를 문자열만 받아 생성하기 어려워서였군요ㅋㅋㅋ.. 두 객체에 문자열을 받아 생성할 수 있는 책임을 넘겨주고 빌더에 .period(new Period(PeriodOfRound)) 처럼 스트링을 넘겨주는 편이 좋아보이는데 이때는 왜 이렇게 했을까요??

Comment on lines 248 to 255
validateName(name);
validateNumberOfMaximumMembers(numberOfMaximumMembers);
validateMaster(member);
validateStudyProcessingStatus();
this.name = name;
this.numberOfMaximumMembers = numberOfMaximumMembers;
this.startAt = startAt;
this.introduction = introduction;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update도 이렇게 말고 변수마다 구현해줄 걸 그랬네요ㅋㅋㅋㅋㅋ.. 단일 책임 원칙을 경험에서 배워갑니다.

Comment on lines 121 to 123
.periodOfRound(PeriodUnit.getPeriodNumber(periodOfRound))
.periodUnit(PeriodUnit.getPeriodUnit(periodOfRound))
.introduction(introduction)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이친구는 삭제가 필요하겠군요


@Column(nullable = false)
@Enumerated(value = EnumType.STRING)
private PeriodUnit periodUnit;
private Integer progressDaysPerWeek;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Enum set으로 두는 건 어떨까요?

yujamint and others added 10 commits October 6, 2023 13:59
* fix: totalRoundCount, periodOfRound 삭제에 따른 컴파일 에러 해결

* fix: 엔티티 수정에 따른 컴파일 에러 임시 해결
* refactor: swagger 설정 변경

* refactor: swagger url 설정 파일로 관리
* feat: 동적 쿼리를 통해 스터디 목록 필터링/정렬

* refactor: config v1 prefix 제거

* refactor: 패키지 수정

* refactor: v1 prefix 제거

* refactor: status null 처리

* refactor: response 이름 수정

* refactor: param을 enum으로 컨버팅

* refactor: enum 순서 수정

* refactor: 메서드 추출
* refactor: Study.startAt 제거 및 minimumWeeks와 meetingDaysCountPerWeek 추가

* fix: 스터디 목록 조회 API url 수정

* fix: 실패하는 스터디 일부 복구 및 주석 작성

* test: 실패하는 테스트 복구
* refactor: 상세 조회 수정

* feat: 멤버 인증 정보 조회 응답 수정
* feat: 지원한 스터디 목록 조회 기능

* refactor: querydsl로 마이그래이션

* chore: 개행

* chore: 정렬 수정
@poi1649 poi1649 changed the title 스터디 엔티티 수정 refactor: 스터디 엔티티 수정 Oct 13, 2023
poi1649 and others added 2 commits October 14, 2023 12:37
* feat: 주차별 회차 조회 기능 추가

* refactor: 투두 -> 머스트두 변경, 생성 / 수정 통합

* Update backend/src/test/java/com/yigongil/backend/domain/round/RoundTest.java

* Update backend/src/test/java/com/yigongil/backend/domain/round/RoundTest.java
@kevstevie kevstevie merged commit b949816 into BE/develop Oct 15, 2023
2 checks passed
@kevstevie kevstevie deleted the BE/feature/452 branch October 15, 2023 05:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend🤎 백엔드 feat 기능 추가 ε'miliene🏊 에밀
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants