[DB] Prisma setup

Leejunyoung·2023년 4월 14일
0

DB

목록 보기
2/5
post-thumbnail

1. VSCode에 prisma extension을 설치

Syntax highlight 같은 기능이 있어 prisma 파일을 좀 더 보기 좋게 만들어 준다.
formatting, auto-completion(자동 완성) 기능이 있다.

2. prisma install

npm i prisma -D

터미널에서 -D(Developer Dependency)로 Prisma를 설치한다.

설치가 끝나면 Prisma를 불러와야 하는데, 불러오는 방법은

npx prisma 

항상 prisma를 불러올 땐 npx prisma로 불러와야 한다.

3. prisma init

npx prisma init

을 하게 되면 application 안에 prisma 폴더와 .env 파일이 생성된다.

주의
여기서 .env 파일을 .gitignore 파일에 추가하는 것을 잊지 말자.

4. Next steps:

1. .env 파일에 있는 DATABASE_URL을 설정해줘야한다.

➡ Prisma를 사용하려면 데이터베이스가 있어야 하고 Prisma는 번역기의 역할을 할 뿐이니, 데이터베이스가 필요하다.
.env 파일에 가 보면 postgreSQL DATABASE_URL이 있는데

postgreSQL 데이터베이스는 사용하지 않고, 컴퓨터 상에도 있지 않고 데이터베이스는 PlanetScale에 있을 것이기에 나중에 바꿔주어야 한다.

2. schema.prisma 파일에서 datasource의 provider를 설정해주기

➡ provider는 우리가 사용할 데이터베이스라고 생각하면 된다.
Prisma는 provider, postgreSQL, MySQL, SQLite, SQLServer, MongoDB를 지원한다.

prisma 폴더의 schema.prisma 파일에 "postgresql" 을 "mysql"로 바꿔주면 끝.

2-1. 간단한 데이터베이스 model 작성법

schema.prisma는 데이터베이스에 대한 모든 설명을 담은 파일이라 굉장히 중요하다.
변경점을 데이터베이스에 push 할 때, client를 만들 때 사용하기 때문에 prisma는 이 파일을 굉장히 자주 찾는다.

id의 타입은 정수형의 Int, Prisma에게 id가 ID라는 것을 알려주기 위한 @id(유니크 식별자), 기본값의 @default, 자동으로 증가하는 (1,2,3,4, 이런식으로) @autoincrement()

뭔가 필수적이지 않은 선택적인 옵션으로 만들고 싶다면 물음표를 붙인다.

phone의 타입은 정수형의 Int, 전화번호 아니면 email로 로그인을 하기 때문에 ?를 붙인다. 유저에게 전화번호는 유일해야 하므로 @unique

email의 타입은 String, 전화번호와 마찬가지로 둘 중 하나로 로그인을 하기 때문에 ?를 붙인다. 유저에게 email은 유일해야 하므로 @unique

name은 required기 때문에 ?를 붙이지 않았다.

avatar는 이미지 파일의 URL을 넣어야 하기 때문에 String 타입, 로그인 시 필수적인 옵션이 아니기에 ?

유저가 언제 생성됐는지, 마지막으로 수정된 날짜가 언제인지 알려주는 createdAt는 DateTime 타입, 기본적으로 유저가 생성될 때 그 시점의 날짜를 가져오는 now() 함수를 넣어준다.

유저가 업데이트 된 시점을 저장하는 updatedAt은 DateTime 타입, 유저가 업데이트 될 때마다 이 필드가 변할 것이라고 Prisma에게 알려줄 @updatedAt

❗ Tip prisma 익스텐션을 설치 했는데도 코드 정렬이 안될 경우

Ctrl + Shift + P에서 Open User Settings (json) 검색후 setting.json 파일에

"[prisma]": {
"editor.defaultFormatter": "Prisma.prisma"
}

를 추가하면 정렬이 되는 것을 확인할 수 있다.

근데도 되지 않는다면

"editor.formatOnSave": true

를 추가해보자.

profile
안녕하세요

0개의 댓글