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

参考


Related #js

Firebase Auth Googleログイン時のリダイレクトドメインを変更する

CNAME追加とHostingの「カスタムドメインを追加」を行う

jsで配列からランダムにn件取得する

lodashのsampleSizeを使った

jsで連番の配列を作成する

Array.from(Array(n).keys())

VercelのPreview環境に固定のサブドメインを割り当てる

X-Robots-Tagは付与されないので注意