mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-18 13:09:40 +02:00
first implementation
This commit is contained in:
parent
98efa6f6e8
commit
74dc6892ab
61 changed files with 30899 additions and 4934 deletions
116
scripts/deploy/migrate-db.sh
Executable file
116
scripts/deploy/migrate-db.sh
Executable file
|
|
@ -0,0 +1,116 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Database migration script for Supabase projects
|
||||
# Usage: ./migrate-db.sh [project] [environment]
|
||||
# Example: ./migrate-db.sh chat staging
|
||||
# Example: ./migrate-db.sh mana-core-auth production
|
||||
|
||||
set -e
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
PROJECT=${1}
|
||||
ENVIRONMENT=${2:-"staging"}
|
||||
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Validate input
|
||||
if [ -z "$PROJECT" ]; then
|
||||
log_error "Project name is required"
|
||||
echo "Usage: ./migrate-db.sh [project] [environment]"
|
||||
echo "Available projects: chat, maerchenzauber, manadeck, memoro, picture, nutriphi, news, mana-core-auth"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "Running database migrations for ${PROJECT} (${ENVIRONMENT})..."
|
||||
|
||||
# Set Supabase environment variables based on project and environment
|
||||
case "$PROJECT" in
|
||||
"chat")
|
||||
if [ "$ENVIRONMENT" == "production" ]; then
|
||||
SUPABASE_URL=${CHAT_SUPABASE_URL}
|
||||
SUPABASE_SERVICE_KEY=${CHAT_SUPABASE_SERVICE_KEY}
|
||||
else
|
||||
SUPABASE_URL=${STAGING_CHAT_SUPABASE_URL}
|
||||
SUPABASE_SERVICE_KEY=${STAGING_CHAT_SUPABASE_SERVICE_KEY}
|
||||
fi
|
||||
MIGRATION_DIR="apps/chat/supabase/migrations"
|
||||
;;
|
||||
"maerchenzauber")
|
||||
if [ "$ENVIRONMENT" == "production" ]; then
|
||||
SUPABASE_URL=${MAERCHENZAUBER_SUPABASE_URL}
|
||||
SUPABASE_SERVICE_KEY=${MAERCHENZAUBER_SUPABASE_SERVICE_KEY}
|
||||
else
|
||||
SUPABASE_URL=${STAGING_MAERCHENZAUBER_SUPABASE_URL}
|
||||
SUPABASE_SERVICE_KEY=${STAGING_MAERCHENZAUBER_SUPABASE_SERVICE_KEY}
|
||||
fi
|
||||
MIGRATION_DIR="apps/maerchenzauber/supabase/migrations"
|
||||
;;
|
||||
"mana-core-auth")
|
||||
if [ "$ENVIRONMENT" == "production" ]; then
|
||||
DATABASE_URL=${PRODUCTION_AUTH_DATABASE_URL}
|
||||
else
|
||||
DATABASE_URL=${STAGING_AUTH_DATABASE_URL}
|
||||
fi
|
||||
MIGRATION_DIR="services/mana-core-auth/src/db/migrations"
|
||||
|
||||
# Use Drizzle for mana-core-auth
|
||||
log_info "Running Drizzle migrations for mana-core-auth..."
|
||||
cd services/mana-core-auth
|
||||
pnpm run db:migrate
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown project: $PROJECT"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check if migration directory exists
|
||||
if [ ! -d "$MIGRATION_DIR" ]; then
|
||||
log_warn "No migrations found for ${PROJECT}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check for Supabase CLI
|
||||
if ! command -v supabase &> /dev/null; then
|
||||
log_error "Supabase CLI is not installed"
|
||||
log_info "Install it with: npm install -g supabase"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Link to remote project
|
||||
log_info "Linking to Supabase project..."
|
||||
supabase link --project-ref $(echo $SUPABASE_URL | sed 's|https://||' | sed 's|.supabase.co||')
|
||||
|
||||
# Run migrations
|
||||
log_info "Applying migrations from ${MIGRATION_DIR}..."
|
||||
cd $MIGRATION_DIR
|
||||
|
||||
# List pending migrations
|
||||
log_info "Pending migrations:"
|
||||
ls -1 *.sql 2>/dev/null || log_info "No SQL migrations found"
|
||||
|
||||
# Apply migrations using Supabase CLI
|
||||
for migration in *.sql; do
|
||||
if [ -f "$migration" ]; then
|
||||
log_info "Applying migration: $migration"
|
||||
supabase db push
|
||||
fi
|
||||
done
|
||||
|
||||
log_info "Database migrations completed successfully! ✅"
|
||||
Loading…
Add table
Add a link
Reference in a new issue