概要
laravelのマイグレーションやシーダーが結構使いやすいイメージがあったのでそれに合わせて作ってみた。(ファクトリっぽいものも作っても良かったかも。)
マイグレーションファイルだけ自動出力されたものをそのまま使うわけにはいかず、手を加える必要がある。Prismaは性質上それまでの定義スキーマをすべて一つのファイルに出力してしまうはずなので。(間違えていたらすみません。)
package.jsonのscript部分の内容
package.json
"scripts": {
"build": "remix vite:build",
"deploy": "npm run build && wrangler pages deploy",
"dev": "remix vite:dev",
"lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .",
"start": "wrangler pages dev ./build/client",
"typecheck": "tsc",
"typegen": "wrangler types",
"preview": "npm run build && wrangler pages deploy --branch preview",
"local-seed": "./execute_seeds.sh --local",
"local-migrate": "npx wrangler d1 migrations apply DB名 --local",
"local-migrate-fresh": "npx wrangler d1 execute DB名 --local --file ./seeds/drop_tables.sql",
"local-migrate-reset": "npm run local-migrate-fresh && npm run local-migrate",
"local-migrate-reset-and-seed": "npm run local-migrate-reset && npm run local-seed",
"preview-seed": "./execute_seeds.sh --preview",
"preview-migrate": "npx wrangler d1 migrations apply DB名 --preview --remote",
"preview-migrate-fresh": "npx wrangler d1 execute DB名 --preview --remote --file ./seeds/drop_tables.sql",
"preview-migrate-reset": "npm run preview-migrate-fresh && npm run preview-migrate",
"preview-migrate-reset-and-seed": "npm run preview-migrate-reset && npm run preview-seed",
"remote-seed": "./execute_seeds.sh --remote",
"remote-migrate": "npx wrangler d1 migrations apply DB名 --remote",
"remote-migrate-fresh": "npx wrangler d1 execute DB名 --remote --file ./seeds/drop_tables.sql",
"remote-migrate-reset": "npm run remote-migrate-fresh && npm run remote-migrate",
"remote-migrate-reset-and-seed": "npm run remote-migrate-reset && npm run remote-seed"
},
drop_tables.sqlの内容
./seeds/drop_tables.sql
-- DropTable
-- マイグレーション管理テーブルリセット
DELETE FROM d1_migrations;
-- NOTE: テーブルを追加したらこちらにも忘れず追記
DROP TABLE IF EXISTS hoges;
DROP TABLE IF EXISTS fugas;
DROP TABLE IF EXISTS piyos;
execute_seeds.shの内容
./execute_seeds.sh
#!/bin/bash
# SQLファイルのリスト
sql_files=(
# NOTE: seedファイルを追加したらこちらにも追加
"./seeds/hoges_seed.sql"
"./seeds/fugas_seed.sql"
"./seeds/piyos_seed.sql"
)
# 各SQLファイルを実行
for file in "${sql_files[@]}"; do
if [ "$1" == "--preview" ]; then
npx wrangler d1 execute job_listings --preview --remote --file "$file"
else
npx wrangler d1 execute job_listings $1 --file "$file"
fi
done
hoges_seed.sqlの内容
./seeds/hoges_seed.sql
-- InsertTable
INSERT INTO "hoges" ("name", "key") VALUES ("hogeのname1", "hoge-one");
INSERT INTO "hoges" ("name", "key") VALUES ("hogeのname2", "hoge-two");
INSERT INTO "hoges" ("name", "key") VALUES ("hogeのname3", "hoge-three");
INSERT INTO "hoges" ("name", "key") VALUES ("hogeのname4", "hoge-four");