전체 보기
🍀

ddl-auto none일 때 db 수정, 튜토리얼 페이지 적용 시 백엔드가 할 일

작성일자
2023/05/29
태그
DIARY_DEVELOP
프로젝트
BeachCombine
책 종류
1 more property

ddl-auto none일 때 db 수정

실 서비스 중인 프로젝트는 데이터 베이스가 날라가면 안되기에 ddl-auto를 none으로 둔다.
토이 프로젝트에서도 ddl-auto 를 none으로 두는 걸 권장한다.
이때, 데이터베이스는 직접 SQL문을 날려 구성하고 수정해야 한다.
우리 프로젝트는 초기 설정할 때 가장 처음 한 번만 ddl-auto를 create으로 해서 테이블들을 생성했다. 이후, 데이터베이스에 컬럼을 추가한다던가 제약조건을 건다던가 하는 수정 사항이 생기면 ddl-auto가 none이기에 직접 SQL문을 날려 수정해줬다.
자주 사용한 SQl문 두 가지를 소개한다. 아래 두 개면 컬럼 수정할 것도 없이 컬럼 관련된 것들은 다 해결 가능하다.
# 컬럼 추가 alter table member add column tutorial_completed bit(1) default 0; # alter table 테이블명 add column 컬럼명 타입 default 디폴트값; # 컬럼 삭제 alter table member drop tutorial_completed; # alter table 테이블명 drop 컬럼명;
SQL
복사
참고로 스프링에서 boolean 타입은 sql에서 bit(1)으로 표시된다. 아래는 실제 도메인 코드다.
@Builder.Default private Boolean tutorialCompleted = false; // 튜토리얼 완료 여부
Java
복사

튜토리얼 페이지 적용 시 백엔드가 할 일

주어진 조건
사용자는 회원가입 후 사이트 최초 접속 시 튜토리얼이 뜬다.
최초 접속 이후엔 튜토리얼이 뜨지 않는다.
이를 구현하기 위해, 아래 세 가지 기능을 구현했다.
member 테이블에 튜토리얼 완료 여부 필드 추가. default는 false
튜토리얼 완료 API 구현. 튜토리얼 종료하면서 해당 API 호출 시, 완료했단 정보를 DB에 저장
로그인 시에, 튜토리얼 완료 여부를 알려주게 로그인 API response 수정
후기
중간에 사용자가 튜토리얼을 그만하는 기능은 넣지 않았기에 간단한 api를 구현하면 되었다.
처음에 프론트분의 의견을 반영해, 튜토리얼 완료 여부를 프론트측에서 기기 별로 저장할까 고민했다.
허나, 일반적으로 튜토리얼 페이지를 첫 로그인 시에만 뜨게 하는 걸 어떻게 구현 하는 지 찾아본 결과 멤버 테이블에 따로 튜토리얼 완료 여부 필드를 저장한단 걸 알게 되어 이를 프로젝트에 적용했다.