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リセットができるようになった。