Compare commits

..

2 Commits

Author SHA1 Message Date
Marco Lanzara
c099eb6472 🚀 Release v1.0.11
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.11_20251017_093145.sql.gz
- Data: 2025-10-17 09:32:00
2025-10-17 09:32:00 +00:00
marco370
354e981384 Ensure database import happens after schema updates
Move the database import step to occur after database schema migrations are applied.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/e5565357-90e1-419f-b9a8-6ee8394636df/IgrJ2ut
2025-10-17 09:31:25 +00:00
4 changed files with 56 additions and 40 deletions

View File

@ -34,43 +34,8 @@ if [ -f .env ]; then
source .env source .env
fi fi
# =================== IMPORT DATABASE DA GIT (se richiesto) =================== # =================== BACKUP DATABASE NORMALE (se non import) ===================
if [ "$IMPORT_DB" = true ]; then if [ "$IMPORT_DB" != true ]; then
echo "📦 Import database da backup Git..."
# Trova l'ultimo backup nella directory git
LATEST_GIT_BACKUP=$(ls -t $GIT_BACKUP_DIR/*.sql.gz 2>/dev/null | head -1)
if [ -f "$LATEST_GIT_BACKUP" ]; then
echo "📥 Trovato backup: $LATEST_GIT_BACKUP"
# Controlla che le variabili siano definite
if [ -z "$PGDATABASE" ] || [ -z "$PGUSER" ]; then
echo "❌ Variabili DB non trovate nel .env, impossibile importare"
exit 1
fi
# Chiedi conferma (opzionale - rimuovi se vuoi import automatico)
echo "⚠️ ATTENZIONE: Questo sovrascriverà il database corrente!"
echo "Backup da importare: $(basename $LATEST_GIT_BACKUP)"
read -p "Continuare? (s/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Ss]$ ]]; then
# Decomprimi e importa
echo "🔄 Importazione database in corso..."
gunzip -c "$LATEST_GIT_BACKUP" | PGPASSWORD=$PGPASSWORD psql -h ${PGHOST:-localhost} -U $PGUSER --dbname=$PGDATABASE
echo "✅ Database importato con successo da Git!"
else
echo "❌ Import annullato dall'utente"
exit 1
fi
else
echo "❌ Nessun backup trovato in $GIT_BACKUP_DIR"
exit 1
fi
else
# =================== BACKUP DATABASE NORMALE ===================
echo "💾 Backup database pre-deployment..." echo "💾 Backup database pre-deployment..."
mkdir -p $BACKUP_DIR mkdir -p $BACKUP_DIR
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql" BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"
@ -108,9 +73,54 @@ export NODE_ENV=production
npm run build npm run build
# Database migrations (serve Drizzle che è devDependency) # Database migrations (serve Drizzle che è devDependency)
echo "🗄️ Verifica database schema..." # IMPORTANTE: Le migrazioni devono essere eseguite PRIMA dell'import dei dati
echo "🗄️ Aggiornamento schema database..."
npm run db:push || echo "⚠️ Schema push skipped (database già aggiornato)" npm run db:push || echo "⚠️ Schema push skipped (database già aggiornato)"
# =================== IMPORT DATABASE DA GIT (dopo le migrazioni) ===================
if [ "$IMPORT_DB" = true ]; then
echo "📦 Import dati da backup Git..."
# Trova l'ultimo backup nella directory git
LATEST_GIT_BACKUP=$(ls -t $GIT_BACKUP_DIR/*.sql.gz 2>/dev/null | head -1)
if [ -f "$LATEST_GIT_BACKUP" ]; then
echo "📥 Trovato backup: $LATEST_GIT_BACKUP"
# Controlla che le variabili siano definite
if [ -z "$PGDATABASE" ] || [ -z "$PGUSER" ]; then
echo "❌ Variabili DB non trovate nel .env, impossibile importare"
exit 1
fi
# Chiedi conferma
echo "⚠️ ATTENZIONE: Questo sovrascriverà i dati correnti del database!"
echo "Lo schema è già stato aggiornato con le migrazioni."
echo "Backup da importare: $(basename $LATEST_GIT_BACKUP)"
read -p "Continuare? (s/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Ss]$ ]]; then
# NOTA: Il backup contiene --clean e ricreerà le tabelle
# Questo va bene perché contiene anche lo schema della versione corrente
echo "🔄 Importazione database completo (schema + dati)..."
gunzip -c "$LATEST_GIT_BACKUP" | PGPASSWORD=$PGPASSWORD psql -h ${PGHOST:-localhost} -U $PGUSER --dbname=$PGDATABASE
# Ri-esegui le migrazioni per sincronizzare eventuali differenze
echo "🔄 Sincronizzazione schema dopo import..."
npm run db:push || echo "⚠️ Schema già sincronizzato"
echo "✅ Database importato con successo da Git!"
else
echo "❌ Import annullato dall'utente"
exit 1
fi
else
echo "❌ Nessun backup trovato in $GIT_BACKUP_DIR"
exit 1
fi
fi
# NOTA: NON facciamo npm prune perché Vite serve a runtime per il middleware # NOTA: NON facciamo npm prune perché Vite serve a runtime per il middleware
# Il server Express usa Vite per servire il frontend anche in produzione # Il server Express usa Vite per servire il frontend anche in produzione

View File

@ -1,7 +1,13 @@
{ {
"version": "1.0.10", "version": "1.0.11",
"lastUpdate": "2025-10-17T09:27:06.616Z", "lastUpdate": "2025-10-17T09:32:00.721Z",
"changelog": [ "changelog": [
{
"version": "1.0.11",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.11"
},
{ {
"version": "1.0.10", "version": "1.0.10",
"date": "2025-10-17", "date": "2025-10-17",