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

Feat/#04 create project #26

Merged
merged 33 commits into from
Feb 13, 2024
Merged

Feat/#04 create project #26

merged 33 commits into from
Feb 13, 2024

Conversation

Sehee-Lee-01
Copy link
Member

@Sehee-Lee-01 Sehee-Lee-01 commented Feb 13, 2024

🎫 관련 이슈

Resolves #25

✅ 구현 내용

  • 프로젝트 게시글 관련 클래스 구현
  • 도메인 클래스 단방향 매핑 설정
  • 도메인 클래스 패키징
  • ✨user_skill 테이블에 category 컬럼 추가 및 UserSkill에 반영

💬 코멘트

  • 예림님이 작성해준 코드 초안을 바탕으로 덧붙여서 구현했습니다!
  • 코드 양이 상당하다보니 필드 정의 & 생성자(필요한 부분만)까지만 구현해보았습니다!
    • 유효성 검사는 나눠서 이후 작업 후 PR 올리것습니다! 😱 조절 하려고 했는데 300자가 넘어갔네요ㅜㅜ
  • 모든 관계는 단방향 매핑으로 구성했습니다!
  • UserSkill, ProjectSkill 클래스는 뭔가 중복이 보여서 찝찝하지만 더 좋은 방법이 생각나지 않아 우선 단순한 구조, 단순한 방법으로 구현하는 방법으로 진행했습니다!
  • 참고로 Entity 정의하다가 애플리케이션 실행했을 때 노션 글:Enum을 DB에 저장할 때 어떻게 설정 해야할까?에 나온 에러가 발생한 곳이 좀 있어서 columnDefinition 설정을 추가함으로써 해결했습니다!
    • User, ProjectFile, ProjectMember 등등
  • 🚨 user_skill 테이블 구조 변경이 있으니 확인해주시면 감사하겠습니다!

Copy link
Contributor

@yenzip yenzip left a comment

Choose a reason for hiding this comment

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

정말 고생 많으셨습니다...! 💯
가장 중요한 도메인이기에 할 일이 너무 많으셨을 것 같네요..! 👍

개인적으로 코드를 보면서 든 생각인데, 패키지 이름에 이미 project가 있기 때문에 클래스 이름에 Project는 없어도 되지 않나 생각이 듭니다..!

  • ProjectFile -> File
  • ProjectMember -> Member

ProjectSkill 같은 경우는 UserSkill에도 사용되니까 이러한 경우만 그대로 두어도 괜찮지 않을까 싶은데, 다른 분들의 의견이 궁금합니다..!

다시 한 번 정말 고생 많으셨습니다 ❤️‍🔥

Comment on lines 38 to 42
@Column(name = "start_date", columnDefinition = "TIMESTAMP")
private LocalDate startDate;

@Column(name = "end_date", columnDefinition = "TIMESTAMP")
private LocalDate endDate;
Copy link
Contributor

Choose a reason for hiding this comment

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

크게 상관이 없기는 한데, deleted_at과 함께 통일성을 맞추기 위해 LocalDateTime은 어떠신가요? 혹시 LocalDate로 설정하신 이유가 있으신가요?

Copy link
Member Author

@Sehee-Lee-01 Sehee-Lee-01 Feb 13, 2024

Choose a reason for hiding this comment

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

요것은 저희가 2024-03 이런 형식으로 저장하기로 했던 것 같아서 혹시 몰라 필요한 정보만 담는 것으로 구현 했습니다! 여쭤보려 했는데 까먹고 있었네요!
처음에는 통일성을 고려하지 못해서 이렇게 구현했는데 통일성을 고려한 것이라면 Time까지 넣는 것이 좋은 것 같습니당!

Copy link
Contributor

Choose a reason for hiding this comment

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

(세희님은 아니지만..) 저희가 프로젝트 시작, 종료 날짜를 년/월까지만 받기로 해서 그런 것 같습니당! 그래서 저는 그대로 LocalDate로 해도 상관없을 것 같은데, 편하신대로 하면 될 것 같습니당!

@@ -0,0 +1,6 @@
package sixgaezzang.sidepeek.projects.domain;

public enum ProjectAuthority {
Copy link
Contributor

@yenzip yenzip Feb 13, 2024

Choose a reason for hiding this comment

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

생각해보니까 ProjectAuthority 보다는 AuthorityType이 enum에 더 적합하고 좋은 것 같은데 다들 어떻게 생각하시나요?

Copy link
Member Author

Choose a reason for hiding this comment

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

저도 enum 클래스 같은 경우에는 특별한 이유가 있지 않으면 Type를 붙이는 편이긴 합니다! 네이밍 좋은 것 같습니당!!

Copy link
Contributor

@uijin-j uijin-j Feb 13, 2024

Choose a reason for hiding this comment

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

저도 Enum에는 XXXType이라는 네이밍이 더 좋습니당!
근데 또 막상 AuthorityType이라는 이름을 생각해보면 일반적으로 auth에서 쓰는 type(ex. ADMIN, NOMAL)과 헷갈릴 것 같기도 하니욤.. 근데 저희 프로젝트에는 auth에 따로 AuthorityType이 없고 저희끼리만 이해하고 있으면 될 것 같아서 AuthorityType으로 해도 될 것 같습니다!

@Sehee-Lee-01
Copy link
Member Author

정말 고생 많으셨습니다...! 💯 가장 중요한 도메인이기에 할 일이 너무 많으셨을 것 같네요..! 👍

개인적으로 코드를 보면서 든 생각인데, 패키지 이름에 이미 project가 있기 때문에 클래스 이름에 Project는 없어도 되지 않나 생각이 듭니다..!

  • ProjectFile -> File
  • ProjectMember -> Member

ProjectSkill 같은 경우는 UserSkill에도 사용되니까 이러한 경우만 그대로 두어도 괜찮지 않을까 싶은데, 다른 분들의 의견이 궁금합니다..!

다시 한 번 정말 고생 많으셨습니다 ❤️‍🔥

꼼꼼한 리뷰 감사합니다ㅠㅠ😭
Member부분은 반영완료했습니다! ProjectFile은 기존에 java.io나 spring에 File 라는 기존 클래스가 있어서 혹여나 나중에 헷갈리지 않을까 하여 ProjectFile로 명시해놓았습니다! 하지만 저희가 File 클래스를 쓸 일이 많지는 않을 것 같아서 File이라는 이름으로 해도 괜찮을 것 같습니다!

Copy link
Contributor

@uijin-j uijin-j left a comment

Choose a reason for hiding this comment

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

LGTM~ 엔티티 엄청 많네요.. 정말 넘넘 고생하셨습니다!! 최고🥹👍🏻
앗 그리고 전 ProjectSkillUserSkill은 어쩔 수 없는 중복이라고 생각합니다..! (한 테이블에 Project, User 모두에 대한 FK를 넣는 방식도 생각해 봤는데, 테이블명도 모호해지고 더 복잡성만 올라갈 것 같더라구요! 결론은 지금이 좋습니당!!)

Comment on lines 38 to 42
@Column(name = "start_date", columnDefinition = "TIMESTAMP")
private LocalDate startDate;

@Column(name = "end_date", columnDefinition = "TIMESTAMP")
private LocalDate endDate;
Copy link
Contributor

Choose a reason for hiding this comment

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

(세희님은 아니지만..) 저희가 프로젝트 시작, 종료 날짜를 년/월까지만 받기로 해서 그런 것 같습니당! 그래서 저는 그대로 LocalDate로 해도 상관없을 것 같은데, 편하신대로 하면 될 것 같습니당!

@@ -0,0 +1,6 @@
package sixgaezzang.sidepeek.projects.domain;

public enum ProjectAuthority {
Copy link
Contributor

@uijin-j uijin-j Feb 13, 2024

Choose a reason for hiding this comment

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

저도 Enum에는 XXXType이라는 네이밍이 더 좋습니당!
근데 또 막상 AuthorityType이라는 이름을 생각해보면 일반적으로 auth에서 쓰는 type(ex. ADMIN, NOMAL)과 헷갈릴 것 같기도 하니욤.. 근데 저희 프로젝트에는 auth에 따로 AuthorityType이 없고 저희끼리만 이해하고 있으면 될 것 같아서 AuthorityType으로 해도 될 것 같습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment