yarn run db-resetでローカルDBをリセットできるようにする

Next.jsでPrismaを使って開発を進めているが、migration機能を使わずSQLからPrismaモデルを生成するようにしている。

そのため、ローカル環境では手軽にDBリセットができるようにしておきたい。

何度も同じコマンドを手動で実行するのが手間なので、railsのようにyarn run db-resetでDBリセットができるようにした。

↓のようにsqlディレクトリ以下にsqlを用意しておく。

.
├── package.json
├── sql
│   ├── development
│   │   ├── 01_table1_fixtures.sql
│   │   ├── 02_table2_fixtures.sql
│   │   └── reset.sh
│   └── init.sql

sql/development/reset.shは以下。

#!/bin/bash
cd `dirname $0`
mysql -h127.0.01 -uroot -ppass -e \
'DROP DATABASE IF EXISTS `db_name`;CREATE DATABASE `db_name` CHARACTER SET utf8mb4'

cat ../init.sql | mysql -uroot -ppass -h127.0.0.1 -P3306 db_name
cat ./*.sql | mysql -uroot -ppass -h127.0.0.1 -P3306 db_name

yarn run db-generate

実行権限を付与して、

chmod +x ./sql/development/reset.sh

package.jsonにdb-resetを追加。

  "scripts": {
    "db": "prisma studio --experimental",
    "db-generate": "prisma generate",
    "db-reset": "./sql/development/reset.sh",
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  }

これで手軽にローカル環境のDBリセットができるようになった。

参考