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] 게시글 도메인 리팩터링 #549

Merged
merged 49 commits into from
Sep 19, 2023
Merged

[REFACTOR] 게시글 도메인 리팩터링 #549

merged 49 commits into from
Sep 19, 2023

Conversation

woo-chang
Copy link
Collaborator

🔥 연관 이슈

📝 작업 요약

게시글 도메인을 리팩토링하였습니다.

⏰ 소요 시간

3일 .. ?

예상치 못한 부분에서 에러가 종종 발생하여 생각보다 시간이 오래 걸리게 된 것 같습니다 🥲

많은 기능을 혼자 구현하고 개발한 아벨 존경합니다 🙇🏻‍♂️

🔎 작업 상세 설명

  • 한 클래스에 1000줄이 넘던 코드를 역할에 맞게 분리하였습니다.
    • PostGuestService : 게시글과 관련한 비회원 로직
    • PostCommandService : 게시글 생성, 수정, 삭제 등과 같이 도메인의 변화를 주는 로직
    • PostQueryService : 게시글 도메인의 변화 없이 조회만 발생하는 로직
  • 연관관계를 값 객체에서 상위 엔티티로 올려 연관관계가 잘 보이도록 수정하였습니다.
    • 추후에 연관관계 엔티티의 로직이 많아진다면 값 객체로 분리해봐도 좋을 것 같습니다!
  • 중복되는 코드를 제거하고 중복이 발생하는 부분은 메서드로 추출하였습니다.
  • 하나의 메서드에서는 하나의 역할만 수행하도록 하여 코드 가독성을 개선하였습니다.
  • 코드 컨벤션이 일치하지 않았던 부분에 대해 코드 컨벤션을 수정하였습니다.
  • 어노테이션 기반의 테스트 유틸이 아닌 상속 구조의 테스트 유틸을 생성하여 테스트에서 중복되는 부분은 재사용할 수 있도록 하였습니다.
  • 리팩토링 전 214개의 테스트에서 100개 가량 테스트를 작성하여 329개의 테스트로 검증 안정성을 높였습니다.

🌟 논의 사항

리팩토링하면서 코드 컨벤션으로 맞추고 싶은 부분 Discussion에 올려두었는데 같이 얘기해보면 좋을 것 같아요 :)

#526

PR이 생각보다 커진 것 같아 리뷰를 해주시는 분들께 죄송하네요 🥲 리뷰를 통해 많은 질문과 커멘트 주시면 많이 배워가도록 하겠습니다!

@github-actions
Copy link

github-actions bot commented Sep 10, 2023

Test Results

364 tests   364 ✔️  17s ⏱️
111 suites      0 💤
111 files        0

Results for commit 443b151.

♻️ This comment has been updated with latest results.

Copy link
Collaborator

@aiaiaiai1 aiaiaiai1 left a comment

Choose a reason for hiding this comment

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

다즐 질문답변과 리뷰반영하시느라 고생많으셨습니다! 👍👍
빨리 배포됐음 좋겠네요! 근데 그 컨플릭트.. 어마무시한거같던데 .. 화이팅..입니다..!!


@RequiredArgsConstructor
@Service
public class PostGuestService {
Copy link
Collaborator

Choose a reason for hiding this comment

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

P1
PostGuestService -> PostGuestQueryService 변경 후 @transactional(readOnly = true)를 클래스 위에 붙여주면 될 것 같아요 :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

현재는 해당 PR이 빨리 머지되는 것이 더 우선시되는 상황인 것 같아 해당 부분은 나중에 전체적으로 QueryCommand를 분리하면서 수정하도록 하겠습니다 !

Comment on lines +68 to +71
validateHiddenPost(post);
validateHiddenComment(comment);
validateBelongsToPost(comment, post);
validateWriter(comment, loginMember);
Copy link
Collaborator

Choose a reason for hiding this comment

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

사실 지금도 많이 헷갈리네요. 어떤 상황에 대한 판단(true or false)까지는 도메인의 역할이 확실하다고 주장할 수 있지만, throw를 통해 예외를 던지는 행위 자체는 도메인의 역할로 볼 수 있을까? 아니면 지금처럼 Service 계층에서 던져주어야 할까? 라는 고민이 가장 큽니다.

제가 직접적으로 느낀 장단점을 말해보자면,

서비스 계층에서 예외를 던지는 입장에서의 장단점
장점

  1. 서비스 계층의 한 부분에 예외 처리 로직을 응집시킬 수 있어서 파악하기 편할 수 있다.
  2. 각 도메인 객체들이 상태에 대한 부분만을 갖고 있을 수 있다.

단점

  1. 예외 처리 상황이 많아지면 Service의 크기가 기하급수적으로 커질 수 있다.
  2. 여러 상태(도메인)에 대한 예외 처리 로직을 하나의 Service가 모두 갖고 있어서 오히려 가독성이 떨어질 수 있다.

이에 대한 다즐의 의견이 궁금합니다.

Comment on lines 155 to 170
private List<PostOptionUpdateRequest> extractPostOptionAdds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
final boolean hasInvalidId = postOptionUpdates.stream()
.map(PostOptionUpdateRequest::getId)
.anyMatch(id -> id != null && !postOptionIds.contains(id));

if (hasInvalidId) {
throw new BadRequestException(PostOptionExceptionType.UNRELATED_POST_OPTION);
}

return postOptionUpdates.stream()
.filter(postOptionUpdate -> postOptionUpdate.getId() == null)
.toList();
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

P2

Suggested change
private List<PostOptionUpdateRequest> extractPostOptionAdds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
final boolean hasInvalidId = postOptionUpdates.stream()
.map(PostOptionUpdateRequest::getId)
.anyMatch(id -> id != null && !postOptionIds.contains(id));
if (hasInvalidId) {
throw new BadRequestException(PostOptionExceptionType.UNRELATED_POST_OPTION);
}
return postOptionUpdates.stream()
.filter(postOptionUpdate -> postOptionUpdate.getId() == null)
.toList();
}
private List<PostOptionUpdateRequest> extractPostOptionAdds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
validatePostOptionIds(postOptionIds, postOptionUpdates);
return postOptionUpdates.stream()
.filter(postOptionUpdate -> postOptionUpdate.getId() == null)
.toList();
}
private void validatePostOptionIds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
boolean hasInvalidId = postOptionUpdates.stream()
.map(PostOptionUpdateRequest::getId)
.anyMatch(id -> id != null && !postOptionIds.contains(id));
if (hasInvalidId) {
throw new BadRequestException(PostOptionExceptionType.UNRELATED_POST_OPTION);
}
}

이런 식으로 분리해준다면 메인 메서드는 주된 로직에만 더 집중하고 유효성 검증 로직도 따로 분리하여 더 명확해 질 수 있을 것 같은데 어떻게 생각하시나요 :)

Copy link
Collaborator

Choose a reason for hiding this comment

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

혹은 이러한 방식도 생각해볼 수 있을 것 같아요.

Suggested change
private List<PostOptionUpdateRequest> extractPostOptionAdds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
final boolean hasInvalidId = postOptionUpdates.stream()
.map(PostOptionUpdateRequest::getId)
.anyMatch(id -> id != null && !postOptionIds.contains(id));
if (hasInvalidId) {
throw new BadRequestException(PostOptionExceptionType.UNRELATED_POST_OPTION);
}
return postOptionUpdates.stream()
.filter(postOptionUpdate -> postOptionUpdate.getId() == null)
.toList();
}
private List<PostOptionUpdateRequest> extractPostOptionAdds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
validatePostOptionIds(postOptionIds, postOptionUpdates);
return postOptionUpdates.stream()
.filter(postOptionUpdate -> postOptionUpdate.getId() == null)
.toList();
}
private void validatePostOptionIds(
final Set<Long> postOptionIds,
final List<PostOptionUpdateRequest> postOptionUpdates
) {
postOptionUpdates.stream()
.map(PostOptionUpdateRequest::getId)
.filter(Objects::nonNull)
.filter(id -> !postOptionIds.contains(id))
.findFirst()
.ifPresent(invalidId -> {
throw new BadRequestException(PostOptionExceptionType.UNRELATED_POST_OPTION);
});
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

스트림 활용을 너무 잘 하시네요 👍👍

Objects.nonNull(postOptionUpdate.getId()) && postOptionIds.contains(postOptionUpdate.getId()))
.collect(Collectors.toMap(
PostOptionUpdateRequest::getId,
postOptionUpdate -> postOptionUpdate,
Copy link
Collaborator

Choose a reason for hiding this comment

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

Q
이 부분에서 Function.identity()를 쓰기엔 가독성 측면에서 좀 안좋게 느껴지는지 궁금합니다.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

이 부분 고민해봤는데 가독성이 너무 안좋더라구요 🥲 따라서 명시하는 방법을 선택했습니다 :)

Copy link
Collaborator

@jeomxon jeomxon left a comment

Choose a reason for hiding this comment

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

8천줄의 레전드 리팩터링을 하시느라 고생하셨습니다..!
🔥좋은 코드 덕분에 저도 많이 배웠네요 ㅎㅎ🔥
이만 approve하겠습니다 :)

Copy link
Collaborator

@tjdtls690 tjdtls690 left a comment

Choose a reason for hiding this comment

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

많은 코드 리뷰 받고 수정하시느라 고생 많으셨어요!! 역시 ㅡ 즐 ㅡ

# Conflicts:
#	backend/src/main/java/com/votogether/domain/post/controller/PostController.java
#	backend/src/main/java/com/votogether/domain/post/controller/PostControllerDocs.java
#	backend/src/main/java/com/votogether/domain/post/entity/comment/Content.java
#	backend/src/main/java/com/votogether/domain/post/repository/PostRepository.java
#	backend/src/main/java/com/votogether/domain/post/service/PostService.java
#	backend/src/main/java/com/votogether/domain/report/repository/ReportRepository.java
#	backend/src/main/java/com/votogether/domain/report/service/ReportService.java
#	backend/src/main/java/com/votogether/domain/vote/repository/VoteRepository.java
#	backend/src/main/resources/application.yml
#	backend/src/test/java/com/votogether/domain/post/controller/PostControllerTest.java
#	backend/src/test/java/com/votogether/domain/post/repository/CommentRepositoryTest.java
#	backend/src/test/java/com/votogether/domain/post/service/PostServiceTest.java
#	backend/src/test/java/com/votogether/domain/report/repository/ReportRepositoryTest.java
#	backend/src/test/java/com/votogether/domain/report/service/ReportCommandServiceTest.java
#	backend/src/test/java/com/votogether/domain/vote/repository/VoteRepositoryTest.java
#	backend/src/test/java/com/votogether/test/persister/CommentTestPersister.java
#	backend/src/test/java/com/votogether/test/persister/ReportTestPersister.java
#	backend/src/test/resources/application.yml
@github-actions
Copy link

github-actions bot commented Sep 19, 2023

⚡️ Lighthouse report!

Category Score
🔴 Performance 45
🟠 Accessibilty 88
🟠 SEO 85
🟠 PWA 89
Category Score
🟢 First Contentful Paint 0.7 s
🔴 Largest Contentful Paint 5.8 s
🔴 Total Blocking Time 4,270 ms
🟢 Cumulative Layout Shift 0
🟠 Speed Index 5.5 s

@woo-chang woo-chang merged commit 0a2decd into dev Sep 19, 2023
4 checks passed
chsua pushed a commit that referenced this pull request Sep 19, 2023
* refactor: (#512) 게시글 댓글 도메인 리팩토링

* refactor: (#512) 테스트 엔티티 저장 유틸 클래스 구현

* refactor: (#512) 게시글 도메인 리팩토링

* refactor: (#512) 게시글 DTO 중복 제거 및 리팩토링

* refactor: (#512) 게시글 게스트 조회 기능에 대한 레포지토리 리팩토링

* refactor: (#512) 게스트 게시글 기능 리팩토링

* refactor: (#512) 게시글 조회 관련 레포지토리 리팩토링

* refactor: (#512) 게시글 조회 관련 애플리케이션 로직 리팩토링

* refactor: (#512) 게시글 조회 관련 API 리팩토링

* refactor: (#512) 사용하지 않는 클래스 제거

* refactor: (#512) 게시글 쿼리 기능을 위한 부가 클래스 구현

* refactor: (#512) 게시글 도메인 리팩토링

* refactor: (#512) 게시글 쿼리 관련 레포지토리 기능 구현

* refactor: (#512) 블라인드 게시글 조회 예외 처리

* refactor: (#512) 이미지 파일명 생성 기능 구현

* refactor: (#512) 이미지 저장 및 삭제 기능 구현

* refactor: (#512) 게시글 댓글 블라인드 예외 처리

* refactor: (#512) 게시글 작성, 수정, 삭제 로직 리팩토링

* refactor: (#512) 게시글 작성, 수정, 삭제 API 리팩토링

* chore: (#512) 코드 컨벤션 정리

* refactor: (#512) 게시글 요청, 응답 형식 수정

* refactor: (#512) 게시글 도메인 수정

* refactor: (#512) 요청, 응답 수정에 따른 변화 수정

* refactor: (#512) 게시글 수정 로직 개선

* refactor: (#512) 요청 파일 크기 제한 설정

* refactor: (#512) sequence가 필요한 메서드에서 sequence에 의존하도록 수정

* refactor: (#512) 코드 컨벤션에 맞게 name 속성 제거

* refactor: (#512) 게시글 옵션 예외 분리

* refactor: (#512) 임의의 url로 수정

* refactor: (#512) 람다식 컨벤션 수정

* refactor: (#512) enum 컨벤션 수정

* refactor: (#512) 변수명 수정

* refactor: (#512) 쿼리, 커맨드 트랜잭션 방식 명시

* refactor: (#512) early return 방식으로 수정

* refactor: (#512) 메서드 체이닝 방식으로 수정

* refactor: (#512) early return 방식으로 수정

* refactor: (#512) 게시글에 대한 신고 삭제 기능 구현

* refactor: (#512) 기존 게시글 옵션이 아닌 경우 예외 던지도록 수정

* refactor: (#512) 예외 타입 네이밍 수정

* refactor: (#512) 투표 수 int -> long 전환

* refactor: (#512) 게시글 옵션 ID 검증 로직 분리

* refactor: (#512) 충돌 해결하면서 터지는 테스트 수정

* refactor: (#512) 코드 컨벤션 수정

* refactor: (#512) hikari, JpaTransactionManager 로그 제거

* feat: (#512) tomcat 설정 환경변수 추가

* feat: (#512) 게시글 리팩토링
chsua added a commit that referenced this pull request Sep 19, 2023
* design: (#541) 글쓰기 페이지 오른쪽 패딩 적용 및 헤더 글씨 크기 조정

- grid 속성 설정 + 내부 자식 width: 100% 설정
- 헤더 내 취소/제출 버튼을 헤더 글씨 버튼 컴포넌트로 수정(다른 헤더와 통일성 위해)

* design: (#482)  safari에서 글 쓸때 확대되어서 보이는 오류 수정

- 원인: 사파리에서는 input, textArea의 폰트 크기가 16px 미만이면 자동 zoom이 됨

* fix: (#482) 사파리에서 날짜가 nan뜨는 오류 수정

+ 현재와 30일 이상 차이나는 날짜는 "yyyy-mm-dd"형식 문자열로 그려지게 수정

* test: 날짜문자열과 현재 시간을 비교하여 문자열을 출력하는 유틸 함수 테스트 코드 작성

* design: (#541) 작성된 게시글 속 사진 가로 길이 80%으로 수정

* feat: 게시글 마감 제한 시간 정책변경에 따라 3일 -> 14일로 수정

- 공통된 Time interface type폴더로 이동 및 적용
- 마감 제한 시간 상수화
- 마감일자 optionList 형태 변경

* feat: 본문 내용에 연속되는 개행은 1회 개행으로 처리되도록 수정

* test: 연속된 개행을 1회 개행으로 수정하는 유틸함수 테스트

* test: 마감시간 버튼용 배열 변경에 따른 테스트 코드 수정

* fix: 선택된 time 객체 확인을 위해 비교하는 로직을 깊은 비교로 수정

* fix: 최대 마감일자 버튼 클릭 후 사용자 지정 클릭시 잘못된 ui가 출력되는 오류 수정

* fix: (#280) 선택지에 사진 등록/삭제 후 동일한 사진 올릴시 안올라가는 버그 수정

* refactor: 사용하지 않는 함수 삭제 및 시간 유효성 검사 함수 분리

* fix: 마감 최대 시간(14일)인 경우 마감시간 유효성 검사에 걸리지 않도록 수정

* fix: (#280) 선택지에 사진 등록/삭제 후 동일한 사진 올라가지 않는 오류 수정

- 누락된 파일 커밋

* feat: 글 등록/수정 api 수정에 따라 formData 형식 수정

* feat: (#541) imageUrl 앞 도메인 삭제

- 기존: 받은 imageUrl에 http-를 붙여야 image가 보여짐. 반대로 http-를 떼서 수정 api를 보내야 함
- 수정: 서버에서 보내주는 url 그대로 받아서 image를 보이고 수정 api를 보냄

* feat: 수정인 경우 수정 api 통신에 optionId를 함께 보내도록 수정

* refactor: 테스트 파일명 컨벤션에 따라 테스트 함수 이름으로 수정하기

* feat: 개행 5번 이상 연속되면 5번 개행으로 고정하도록 수정

* feat: 개행이 가능한 textarea의 value는 5회이상 연속개행을 검열하여 통신

- 코멘트, 선택지 내용 추가

* refactor: 마감시간 유효성 검사코드 중 변수를 선언하여 가독성 향상

* refactor: 글 작성/수정데이터 유효성 검사 type 체크 강화

* refactor: contentInputRefList 의 type중 null 제거

* test: 개행 검열 유틸함수 변경에 따른 테스트 코드 수정

* fix: (#541) 기존 작성한 선택지인 경우 id를 보내고, 아니면 보내지 않도록 수정

* test: 선택지 훅 수정에 따른 테스트 코드 수정

* fix: 선택지 훅에서 isServerId가 무조건 true인 오류 수정

* 로그인, 투표 통계, 회원정보 페이지 lazy import 적용 (#571)

* feat: (#556) lazy import 설정 및 트리쉐이킹 설정

* feat: (#556) 로그인, 투표 통계, 회원정보 입력 페이지 lazy import 적용

* feat: (#556) 번들 이름 매번 바뀌도록 변경 및 수정되었던 코드 복구

* feat: (#556) Suspense 코드 복구

---------

Co-authored-by: jero_kang <[email protected]>

* 게시글 작성 시 이미지 파일을 보낼 때 webp 로 압축하여 성능 개선 (#614)

* feat: (#555) browser-image-compression 설치 및 본문 이미지 훅에 적용

* feat: (#555) 선택지 옵션 사진을 webp로 변환하도록 구현

* 신고 도메인 리팩터링 (#540)

* refactor: (#513) Report 도메인 코드 가독성 리팩토링

* refactor: (#513) Report 도메인 관련 테스트 코드 리팩토링

* refactor: (#513) Report의 Controller, Service를 컨벤션에 맞춰 클래스명 개선

* refactor: (#513) 전략 패턴 클래스들에 대한 테스트 코드 추가

* refactor: (#513) Transactional 어노테이션 클래스에 붙는 것으로 위치 개선

* refactor: (#513) 닉네임 3회 신고 받은 후 해당 멤버에 대한 닉네임 신고 기록 삭제

* refactor: (#513) 각 신고 전략에 관한 상수는 각 클래스에 두는 것으로 개선

* refactor: (#513) 파라미터가 2개인 메서드의 선언문 개행 되돌리기

* refactor: (#513) deleteByReportTypeAndTargetId 메서드의 테스트 코드 추가

* refactor: (#513) 파라미터 2개인 메서드 선언부 개행 삭제

* 정사각형으로 나오는 이미지를 너비값 기준으로 보이게 변경 (#623)

* chore: (#620) package-lock.json 업데이트

* fix: (#621) 스토리북을 이용하려고 할 때 웹팩 chunk 관련 에러가 나는 것 수정

* style: (#620) 이미지의 가로, 세로 비율에 맞게 이미지를 보여주도록 수정

* style: (#620) 게시글 작성 시  선택지 이미지에 적용

* chore: (#620) 변경된 컴포넌트 이름이 적용되어 있지 않던 스토리북 파일 수정

* style: (#620) 게시글 작성시 본문 이미지에도 적용

* fix: (#627) 개발서버 오리진 url 수정 (#628)

* style: (#622) 선택지가 왼쪽으로 움직이는 버그 수정

* fix: (#629) https 로컬호스트 오리진 url 추가 (#630)

* feat: (#602) 본문 이미지를 붙여넣기 이벤트로 이미지를 첨부할 수 있도록 구현

* refactor: (#602) 선택지 작성에서 중복되는 업로드 이미지 코드를 리팩터링한 것을 적용

* refactor: (#602) 사용하지 않는 async 제거, 부자연스러운 함수명 변경

* 성능 최적화를 위한 리액트 쿼리 캐시정책 설정 및 불필요한 fetch하지 않기 (#626)

* chore: (#619) 리액트 쿼리 캐싱 확인을 위한 세팅

* feat: (#619) 마감된 게시물 상세정보 1시간 캐싱하기

* design: 에러 메세지 컴포넌트 어절 단위로 개행 및 상하 마진 수정

* feat: (#619) 통계 서버데이터 형식을 사용처가 아닌 불러오는 곳에서 형식 변경

* feat: (#619) 통계 페이지 리액트 쿼리로 수정 및 서스펜스, 에러바운더리 적용

* fix: 통계 api msw에서 실서버로 요청 전환

* fix: thead, tbody가 없어서 발생하는 에러 해결

* fix: (#627) 개발서버 오리진 url 수정 (#628)

* style: (#622) 선택지가 왼쪽으로 움직이는 버그 수정

* fix: (#629) https 로컬호스트 오리진 url 추가 (#630)

* feat: (#602) 본문 이미지를 붙여넣기 이벤트로 이미지를 첨부할 수 있도록 구현

* refactor: (#602) 선택지 작성에서 중복되는 업로드 이미지 코드를 리팩터링한 것을 적용

* refactor: (#602) 사용하지 않는 async 제거, 부자연스러운 함수명 변경

* refactor: (#619) 불분명한 변수명 수정

* feat: 열정유저 테이블 내 2개의 api 중 하나라도 로딩/에러 시 테이블 폴백처리

* refactor: (#619) 사용하지 않는 useFetch 삭제

* feat: (#619) 통계 페이지 에러바운더리/ 서스펜스 범위 수정

- 기존: 글 전체 통계에 서스펜스와 에러바운더리 적용, post api에는 에러바운더리만 적용
- 수정: 글 전체 통계와 post Api 한번에 감싸는 서스펜스와 에러바운더리 적용

* refactor: (#619) 서스펜스, 에러바운더리 감싸는 순서를 기존 코드와 통일

- 에러바운더리 안에 서스펜스, 그 안에 api 호출하는 컴포넌트

* feat: 리액트 쿼리 데브 툴 설정

---------

Co-authored-by: lookh <[email protected]>
Co-authored-by: Gilpop8663 <[email protected]>

* chore: (#631) https로 실행되도록 설정 및 스크립트 명령어 추가

* chore: (#631) pem키 gitignore에 추가
발급받은 기기에서만 유효한 pem키이기 때문에 git에 올릴 필요가 없음

* feat: (#563) 카테고리 즐겨찾기에 대한 낙관적 업데이트 구현 (#633)

* feat: (#541) imageUrl 앞 도메인 삭제

- 기존: 받은 imageUrl에 http-를 붙여야 image가 보여짐. 반대로 http-를 떼서 수정 api를 보내야 함
- 수정: 서버에서 보내주는 url 그대로 받아서 image를 보이고 수정 api를 보냄

* refactor: (#541) 불필요한 코드(이미지 업로드 버튼의 클릭이벤트) 삭제

* refactor: (#541) 사용하지 않는 유틸함수(이미지 url 수정) 삭제

* 정사각형으로 나오는 이미지를 너비값 기준으로 보이게 변경 (#623)

* chore: (#620) package-lock.json 업데이트

* fix: (#621) 스토리북을 이용하려고 할 때 웹팩 chunk 관련 에러가 나는 것 수정

* style: (#620) 이미지의 가로, 세로 비율에 맞게 이미지를 보여주도록 수정

* style: (#620) 게시글 작성 시  선택지 이미지에 적용

* chore: (#620) 변경된 컴포넌트 이름이 적용되어 있지 않던 스토리북 파일 수정

* style: (#620) 게시글 작성시 본문 이미지에도 적용

* [REFACTOR] 게시글 도메인 리팩터링 (#549)

* refactor: (#512) 게시글 댓글 도메인 리팩토링

* refactor: (#512) 테스트 엔티티 저장 유틸 클래스 구현

* refactor: (#512) 게시글 도메인 리팩토링

* refactor: (#512) 게시글 DTO 중복 제거 및 리팩토링

* refactor: (#512) 게시글 게스트 조회 기능에 대한 레포지토리 리팩토링

* refactor: (#512) 게스트 게시글 기능 리팩토링

* refactor: (#512) 게시글 조회 관련 레포지토리 리팩토링

* refactor: (#512) 게시글 조회 관련 애플리케이션 로직 리팩토링

* refactor: (#512) 게시글 조회 관련 API 리팩토링

* refactor: (#512) 사용하지 않는 클래스 제거

* refactor: (#512) 게시글 쿼리 기능을 위한 부가 클래스 구현

* refactor: (#512) 게시글 도메인 리팩토링

* refactor: (#512) 게시글 쿼리 관련 레포지토리 기능 구현

* refactor: (#512) 블라인드 게시글 조회 예외 처리

* refactor: (#512) 이미지 파일명 생성 기능 구현

* refactor: (#512) 이미지 저장 및 삭제 기능 구현

* refactor: (#512) 게시글 댓글 블라인드 예외 처리

* refactor: (#512) 게시글 작성, 수정, 삭제 로직 리팩토링

* refactor: (#512) 게시글 작성, 수정, 삭제 API 리팩토링

* chore: (#512) 코드 컨벤션 정리

* refactor: (#512) 게시글 요청, 응답 형식 수정

* refactor: (#512) 게시글 도메인 수정

* refactor: (#512) 요청, 응답 수정에 따른 변화 수정

* refactor: (#512) 게시글 수정 로직 개선

* refactor: (#512) 요청 파일 크기 제한 설정

* refactor: (#512) sequence가 필요한 메서드에서 sequence에 의존하도록 수정

* refactor: (#512) 코드 컨벤션에 맞게 name 속성 제거

* refactor: (#512) 게시글 옵션 예외 분리

* refactor: (#512) 임의의 url로 수정

* refactor: (#512) 람다식 컨벤션 수정

* refactor: (#512) enum 컨벤션 수정

* refactor: (#512) 변수명 수정

* refactor: (#512) 쿼리, 커맨드 트랜잭션 방식 명시

* refactor: (#512) early return 방식으로 수정

* refactor: (#512) 메서드 체이닝 방식으로 수정

* refactor: (#512) early return 방식으로 수정

* refactor: (#512) 게시글에 대한 신고 삭제 기능 구현

* refactor: (#512) 기존 게시글 옵션이 아닌 경우 예외 던지도록 수정

* refactor: (#512) 예외 타입 네이밍 수정

* refactor: (#512) 투표 수 int -> long 전환

* refactor: (#512) 게시글 옵션 ID 검증 로직 분리

* refactor: (#512) 충돌 해결하면서 터지는 테스트 수정

* refactor: (#512) 코드 컨벤션 수정

* refactor: (#512) hikari, JpaTransactionManager 로그 제거

* feat: (#512) tomcat 설정 환경변수 추가

* feat: (#512) 게시글 리팩토링

* design: (#541) 작성된 게시글 속 사진 가로 길이 80%으로 수정

---------

Co-authored-by: jero_kang <[email protected]>
Co-authored-by: 김영길/KIM YOUNG GIL <[email protected]>
Co-authored-by: Jun-Hyeok Sin <[email protected]>
Co-authored-by: lookh <[email protected]>
Co-authored-by: Gilpop8663 <[email protected]>
Co-authored-by: 최우창 <[email protected]>
@woo-chang woo-chang deleted the #512 branch September 19, 2023 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[REFACTOR] 게시글 도메인 리팩터링
4 participants