31 lines
1.2 KiB
Bash
31 lines
1.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "🔄 Waiting for database to be ready..."
|
||
|
|
until PGPASSWORD=$DATABASE_PASSWORD psql -h "$DATABASE_HOST" -U "$DATABASE_USER" -d "$DATABASE_NAME" -c '\q' 2>/dev/null; do
|
||
|
|
echo "⏳ PostgreSQL is unavailable - sleeping"
|
||
|
|
sleep 2
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "✅ PostgreSQL is up - checking if database is initialized..."
|
||
|
|
|
||
|
|
# Check if users table exists (indicating database is already set up)
|
||
|
|
TABLE_EXISTS=$(PGPASSWORD=$DATABASE_PASSWORD psql -h "$DATABASE_HOST" -U "$DATABASE_USER" -d "$DATABASE_NAME" -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'users');" 2>/dev/null || echo "f")
|
||
|
|
|
||
|
|
if [ "$TABLE_EXISTS" = "t" ]; then
|
||
|
|
echo "✅ Database already initialized, skipping setup."
|
||
|
|
else
|
||
|
|
echo "📦 First time setup - creating tables and seeding data..."
|
||
|
|
|
||
|
|
# Run the SQL scripts directly
|
||
|
|
echo "Creating tables..."
|
||
|
|
PGPASSWORD=$DATABASE_PASSWORD psql -h "$DATABASE_HOST" -U "$DATABASE_USER" -d "$DATABASE_NAME" -f /app/scripts/create-all-tables.sql
|
||
|
|
|
||
|
|
echo "🌱 Seeding initial data..."
|
||
|
|
PGPASSWORD=$DATABASE_PASSWORD psql -h "$DATABASE_HOST" -U "$DATABASE_USER" -d "$DATABASE_NAME" -f /app/scripts/seed-initial-data.sql
|
||
|
|
|
||
|
|
echo "✅ Database initialized successfully!"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "✅ Database ready!"
|