이번 프로젝트를 진행하면서 기존 2주동안 사용했던 ORM인 Sequelize를 사용하지 않고, DB로 MySQL만 사용해서 프로젝트를 진행해보자고 의견이 모였다.
지금까지 DB를 구축하는데 테이블과 컬럼을 Sequelize의 마이그레이션에 의존하여 DB를 구축했었는데 SQL만 이용해서 DB를 구축하려니 처음부터 막막했다.
특히나 어떤 명령어를 사용해서 DB를 생성하지? 코드를 적어서 만드는 건가? 완전히 1도 모르는 상황에서 만들어야 하기에 특히나 어려웠다.
어찌저찌 구글링을 해서 테이블을 만드는 법을 찾았다.
일단 가장 생소했던 점은, 지금까지 프로젝트를 실행하면서 JS파일이 아닌 다른 파일을 만들어본 적이 없었는데, 이번에 SQL파일을 따로 만들어서
실행해야하는 점이 었다. 내가 맡은 회원정보관련 테이블은 아래와 같이 설계했다.
USE TestDB;
CREATE TABLE IF NOT EXISTS Users (
userId INT NOT NULL AUTO_INCREMENT,
email VARCHAR(319) UNIQUE NOT NULL,
nickname VARCHAR(20) UNIQUE NOT NULL,
password CHAR(60) NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(userId),
)
SQL문을 보면서 느낀 것은 아무래도 생소했던 javascript에서 사용하는 언어와 달리 좀 더 영어와 같게 해석하기 쉽고 직관적이라는 부분이었다.
SQL문은 지금까지 ORM을 사용하던 부분만을 SQL문을 사용하면 되던 것이라 프로젝트를 완성하는 데 있어서는 큰 무리는 없었다. 물론 내가 담당한 부분이 여러부분에 Join연산이나 as별칭사용 등이 없었기에 쉬웠던 부분도 있다.
register = async ({ email, nickname, encryptedPassword }) => {
await dataBase.query(
'INSERT INTO Users(email, nickname, password) VALUES(?, ?, ?)',
[email, nickname, encryptedPassword],
);
};
위와같이 DB에 연결하는 repository단의 함수에만 SQL문을 이용해서 유저정보를 생성하고 그 외 수정 삭제 조회 하는 것으로 작성해 나갈 수 있었다.