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

Next.jsのPreview Mode時はAnalyticsを無効化する

cookieの__next_preview_dataキーで判定

Alexaに気温と二酸化炭素濃度を教えてもらう

「Alexa、気温」でセンサー情報を教えてくれるようになった

jsでクリップボードにコピーするボタンを実装する

Clipboard.writeText()を使う

Cloud FunctionsでFirebase Authenticationの認証情報を取得する

functions.https.onCallを使用している場合はcontextパラメータを受け取ることができる

AWS SESの受信メールを暗号化してs3に保存しLambdaで読み込む

jsの場合、複合処理を独自実装する必要がある

RaspberryPi ZeroにNode.jsの最新版をインストールする

vercel/install-nodeを使うと手軽にインストールできた