PlanetSacle, Prisma (1)

김종민·2022년 7월 27일
0

apple-market

목록 보기
10/37


들어가기
apple-market에서는 DB를
PlanetScale, Prisma 두개로 구성한다!!

https://www.prisma.io/
https://www.prisma.io/docs/getting-started/quickstart

  1. VSconde Extension 에서 Prisma 설치할것.(확장프로그램)

  2. npm i prisma -D // npm i @prisma/client

  3. npx prisma init(맨 처음 사용시)
    3-1. .env 파일과 prisma폴더가 생성됨.
    3-2. prisma폴더에는 schema.prisma 파일이 생성됨

  4. PlanetScale에서는 mysql을 사용해야 해서 schema.prisma 파일의
    datasource db{
    provider = 'mysql' 로 바꾸어 준다. default는 postgres

  5. model생성 예시!
    shcema.prisma

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider             = "mysql"
  url                  = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

model User {
  id        Int      @id @default(autoincrement())
  phone     Int?     @unique
  email     String?  @unique
  name      String
  avatar    String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

PlanetScale
https://planetscale.com/

  1. install
    https://github.com/planetscale/cli#installation

window
$scoop bucket add pscale https://github.com/planetscale/scoop-bucket.git

$scoop install pscale mysql

scoop 설치는 powershall에서 설치해야 함.
https://scoop.sh/

scoop설치가 이뤄지면 아래와 같이 나옴

pscale CLI가 정상적인 설치가 이뤄지면!

  1. pscale login을 해야함.
    $pscale auth login (planetscale.com에 로그인 되어있는 상태여야만 함)

브라우저가 열리면 로그인됨.

  1. $pscale region
    을 치면 아래와 같이 나옴. 어디지역 서버로 둘것인지. Tokyo choice(ap-northeast)
:\Users\kjm>pscale region list
  NAME (9)                            SLUG                 ENABLED
 ----------------------------------- -------------------- ---------
  AWS us-east-1 (Northern Virginia)   us-east              Yes
  AWS us-west-2 (Oregon)              us-west              Yes
  AWS eu-west-1 (Dublin)              eu-west              Yes
  AWS ap-south-1 (Mumbai)             ap-south             Yes
  AWS ap-southeast-1 (Singapore)      ap-southeast         Yes
  AWS ap-northeast-1 (Tokyo)          ap-northeast         Yes
  AWS eu-central-1 (Frankfurt)        eu-central           Yes
  AWS ap-southeast-2 (Sydney)         aws-ap-southeast-2   Yes
  AWS sa-east-1 (Sao Paulo)           aws-sa-east-1        Yes
  1. $pscale database create apple-market --region ap-northeast
    ->db생성 command

  2. planetscale.com에서 아래와 같이 확인됨
    apple-market이 생성된 것을 확인가능하다.

  1. cmd창에서 ($pscale connect apple-market)


위에서 나온 DB주소를

.env에 입력하면 연결됨.

DATABASE_URL="mysql://127.0.0.1:10205/apple-market"

참고로 이 연결을 코딩하는 동안 계속 유지시켜주어야 함.
cmd창을 닫으면, DB와 연결이 끊어짐.

  1. prisma.schema에서
    ****된 부분을 설정, comment에서 UserId 1 같이 관계를 설정해주기 위해서임.
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"] ********
}

datasource db {
  provider             = "mysql"
  url                  = env("DATABASE_URL")
  referentialIntegrity = "prisma"  ********
}
  1. $npx prisma db push
    prisma.schema의 model들이 planstScale DB(apple-market)으로 동기화됨.

db push를 한 이후에 Refresh schema를 클릭하면, 동기화 된 것을 확인가능

  1. prisma client // $npm i @prisma/client
    사용

libs/clients.ts

import { PrismaClient } from '@prisma/client'

export default new PrismaClient()

그리고 $npx prisma generate
node_module에서 prisma생성된것 확인 가능함.

  1. $npx prisma studio

본격적인 사용은 다음 POST에서 다뤄보도록 함.

profile
코딩하는초딩쌤

0개의 댓글