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

[BE] refactor: Answer 추상화 2단계: 기존 레거시 코드 제거 #784

Merged
merged 7 commits into from
Oct 7, 2024

Conversation

donghoony
Copy link
Contributor

@donghoony donghoony commented Oct 7, 2024


더 이상 기존 테이블 네이밍을 사용하지 않도록 주의하세요. DB 테이블 이름 변경 + 어플리케이션 변경이 동시에 일어나기 힘듭니다. 새로운 테이블 이름을 앞으로 사용해야 합니다.

🚀 어떤 기능을 구현했나요 ?

  • 다 왔습니다, Answer 추상화를 DB에 적용했고 어플리케이션단에서 새로운 DB를 바라보도록 수정합니다.
  • 해당 부분이 완료되면 Prod에서 기존 테이블을 drop해도 됩니다.

🔥 어떻게 해결했나요 ?

  • 아래와 같은 SQL을 날렸습니다. 혹시나 해서 개발서버에 돌리는 동안 왔다갔다 해봤는데 이상 없었어요! 트랜잭션도 걸어 두었고요.
START TRANSACTION;
-- 기존 테이블에서 새로운 테이블로 ID 포함 이동 (FK 없음)
INSERT INTO new_review (id, created_at, review_group_id, template_id)
SELECT id, created_at, review_group_id, template_id FROM review WHERE id < 1500000;

-- 10만을 기준으로 text, checkbox 나누어보자.
INSERT INTO answer (id, question_id, review_id)
SELECT id, question_id, review_id FROM checkbox_answer WHERE id < 1500000;

INSERT INTO answer (id, question_id, review_id)
SELECT (id + 100000) as id, question_id, review_id FROM text_answer WHERE id < 1500000;

INSERT INTO new_checkbox_answer (id)
SELECT id FROM checkbox_answer WHERE id < 1500000;

INSERT INTO new_checkbox_answer_selected_option (id, checkbox_answer_id, selected_option_id)
SELECT id, checkbox_answer_id, selected_option_id FROM checkbox_answer_selected_option WHERE id < 1500000;

INSERT INTO new_text_answer(id, content)
SELECT (id + 100000) AS id, content FROM text_answer WHERE id < 1500000;

COMMIT;

📝 어떤 부분에 집중해서 리뷰해야 할까요?

  • 양이 조금 많지만 이전 +1500과 비슷하게 -1400은 좀 낫지 않을까 하여... 매번 고생하셔서 죄송스럽군요 🙇🏻
  • 테스트 적당하게 삭제되었는지, 이름 잘 옮겨졌는지, 패키지 잘 되었는지 확인해주세요 👍🏻

Copy link

github-actions bot commented Oct 7, 2024

Test Results

112 tests   - 23   112 ✅  - 23   4s ⏱️ ±0s
 44 suites  -  5     0 💤 ± 0 
 44 files    -  5     0 ❌ ± 0 

Results for commit 0c9889a. ± Comparison against base commit b8dd2db.

This pull request removes 41 and adds 18 tests. Note that renamed tests count towards both.
reviewme.review.domain.ReviewTest ‑ 리뷰에_등록된_모든_선택형_답변의_옵션들을_반환환다()
reviewme.review.domain.ReviewTest ‑ 리뷰에_특정_질문에_대한_답변이_있는지_여부를_반환한다()
reviewme.review.domain.abstraction.NewCheckboxAnswerTest ‑ 답변이_없는_경우_예외를_발생한다()
reviewme.review.domain.abstraction.NewReviewTest ‑ 리뷰에_등록된_답변의_모든_질문들을_반환한다()
reviewme.review.domain.abstraction.NewReviewTest ‑ 리뷰에_등록된_타입에_따라_답변을_반환한다()
reviewme.review.domain.abstraction.NewReviewTest ‑ 리뷰에_특정_질문에_대한_답변이_있는지_여부를_반환한다()
reviewme.review.domain.abstraction.NewTextAnswerTest ‑ 답변이_없는_경우_예외를_발생한다()
reviewme.review.service.abstraction.mapper.AnswerMapperFactoryTest ‑ 지원하는_타입에_따른_매퍼를_가져온다()
reviewme.review.service.abstraction.mapper.AnswerMapperFactoryTest ‑ 지원하지_않는_타입에_대한_매퍼_요청_시_예외가_발생한다(CapturedOutput)
reviewme.review.service.abstraction.mapper.NewCheckboxAnswerMapperTest ‑ 체크박스_답변_요청에_텍스트가_포함되어_있으면_예외를_발생시킨다()
…
reviewme.review.domain.abstraction.CheckboxAnswerTest ‑ 답변이_없는_경우_예외를_발생한다()
reviewme.review.domain.abstraction.ReviewTest ‑ 리뷰에_등록된_답변의_모든_질문들을_반환한다()
reviewme.review.domain.abstraction.ReviewTest ‑ 리뷰에_등록된_타입에_따라_답변을_반환한다()
reviewme.review.domain.abstraction.ReviewTest ‑ 리뷰에_특정_질문에_대한_답변이_있는지_여부를_반환한다()
reviewme.review.domain.abstraction.TextAnswerTest ‑ 답변이_없는_경우_예외를_발생한다()
reviewme.review.service.mapper.AnswerMapperFactoryTest ‑ 지원하는_타입에_따른_매퍼를_가져온다()
reviewme.review.service.mapper.AnswerMapperFactoryTest ‑ 지원하지_않는_타입에_대한_매퍼_요청_시_예외가_발생한다(CapturedOutput)
reviewme.review.service.mapper.CheckboxAnswerMapperTest ‑ 체크박스_답변_요청에_텍스트가_포함되어_있으면_예외를_발생시킨다()
reviewme.review.service.mapper.CheckboxAnswerMapperTest ‑ 체크박스_답변을_요청으로부터_매핑한다()
reviewme.review.service.mapper.TextAnswerMapperTest ‑ 텍스트_답변_요청에_옵션이_포함되어_있으면_예외를_발생시킨다()
…

@donghoony donghoony changed the title [BE] 마이그레이션 2단계: 기존 레거시 코드 제거 [BE] refactor: Answer 추상화 2단계: 기존 레거시 코드 제거 Oct 7, 2024
@donghoony donghoony self-assigned this Oct 7, 2024
Copy link
Contributor

@skylar1220 skylar1220 left a comment

Choose a reason for hiding this comment

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

길고 길었던 마이그레이션이 끝났네요
아루 정말 수고 많았습니다
이제 우리가 할 것은 기도밖에 남지 않았어요
image

Copy link
Contributor

@Kimprodp Kimprodp left a comment

Choose a reason for hiding this comment

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

우어어 고생했슴다 아루

Copy link
Contributor

@nayonsoso nayonsoso left a comment

Choose a reason for hiding this comment

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

어푸어푸 🤿🤿🤿

image

@donghoony donghoony merged commit 69aad91 into develop Oct 7, 2024
6 checks passed
@donghoony donghoony deleted the be/refactor/migration-2 branch October 7, 2024 13:40
nayonsoso pushed a commit that referenced this pull request Oct 8, 2024
* refactor: 기존 레거시 코드 살제 및 테스트 돌아가게 수정

* refactor: CheckboxAnswer new 제거

* refactor: CheckboxAnswerSelectedOption new 제거

* refactor: Review new 제거

* refactor: TextAnswer new 제거

* refactor: Review domain repository new 제거

* refactor: Mapper, validator new 제거
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[BE] 답변을 추상화하고, 질문 타입에 따른 검증을 한 번에 적용한다.
4 participants