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:
@@ -0,0 +1,24 @@
|
|||||||
|
-- Rensar applikationsdata men behaller kategorier.
|
||||||
|
-- Uppdatera den har filen nar nya tabeller tillkommer i schema.prisma.
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
DELETE FROM `FlyerSelection`;
|
||||||
|
DELETE FROM `FlyerItem`;
|
||||||
|
DELETE FROM `FlyerSession`;
|
||||||
|
|
||||||
|
DELETE FROM `ShoppingListItem`;
|
||||||
|
DELETE FROM `ShoppingList`;
|
||||||
|
|
||||||
|
DELETE FROM `InventoryTransaction`;
|
||||||
|
DELETE FROM `InventoryItem`;
|
||||||
|
|
||||||
|
DELETE FROM `RecipeIngredient`;
|
||||||
|
DELETE FROM `Recipe`;
|
||||||
|
|
||||||
|
DELETE FROM `PantryItem`;
|
||||||
|
DELETE FROM `MealPlanItem`;
|
||||||
|
|
||||||
|
DELETE FROM `Product`;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
# ./deploy.sh --flutter – bygg bara flutter web-app
|
# ./deploy.sh --flutter – bygg bara flutter web-app
|
||||||
# ./deploy.sh --importer – bygg bara importer-microservice
|
# ./deploy.sh --importer – bygg bara importer-microservice
|
||||||
# ./deploy.sh --seed – kör full seed på databasen (opt-in)
|
# ./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 --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)
|
# ./deploy.sh --backend --seed – kombinera flaggor fritt (git pull körs alltid)
|
||||||
|
|
||||||
@@ -22,6 +24,8 @@ BUILD_BACKEND=false
|
|||||||
BUILD_FLUTTER=false
|
BUILD_FLUTTER=false
|
||||||
BUILD_IMPORTER=false
|
BUILD_IMPORTER=false
|
||||||
RUN_SEED=false
|
RUN_SEED=false
|
||||||
|
RUN_MIGRATE=false
|
||||||
|
RUN_CLEAN_DATABASE=false
|
||||||
PULL_IMAGES=false # --pull=false är standard (snabbt)
|
PULL_IMAGES=false # --pull=false är standard (snabbt)
|
||||||
BUILD_ALL=true # om inga specifika tjänster anges, bygg allt
|
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 ;;
|
--flutter) BUILD_FLUTTER=true; BUILD_ALL=false ;;
|
||||||
--importer) BUILD_IMPORTER=true; BUILD_ALL=false ;;
|
--importer) BUILD_IMPORTER=true; BUILD_ALL=false ;;
|
||||||
--seed) RUN_SEED=true ;;
|
--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 ;;
|
--pull-always) PULL_IMAGES=true ;;
|
||||||
--help|-h)
|
--help|-h)
|
||||||
sed -n '/^# Användning:/,/^[^#]/p' "$0" | grep '^#' | sed 's/^# \?//'
|
sed -n '/^# Användning:/,/^[^#]/p' "$0" | grep '^#' | sed 's/^# \?//'
|
||||||
@@ -81,6 +87,42 @@ fi
|
|||||||
echo "Startar tjänster..."
|
echo "Startar tjänster..."
|
||||||
$COMPOSE up -d
|
$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) ─────────────────────────────────────────────────────────────
|
# ── Seed (opt-in) ─────────────────────────────────────────────────────────────
|
||||||
if [ "$RUN_SEED" = true ]; then
|
if [ "$RUN_SEED" = true ]; then
|
||||||
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD .env | cut -d '=' -f2 | tr -d '"' | tr -d "'")
|
||||||
|
|||||||
Reference in New Issue
Block a user