79 lines
2.8 KiB
Bash
79 lines
2.8 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
# scripts/lab/apply_all_migrations.sh
|
||
|
|
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
RED='\033[0;31m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
# Default DSN if not set
|
||
|
|
export VEZA_LAB_DSN="${VEZA_LAB_DSN:-postgres://veza:veza_password@localhost:5432/veza_lab?sslmode=disable}"
|
||
|
|
|
||
|
|
echo -e "${GREEN}🔄 orchestrating migrations for all services...${NC}"
|
||
|
|
echo -e "DSN: $VEZA_LAB_DSN"
|
||
|
|
|
||
|
|
# 1. veza-backend-api
|
||
|
|
echo -e "\n${YELLOW}>>> veza-backend-api : applying migrations...${NC}"
|
||
|
|
(
|
||
|
|
cd veza-backend-api || exit 1
|
||
|
|
export DATABASE_URL="$VEZA_LAB_DSN"
|
||
|
|
|
||
|
|
if [ -x scripts/apply_migrations_lab.sh ]; then
|
||
|
|
./scripts/apply_migrations_lab.sh
|
||
|
|
else
|
||
|
|
# Fallback to Go standard migration if script missing
|
||
|
|
echo "Using go run cmd/migrate_tool/main.go"
|
||
|
|
go run cmd/migrate_tool/main.go
|
||
|
|
fi
|
||
|
|
) || { echo -e "${RED}❌ veza-backend-api migrations failed${NC}"; exit 1; }
|
||
|
|
|
||
|
|
# 2. veza-stream-server
|
||
|
|
echo -e "\n${YELLOW}>>> veza-stream-server : applying migrations...${NC}"
|
||
|
|
(
|
||
|
|
cd veza-stream-server || exit 1
|
||
|
|
# Stream server needs access to core tables (tracks), so use standard VEZA_LAB_DSN
|
||
|
|
export DATABASE_URL="$VEZA_LAB_DSN"
|
||
|
|
|
||
|
|
# Try using sqlx directly first as it is more robust for orchestrators
|
||
|
|
if command -v sqlx &> /dev/null; then
|
||
|
|
echo "Using sqlx migrate run"
|
||
|
|
sqlx migrate run --database-url "$DATABASE_URL"
|
||
|
|
elif [ -x scripts/apply_migrations_lab.sh ]; then
|
||
|
|
echo "Using scripts/apply_migrations_lab.sh"
|
||
|
|
./scripts/apply_migrations_lab.sh
|
||
|
|
else
|
||
|
|
echo -e "${RED}❌ No migration mechanism found for stream-server (install sqlx-cli)${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
) || { echo -e "${RED}❌ veza-stream-server migrations failed${NC}"; exit 1; }
|
||
|
|
|
||
|
|
# 3. veza-chat-server
|
||
|
|
echo -e "\n${YELLOW}>>> veza-chat-server : applying migrations...${NC}"
|
||
|
|
(
|
||
|
|
cd veza-chat-server || exit 1
|
||
|
|
# Use veza_chat DB
|
||
|
|
export DATABASE_URL="${VEZA_LAB_DSN/veza_lab/veza_chat}"
|
||
|
|
echo "DB: $DATABASE_URL"
|
||
|
|
# Some services might use CHAT_DATABASE_URL
|
||
|
|
export CHAT_DATABASE_URL="$DATABASE_URL"
|
||
|
|
export VEZA_LAB_DSN="$DATABASE_URL" # Check if internal script uses this
|
||
|
|
|
||
|
|
if command -v sqlx &> /dev/null; then
|
||
|
|
echo "Using sqlx migrate run"
|
||
|
|
# Check if migrations dir exists
|
||
|
|
if [ -d "migrations" ]; then
|
||
|
|
sqlx migrate run --database-url "$DATABASE_URL"
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠️ No migrations directory found in veza-chat-server, skipping...${NC}"
|
||
|
|
fi
|
||
|
|
elif [ -x scripts/apply_migrations_lab.sh ]; then
|
||
|
|
./scripts/apply_migrations_lab.sh
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠️ No migration mechanism found for chat-server, skipping...${NC}"
|
||
|
|
fi
|
||
|
|
) || { echo -e "${RED}❌ veza-chat-server migrations failed${NC}"; exit 1; }
|
||
|
|
|
||
|
|
echo -e "\n${GREEN}✅ All migrations applied successfully!${NC}"
|