Initial commit - Church Music Database
This commit is contained in:
71
legacy-site/backend/fix-database-schema.sh
Normal file
71
legacy-site/backend/fix-database-schema.sh
Normal file
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
# Database Schema Fix Script
|
||||
# Run with proper PostgreSQL credentials
|
||||
|
||||
export PGPASSWORD='MySecurePass123'
|
||||
PSQL="psql -h 192.168.10.130 -U songlyric_user -d church_songlyric"
|
||||
|
||||
echo "============================================================"
|
||||
echo "DATABASE SCHEMA FIX SCRIPT"
|
||||
echo "============================================================"
|
||||
|
||||
# Add missing indexes on songs table
|
||||
echo ""
|
||||
echo "📊 Adding indexes on songs table..."
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_song_title ON songs(title);" 2>&1 | grep -v "already exists" || echo " ✅ idx_song_title created"
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_song_artist ON songs(artist);" 2>&1 | grep -v "already exists" || echo " ✅ idx_song_artist created"
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_song_band ON songs(band);" 2>&1 | grep -v "already exists" || echo " ✅ idx_song_band created"
|
||||
|
||||
# Add missing indexes on plans table
|
||||
echo ""
|
||||
echo "📊 Adding indexes on plans table..."
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_plan_date ON plans(date);" 2>&1 | grep -v "already exists" || echo " ✅ idx_plan_date created"
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_plan_profile ON plans(profile_id);" 2>&1 | grep -v "already exists" || echo " ✅ idx_plan_profile created"
|
||||
|
||||
# Add missing index on profiles table
|
||||
echo ""
|
||||
echo "📊 Adding indexes on profiles table..."
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_profile_name ON profiles(name);" 2>&1 | grep -v "already exists" || echo " ✅ idx_profile_name created"
|
||||
|
||||
# Fix plans.date to NOT NULL
|
||||
echo ""
|
||||
echo "🔧 Fixing plans.date constraint..."
|
||||
$PSQL -c "UPDATE plans SET date = '2025-01-01' WHERE date IS NULL;" 2>&1
|
||||
$PSQL -c "ALTER TABLE plans ALTER COLUMN date SET NOT NULL;" 2>&1 && echo " ✅ plans.date is now NOT NULL"
|
||||
|
||||
# Fix profiles.name to NOT NULL
|
||||
echo ""
|
||||
echo "🔧 Fixing profiles.name constraint..."
|
||||
$PSQL -c "UPDATE profiles SET name = 'Unnamed' WHERE name IS NULL OR name = '';" 2>&1
|
||||
$PSQL -c "ALTER TABLE profiles ALTER COLUMN name SET NOT NULL;" 2>&1 && echo " ✅ profiles.name is now NOT NULL"
|
||||
|
||||
# Add unique constraint on plan_songs (if doesn't exist)
|
||||
echo ""
|
||||
echo "🔧 Adding unique constraint on plan_songs..."
|
||||
$PSQL -c "ALTER TABLE plan_songs ADD CONSTRAINT uq_plan_song UNIQUE (plan_id, song_id);" 2>&1 | grep -v "already exists" && echo " ✅ uq_plan_song constraint created" || echo " ✅ constraint already exists"
|
||||
|
||||
# Add order index on plan_songs
|
||||
echo ""
|
||||
echo "📊 Adding order index on plan_songs..."
|
||||
$PSQL -c "CREATE INDEX IF NOT EXISTS idx_plan_songs_order ON plan_songs(plan_id, order_index);" 2>&1 | grep -v "already exists" || echo " ✅ idx_plan_songs_order created"
|
||||
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo "✅ DATABASE SCHEMA FIX COMPLETE!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo "Summary of changes:"
|
||||
echo " • Added indexes on songs (title, artist, band)"
|
||||
echo " • Added indexes on plans (date, profile_id)"
|
||||
echo " • Added index on profiles (name)"
|
||||
echo " • Fixed plans.date to NOT NULL"
|
||||
echo " • Fixed profiles.name to NOT NULL"
|
||||
echo " • Added unique constraint on plan_songs"
|
||||
echo " • Added order index on plan_songs"
|
||||
echo ""
|
||||
|
||||
# Verify schema
|
||||
echo "Verifying changes..."
|
||||
$PSQL -c "\d+ songs" | head -20
|
||||
$PSQL -c "\d+ plans" | head -20
|
||||
$PSQL -c "\d+ plan_songs" | head -20
|
||||
Reference in New Issue
Block a user