Update script to apply multiple database migration scripts

Modified update_from_git.sh to iterate and apply all .sql files in the database-schema directory, excluding schema.sql, ensuring database synchronization with applied changes.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 890ee964-4158-4242-aa34-9b7e172a3fcb
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/449cf7c4-c97a-45ae-8234-e5c5b8d6a84f/7a657272-55ba-4a79-9a2e-f1ed9bc7a528/MkBJZ0L
This commit is contained in:
marco370 2025-11-17 17:44:11 +00:00
parent 369c268bc1
commit 95aff1cc0e

View File

@ -108,39 +108,57 @@ fi
if [ "$UPDATE_DB" = true ]; then if [ "$UPDATE_DB" = true ]; then
echo -e "\n${BLUE}🗄️ Sincronizzazione schema database...${NC}" echo -e "\n${BLUE}🗄️ Sincronizzazione schema database...${NC}"
SCHEMA_FILE="$IDS_DIR/database-schema/schema.sql" SCHEMA_DIR="$IDS_DIR/database-schema"
if [ -f "$SCHEMA_FILE" ]; then # Carica configurazione database
# Carica configurazione database if [ ! -f "$IDS_DIR/.env" ]; then
if [ -f "$IDS_DIR/.env" ]; then echo -e "${RED}❌ File .env non trovato${NC}"
source "$IDS_DIR/.env" exit 1
fi
echo -e "${YELLOW}⚠️ Applicazione schema da git al database${NC}"
echo -e "${YELLOW} Database: ${PGDATABASE}${NC}" source "$IDS_DIR/.env"
read -p "Confermi? (y/n) " -n 1 -r export PGPASSWORD="$PGPASSWORD"
echo
# Trova tutti gli script SQL (escludi schema.sql che è solo snapshot)
if [[ $REPLY =~ ^[Yy]$ ]]; then SQL_SCRIPTS=$(find "$SCHEMA_DIR" -maxdepth 1 -name "*.sql" ! -name "schema.sql" -type f | sort)
# Applica schema
export PGPASSWORD="$PGPASSWORD" if [ -z "$SQL_SCRIPTS" ]; then
psql -h "${PGHOST:-127.0.0.1}" -p "${PGPORT:-5432}" -U "${PGUSER}" -d "${PGDATABASE}" < "$SCHEMA_FILE" echo -e "${YELLOW}⚠️ Nessuno script SQL trovato in database-schema/${NC}"
echo -e "${YELLOW} (schema.sql è solo uno snapshot, non viene applicato)${NC}"
else
echo -e "${YELLOW}⚠️ APPLICAZIONE MODIFICHE AL DATABASE${NC}"
echo -e "${YELLOW} Database: ${PGDATABASE}@${PGHOST}${NC}"
echo -e "${YELLOW} Script da applicare:${NC}"
# Mostra lista script
for script in $SQL_SCRIPTS; do
echo -e "${YELLOW}$(basename $script)${NC}"
done
read -p "Confermi applicazione modifiche? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
# Applica tutti gli script in ordine
for script in $SQL_SCRIPTS; do
SCRIPT_NAME=$(basename "$script")
echo -e "\n${BLUE}📄 Applicando $SCRIPT_NAME...${NC}"
psql -h "${PGHOST:-127.0.0.1}" -p "${PGPORT:-5432}" -U "${PGUSER}" -d "${PGDATABASE}" -f "$script"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ Schema database sincronizzato${NC}" echo -e "${GREEN}$SCRIPT_NAME applicato con successo${NC}"
else else
echo -e "${RED}❌ Errore sincronizzazione schema${NC}" echo -e "${RED}❌ Errore applicando $SCRIPT_NAME${NC}"
echo -e "${YELLOW}⚠️ Gli script successivi NON saranno applicati${NC}"
exit 1 exit 1
fi fi
else done
echo -e "${YELLOW}⏭️ Sincronizzazione schema saltata${NC}"
fi echo -e "\n${GREEN}✅ Tutti gli script SQL applicati con successo${NC}"
else else
echo -e "${RED}❌ File .env non trovato${NC}" echo -e "${YELLOW}⏭️ Sincronizzazione database saltata${NC}"
exit 1
fi fi
else
echo -e "${YELLOW}⚠️ File schema.sql non trovato in database-schema/${NC}"
echo -e "${YELLOW} Esegui ./deployment/export_db_schema.sh sul server di riferimento${NC}"
fi fi
fi fi