From 03479cd39b2e21d176ac9d8a656ab991d44a43af Mon Sep 17 00:00:00 2001 From: joannechen1223 Date: Sat, 9 Mar 2024 22:18:46 -0500 Subject: [PATCH 1/2] chore: add down script for migration --- .../migrations/20240306064817_init/down.sql | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 apps/recnet-api/prisma/migrations/20240306064817_init/down.sql diff --git a/apps/recnet-api/prisma/migrations/20240306064817_init/down.sql b/apps/recnet-api/prisma/migrations/20240306064817_init/down.sql new file mode 100644 index 00000000..c5db8979 --- /dev/null +++ b/apps/recnet-api/prisma/migrations/20240306064817_init/down.sql @@ -0,0 +1,39 @@ +-- DropForeignKey +ALTER TABLE "FollowingRecord" DROP CONSTRAINT "FollowingRecord_userId_fkey"; + +-- DropForeignKey +ALTER TABLE "FollowingRecord" DROP CONSTRAINT "FollowingRecord_followerId_fkey"; + +-- DropForeignKey +ALTER TABLE "Recommendation" DROP CONSTRAINT "Recommendation_userId_fkey"; + +-- DropForeignKey +ALTER TABLE "Recommendation" DROP CONSTRAINT "Recommendation_articleId_fkey"; + +-- DropForeignKey +ALTER TABLE "InviteCode" DROP CONSTRAINT "InviteCode_ownerId_fkey"; + +-- DropForeignKey +ALTER TABLE "InviteCode" DROP CONSTRAINT "InviteCode_usedById_fkey"; + +-- DropTable +DROP TABLE "User"; + +-- DropTable +DROP TABLE "FollowingRecord"; + +-- DropTable +DROP TABLE "Recommendation"; + +-- DropTable +DROP TABLE "Article"; + +-- DropTable +DROP TABLE "InviteCode"; + +-- DropEnum +DROP TYPE "Provider"; + +-- DropEnum +DROP TYPE "Role"; + From 55e19b937cf26409eb09cd0d6870a0bcb0369c32 Mon Sep 17 00:00:00 2001 From: joannechen1223 Date: Sat, 9 Mar 2024 23:27:24 -0500 Subject: [PATCH 2/2] chore: create shell script to do migration --- apps/recnet-api/prisma/schema.prisma | 4 ++-- apps/recnet-api/project.json | 18 ++++++++++++++++ apps/recnet-api/scripts/dbMigrate.sh | 32 ++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 apps/recnet-api/scripts/dbMigrate.sh diff --git a/apps/recnet-api/prisma/schema.prisma b/apps/recnet-api/prisma/schema.prisma index acb76369..cedd0477 100644 --- a/apps/recnet-api/prisma/schema.prisma +++ b/apps/recnet-api/prisma/schema.prisma @@ -9,8 +9,8 @@ generator client { } datasource db { - provider = "postgresql" - url = env("PRISMA_DATABASE_URL") + provider = "postgresql" + url = env("PRISMA_DATABASE_URL") } // Define enum types diff --git a/apps/recnet-api/project.json b/apps/recnet-api/project.json index ef045d2f..cbbc2d1c 100644 --- a/apps/recnet-api/project.json +++ b/apps/recnet-api/project.json @@ -45,6 +45,24 @@ "forwardAllArgs": false } }, + "prisma:migrate": { + "executor": "nx:run-commands", + "options": { + "commands": ["sh apps/recnet-api/scripts/dbMigrate.sh"], + "cwd": ".", + "forwardAllArgs": true + } + }, + "prisma:deploy": { + "executor": "nx:run-commands", + "options": { + "commands": [ + "pnpx prisma migrate deploy --schema=apps/recnet-api/prisma/schema.prisma" + ], + "cwd": ".", + "forwardAllArgs": false + } + }, "deploy": { "executor": "nx:run-commands", "options": { diff --git a/apps/recnet-api/scripts/dbMigrate.sh b/apps/recnet-api/scripts/dbMigrate.sh new file mode 100644 index 00000000..9a73db6e --- /dev/null +++ b/apps/recnet-api/scripts/dbMigrate.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +PRISMA_SCHEMA="apps/recnet-api/prisma/schema.prisma" +PRISMA_MIGRATIONS_DIR="apps/recnet-api/prisma/migrations" + +MIGRATION_NAME="$1" + +perform_migration_up() { + pnpx prisma migrate dev --name $MIGRATION_NAME --schema="$PRISMA_SCHEMA" +} + +perform_migration_down() { + npx prisma migrate diff \ + --from-schema-datamodel $PRISMA_SCHEMA \ + --to-schema-datasource $PRISMA_SCHEMA \ + --script > down.sql +} + +move_down_sql_file() { + DIRECTORY=$(find $PRISMA_MIGRATIONS_DIR -type d -name "*$MIGRATION_NAME*" | tail -n 1) + mv down.sql $DIRECTORY/down.sql +} + +echo "Migrating database to $MIGRATION_NAME" +echo "Performing migration down" +perform_migration_down + +echo "Performing migration up" +perform_migration_up + +echo "Moving down.sql to migration directory" +move_down_sql_file