chore(deploy): add database maintenance and migration options
Added new deployment options to deploy.sh: - --migrate: Runs Prisma migration deploy command - --clean-database: Executes maintenance SQL to clean data while preserving categories Added new maintenance directory backend/prisma/maintenance/ containing: - clean-database.sql: SQL script for database cleaning operations Updated deployment script to: - Include new command-line flags in help text - Add conditional blocks for running migrations and database cleaning - Implement container readiness checks before running Prisma commands - Preserve existing seed functionality while adding new maintenance features
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
# ./deploy.sh --flutter – bygg bara flutter web-app
|
||||
# ./deploy.sh --importer – bygg bara importer-microservice
|
||||
# ./deploy.sh --seed – kör full seed på databasen (opt-in)
|
||||
# ./deploy.sh --migrate – kör Prisma-migrationer (opt-in)
|
||||
# ./deploy.sh --clean-database – kör underhålls-SQL som rensar data men behåller kategorier
|
||||
# ./deploy.sh --pull-always – kontrollera uppdateringar för basimages (flutter:3.41.9, node:24.15.0 etc)
|
||||
# ./deploy.sh --backend --seed – kombinera flaggor fritt (git pull körs alltid)
|
||||
|
||||
@@ -22,6 +24,8 @@ BUILD_BACKEND=false
|
||||
BUILD_FLUTTER=false
|
||||
BUILD_IMPORTER=false
|
||||
RUN_SEED=false
|
||||
RUN_MIGRATE=false
|
||||
RUN_CLEAN_DATABASE=false
|
||||
PULL_IMAGES=false # --pull=false är standard (snabbt)
|
||||
BUILD_ALL=true # om inga specifika tjänster anges, bygg allt
|
||||
|
||||
@@ -31,6 +35,8 @@ for arg in "$@"; do
|
||||
--flutter) BUILD_FLUTTER=true; BUILD_ALL=false ;;
|
||||
--importer) BUILD_IMPORTER=true; BUILD_ALL=false ;;
|
||||
--seed) RUN_SEED=true ;;
|
||||
--migrate) RUN_MIGRATE=true; BUILD_BACKEND=true; BUILD_ALL=false ;;
|
||||
--clean-database) RUN_CLEAN_DATABASE=true; BUILD_BACKEND=true; BUILD_ALL=false ;;
|
||||
--pull-always) PULL_IMAGES=true ;;
|
||||
--help|-h)
|
||||
sed -n '/^# Användning:/,/^[^#]/p' "$0" | grep '^#' | sed 's/^# \?//'
|
||||
@@ -81,6 +87,42 @@ fi
|
||||
echo "Startar tjänster..."
|
||||
$COMPOSE up -d
|
||||
|
||||
# ── Prisma migreringar och databasrensning (opt-in) ───────────────────────────
|
||||
if [ "$RUN_MIGRATE" = true ] || [ "$RUN_CLEAN_DATABASE" = true ]; then
|
||||
CLEAN_SQL_FILE="backend/prisma/maintenance/clean-database.sql"
|
||||
|
||||
echo "Väntar på att backend är redo för Prisma-kommandon..."
|
||||
for i in $(seq 1 30); do
|
||||
if docker exec recipe-api sh -lc "test -f /app/prisma/schema.prisma" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo " ...försök $i/30"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
if [ "$RUN_MIGRATE" = true ]; then
|
||||
echo "Kör Prisma-migrationer (deploy)..."
|
||||
docker exec recipe-api sh -lc "cd /app && npx prisma migrate deploy --schema prisma/schema.prisma"
|
||||
fi
|
||||
|
||||
if [ "$RUN_CLEAN_DATABASE" = true ]; then
|
||||
if [ ! -f "$CLEAN_SQL_FILE" ]; then
|
||||
echo "Fel: saknar $CLEAN_SQL_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
MARIADB_DATABASE=$(grep MARIADB_DATABASE .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
|
||||
echo "Kör databasrensning från $CLEAN_SQL_FILE ..."
|
||||
docker exec -i recipe-db mariadb -uroot -p"$MARIADB_ROOT_PASSWORD" "$MARIADB_DATABASE" < "$CLEAN_SQL_FILE"
|
||||
echo "Databasrensning klar (kategorier bevarade enligt SQL-filen)."
|
||||
fi
|
||||
|
||||
echo "Uppdaterar Prisma Client..."
|
||||
docker exec recipe-api sh -lc "cd /app && npx prisma generate --schema prisma/schema.prisma"
|
||||
fi
|
||||
|
||||
# ── Seed (opt-in) ─────────────────────────────────────────────────────────────
|
||||
if [ "$RUN_SEED" = true ]; then
|
||||
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||
|
||||
Reference in New Issue
Block a user