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

[INIT] Note 도메인 생성, 노트 생성 API 추가 및 에러 핸들러 추가 #159

Merged
merged 60 commits into from
Nov 6, 2024

Conversation

paragon0107
Copy link
Contributor

✨ Related Issue

📝 기능 구현 명세

image
image
첫번째 사진은 일반 노트 생성
두번째는 템플릿 노트 생성 입니다.

🐥 추가적인 언급 사항

  • 기존 글자수 검증은 엔티티에서 했었는데 엔티티는 데이터베이스에 맵핑을 하기 위한 용도로만 사용하고 앞으로는 컨트롤러 부분에 검증하는 역할을 추가하고자 합니다.
  • 또한 데이터베이스에서 varchar()로 변경해줌으로써 최대 글자수를 데이터베이스 상에서도 제한하고자 합니다.

@paragon0107 paragon0107 added the feat 기능 label Nov 3, 2024
@paragon0107 paragon0107 requested a review from Chan531 November 3, 2024 18:17
@paragon0107 paragon0107 self-assigned this Nov 3, 2024
@paragon0107 paragon0107 linked an issue Nov 3, 2024 that may be closed by this pull request
2 tasks
Copy link
Contributor

@Chan531 Chan531 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다! 자유노트랑 템플릿노트이 비슷한 감이 없지않아 있어서 이 부분을 추후에 해결해봐도 좋을 거 같아요! 질문 리뷰 말고는 해결하시고 직접 리졸브해주시면 될 거 같습니다!

@paragon0107
Copy link
Contributor Author

howtofix, howtoprepare, whatactivity~, whatisdisapp~를 하나로 묶는건 어떻게 구현할 지 예시를 들어주실 수 있을까요?
제가 분리한 이유는 마땅히 좋은 방법이 생각나지 않았습니다. 또한 이걸 합쳐서 저장하고 나중에 꺼내올 때 다시 특정 방식으로 Parsing을 진행하는 리소스를 굳이 들일 필요는 없다고 생각했기 때문입니다! Parsing을 할 때 제가 생각한 방법은 특정 문자열을 각 답변 사이에 넣어 구분자로 활용해볼까 라는 생각을 해봤지만 정말 우연의 일치로 특정 묹자열을 사용자가 입력값으로 넣을 수 있으니 이런 위험을 감수할 바엔 따로 관리하고자 판단했습니다!

두번째로 하나의 상위 클래스인 NoteBase를 생성하여 상속 받는 식으로 진행하겠습닏다

세번째로 VO에 대해선 제가 VO의 불변성에 대해 간과했습니다..! 수정하도록 하겠습니다.

마지막으로 현재 Note에서 VO를 뺄 예정이기 때문에 컨트롤러에서 VO를 사용한 검증이 아닌 일반 Valid를 사용하여 값을 검증할 것 같습니다. 다만 컨트롤러에서 서비스로 넘어가는 DTO는 의존성 문제로 그대로 둘 예정입니다.(컨트롤러 부분의 api 패키지가 service 패키지를 의존하는데 service 부분에서 컨트롤러에서 사용된 dto를 그대로 사용하면 service패키지에서 api 패키지를 의존하여 역 의존성이 생기는 상황 발생 방지)

만약 VO를 상황이 온다면 말씀해주신 부분 참고하여 고민 후 진행하도록 하겠습니다.

@Chan531
Copy link
Contributor

Chan531 commented Nov 5, 2024

다만 컨트롤러에서 서비스로 넘어가는 DTO는 의존성 문제로 그대로 둘 예정입니다.(컨트롤러 부분의 api 패키지가 service 패키지를 의존하는데 service 부분에서 컨트롤러에서 사용된 dto를 그대로 사용하면 service패키지에서 api 패키지를 의존하여 역 의존성이 생기는 상황 발생 방지)
-> 합숙 전 고터에서 건이랑 DB 설계하는 과정에서 기억이 나는지는 모르겠지만 소프티에서 말씀하신 것처럼 컨트롤러에서만 쓰이는 dto, 서비스에서만 쓰이는 dto를 분리해서 민규님이 작성해주신 로직대로 구현을 했는데 수정사항이 생기면 두 dto를 모두 고쳐줘야 하고 코드가 너무 복잡해지는 거 같아서 다시 하나의 dto를 같이 쓰는 방식으로 돌아갔었는데요! 한 번 민규님 방식대로 해보시고 나중에 장단점에 대해 이야기 나눠봐도 좋을 거 같습니다~!

Copy link
Contributor

@Chan531 Chan531 left a comment

Choose a reason for hiding this comment

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

업데이트 내용 확인했습니다.
혹시 노트 내용을 인코딩해서 저장하는 이유가 있을까요? 답 남겨주시고 머지해주시면 될 거 같아요!

@paragon0107 paragon0107 merged commit 1a35fa8 into develop Nov 6, 2024
1 check passed
@paragon0107 paragon0107 deleted the init-#152-create-note branch November 6, 2024 04:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 기능
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[INIT] 신규 도메인(노트) 생성 및 기존 도메인 수정
2 participants