59 lines
1.8 KiB
Bash
59 lines
1.8 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "=== Monaco USA Portal - Migration Runner ==="
|
||
|
|
|
||
|
|
# Wait for database to be ready
|
||
|
|
echo "Waiting for database..."
|
||
|
|
retries=30
|
||
|
|
while [ $retries -gt 0 ]; do
|
||
|
|
if pg_isready -h "$PGHOST" -U "$PGUSER" > /dev/null 2>&1; then
|
||
|
|
echo "Database is ready."
|
||
|
|
break
|
||
|
|
fi
|
||
|
|
retries=$((retries - 1))
|
||
|
|
sleep 2
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ $retries -eq 0 ]; then
|
||
|
|
echo "ERROR: Database did not become ready in time"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Wait for storage-api to create its tables (it starts after db)
|
||
|
|
echo "Waiting for storage-api to create tables..."
|
||
|
|
storage_retries=30
|
||
|
|
while [ $storage_retries -gt 0 ]; do
|
||
|
|
has_table=$(psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -tAc \
|
||
|
|
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'storage' AND table_name = 'objects'" 2>/dev/null || echo "0")
|
||
|
|
if [ "$has_table" = "1" ]; then
|
||
|
|
echo "Storage tables found."
|
||
|
|
break
|
||
|
|
fi
|
||
|
|
storage_retries=$((storage_retries - 1))
|
||
|
|
sleep 2
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ $storage_retries -eq 0 ]; then
|
||
|
|
echo "WARNING: storage.objects table not found after 60s - storage policies will be skipped in post-deploy"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Detect fresh vs existing database
|
||
|
|
has_members=$(psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -tAc \
|
||
|
|
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'members'" 2>/dev/null || echo "0")
|
||
|
|
|
||
|
|
if [ "$has_members" = "0" ]; then
|
||
|
|
echo "=== Fresh database detected - running init.sql ==="
|
||
|
|
psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -f /sql/init.sql
|
||
|
|
echo "=== init.sql completed ==="
|
||
|
|
else
|
||
|
|
echo "=== Existing database detected - skipping init.sql ==="
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Always run post-deploy (idempotent)
|
||
|
|
echo "=== Running post-deploy.sql ==="
|
||
|
|
psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -f /sql/post-deploy.sql
|
||
|
|
echo "=== post-deploy.sql completed ==="
|
||
|
|
|
||
|
|
echo "=== Migration runner finished successfully ==="
|