Skip to content

Prisma 설정

Jinho Kim edited this page Jun 19, 2023 · 2 revisions

Install

npm install prisma --save-dev

Set up

npx prisma init

Code

generator client {
  provider = "prisma-client-js"
}

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

# 스키마 작성 예시
model User {
  id    Int     @default(autoincrement()) @id
  email String  @unique
  name  String?
}

.env

MYSQL_ROOT_PASSWORD="password"
MYSQL_USER="root"
MYSQL_PASSWORD="password"
MYSQL_DATABASE="database"
DATABASE_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@localhost:3306/${MYSQL_DATABASE}"

docker-compose.yml

version: '3.8'
services:
  mariadb:
    image: mariadb:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD
      - MYSQL_USER
      - MYSQL_PASSWORD
      - MYSQL_DATABASE
    volumes:
      - mariadb-data:/var/lib/mysql
    ports:
      - '3306:3306'

volumes:
  mariadb-data:

Migrate

npx prisma migrate dev --name init

Install and generate Prisma Client

npm install @prisma/client

prisma.service.ts

import { INestApplication, Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
  async onModuleInit() {
    await this.$connect();
  }

  async enableShutdownHooks(app: INestApplication) {
    this.$on('beforeExit', async () => {
      await app.close();
    });
  }
}
Clone this wiki locally