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/#498 Artist 엔티티 추가, 가수 검색 기능 구현 #502

Merged
merged 24 commits into from
Oct 19, 2023

Conversation

somsom13
Copy link
Collaborator

📝작업 내용

  • Artist 엔티티 추가
  • Song테이블, 엔티티
    • 기존의 String singer 필드 제거
    • Song - Artist ManyToOne 단방향 연관관계 설정 (eager)
  • Artist Synonym 엔티티, 테이블 추가
    • Synonym - Artist ManyToOne 단방향 연관관계 설정 (eager)
    • 가수 검색 시 DB 통신 비용을 줄이기 위해 Artist, Synonym을 캐싱하는 방법 사용. 노래 등록 기능이 현재 없기 때문에 어플리케이션이 실행될 때 최초 한 번 동기화 되도록 설정

💬리뷰 참고사항

DB 변경사항 운영서버: 반드시 코드가 배포되기 전에 DB를 먼저 변경해야 함

-- 1. Artist 테이블 생성 => Artist 엔티티를 생성한 후 스크립트 작성
create table if not exists artist
(
    id                bigint auto_increment,
    name              varchar(50)  not null,
    profile_image_url text         not null,
    created_at        timestamp(6) not null,
    primary key (id)
);

-- 2. artist 테이블에 중복 없이 모든 singer를 name으로 가지는 데이터를 삽입, 프로필 이미지 필요

-- 3. song 테이블에 artist_id 열 추가, NOT NULL로 들어가면 기본값 0으로 들어가는 것 확인
ALTER TABLE song ADD COLUMN artist_id INT NOT NULL;

-- 4. 기존의 song.singer == artist.name 조건에 맞는 song의 artist_id를 채워넣기 -> 해야 할 작업
UPDATE song SET artist_id = ( SELECT id FROM artist  WHERE artist.name = song.singer);

-- 5. song 테이블의 singer column을 삭제한다.
ALTER TABLE song DROP COLUMN singer;

-- 2 ~ 5의 작업을 voting_song 에도 적용한다.

-- 6. artist_synonym 테이블 생성 후 데이터 수정, 삽입
create table if not exists artist_synonym
(
    id        bigint auto_increment,
    artist_id bigint       not null,
    synonym   varchar(255) not null,
    primary key (id)
);

도와주세요 🆘

현재 DB에 있는 가수명과 동의어를 새롭게 추가해야 합니다.
그런데 스쿼드 인원이 줄어서 데이터를 수집하기 어려운 상황.. 여러분의 도움이 필요합니다. (간절)

#️⃣연관된 이슈

close #498

@somsom13 somsom13 added [ 🌙 BE ] 백엔드 크루들의 멋진 개발 이야기 하나둘셋 야! ✨ Feat 꼼꼼한 기능 구현 중요하죠 💿 Databas🦷 DB 는 생명이다 labels Oct 12, 2023
@somsom13 somsom13 self-assigned this Oct 12, 2023
@github-actions
Copy link

github-actions bot commented Oct 12, 2023

Unit Test Results

  96 files    96 suites   13s ⏱️
380 tests 380 ✔️ 0 💤 0
385 runs  385 ✔️ 0 💤 0

Results for commit da98088.

♻️ This comment has been updated with latest results.

Copy link
Collaborator

@Cyma-s Cyma-s left a comment

Choose a reason for hiding this comment

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

바론... 혼자 무슨 싸움을 해오신 겁니까...
2300 줄 보고 깜짝 놀랐네요 진짜
너무너무너무너무너무 고생 많았습니다 !! 중간 중간에 고쳐야 할 부분이 있는 것 같아 RC 남겼어요. 내일 같이 이야기해보죠!

수고 많았습니다 진짜로.... 바론은 신이다

Copy link
Collaborator

@Cyma-s Cyma-s left a comment

Choose a reason for hiding this comment

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

많이 반영되어서 좋아졌군요 !
바론의 뛰어난 설명 덕에 모두 납득했습니다 ^^
다만 아직 조금 궁금한 부분이 있긴 한데, 내일 이야기해보시죵 어프루브할게요!

Comment on lines 34 to 36
// id 로 song 찾아온느 쿼리 1개 -> 비즈니스 로직에서 조건 필터링 => 2번을 1번으로
// 100개 이하의 데이터는 비즈니스 로직에서 정렬하는 것을 추천한다.
// 조건이 확실하게 있는 경우는 쿼리에서 하는 것이 좋다.
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 부분은 반영된 부분인가요?!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

충격적인 사실 전해드립니다.. 저희 쿼리를 보면서 테코톡을 준비하다가 반영해보면 좋겠다! 라는 생각이 들어 작성해 둔 주석을 지우는걸 까먹었습니다 😂

@somsom13 somsom13 merged commit fced3bd into main Oct 19, 2023
4 checks passed
@somsom13 somsom13 deleted the feat/#498 branch October 19, 2023 14:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[ 🌙 BE ] 백엔드 크루들의 멋진 개발 이야기 하나둘셋 야! 💿 Databas🦷 DB 는 생명이다 ✨ Feat 꼼꼼한 기능 구현 중요하죠
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[FEAT] Artist 엔티티를 생성하고 Song과 Artist 연관관계를 설정한다.
2 participants