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:
parent
369c268bc1
commit
95aff1cc0e
@ -108,39 +108,57 @@ fi
|
||||
if [ "$UPDATE_DB" = true ]; then
|
||||
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
|
||||
if [ -f "$IDS_DIR/.env" ]; then
|
||||
source "$IDS_DIR/.env"
|
||||
# Carica configurazione database
|
||||
if [ ! -f "$IDS_DIR/.env" ]; then
|
||||
echo -e "${RED}❌ File .env non trovato${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}⚠️ Applicazione schema da git al database${NC}"
|
||||
echo -e "${YELLOW} Database: ${PGDATABASE}${NC}"
|
||||
read -p "Confermi? (y/n) " -n 1 -r
|
||||
echo
|
||||
source "$IDS_DIR/.env"
|
||||
export PGPASSWORD="$PGPASSWORD"
|
||||
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
# Applica schema
|
||||
export PGPASSWORD="$PGPASSWORD"
|
||||
psql -h "${PGHOST:-127.0.0.1}" -p "${PGPORT:-5432}" -U "${PGUSER}" -d "${PGDATABASE}" < "$SCHEMA_FILE"
|
||||
# Trova tutti gli script SQL (escludi schema.sql che è solo snapshot)
|
||||
SQL_SCRIPTS=$(find "$SCHEMA_DIR" -maxdepth 1 -name "*.sql" ! -name "schema.sql" -type f | sort)
|
||||
|
||||
if [ -z "$SQL_SCRIPTS" ]; then
|
||||
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
|
||||
echo -e "${GREEN}✅ Schema database sincronizzato${NC}"
|
||||
echo -e "${GREEN}✅ $SCRIPT_NAME applicato con successo${NC}"
|
||||
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
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⏭️ Sincronizzazione schema saltata${NC}"
|
||||
fi
|
||||
done
|
||||
|
||||
echo -e "\n${GREEN}✅ Tutti gli script SQL applicati con successo${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ File .env non trovato${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}⏭️ Sincronizzazione database saltata${NC}"
|
||||
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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user