- Updated branding from "SolaceScanScout" to "Solace" across various files including deployment scripts, API responses, and documentation. - Changed default base URL for Playwright tests and updated security headers to reflect the new branding. - Enhanced README and API documentation to include new authentication endpoints and product access details. This refactor aligns the project branding and improves clarity in the API documentation.
143 lines
4.3 KiB
Bash
143 lines
4.3 KiB
Bash
#!/bin/bash
|
|
# Complete deployment execution script
|
|
# Run this to complete all deployment steps
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo " SolaceScan Deployment"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Configuration
|
|
DB_PASSWORD='L@ker$2010'
|
|
DB_HOST='localhost'
|
|
DB_USER='explorer'
|
|
DB_NAME='explorer'
|
|
RPC_URL='http://192.168.11.250:8545'
|
|
CHAIN_ID=138
|
|
PORT=8080
|
|
|
|
# Step 1: Test database connection
|
|
echo "[1/6] Testing database connection..."
|
|
export PGPASSWORD="$DB_PASSWORD"
|
|
if psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" > /dev/null 2>&1; then
|
|
echo " ✅ Database connected"
|
|
else
|
|
echo " ❌ Database connection failed"
|
|
echo ""
|
|
echo " Troubleshooting:"
|
|
echo " 1. Check PostgreSQL is running: systemctl status postgresql"
|
|
echo " 2. Setup database: sudo bash scripts/setup-database.sh"
|
|
echo " 3. Or manually create user/database (see DATABASE_SETUP_NEEDED.md)"
|
|
echo ""
|
|
echo " Quick fix: sudo bash scripts/setup-database.sh"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 2: Check existing tables
|
|
echo "[2/6] Checking for existing tables..."
|
|
TABLE_COUNT=$(psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public' AND table_name IN ('wallet_nonces', 'operator_roles', 'addresses', 'token_transfers');" -t 2>/dev/null | tr -d ' ')
|
|
echo " Found $TABLE_COUNT/4 track schema tables"
|
|
|
|
# Step 3: Run migration if needed
|
|
if [ "$TABLE_COUNT" -lt "4" ]; then
|
|
echo "[3/6] Running database migration..."
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
MIGRATION_FILE="$SCRIPT_DIR/backend/database/migrations/0010_track_schema.up.sql"
|
|
if psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -f "$MIGRATION_FILE" > /dev/null 2>&1; then
|
|
echo " ✅ Migration completed"
|
|
else
|
|
echo " ⚠️ Migration may have partially completed (some tables may already exist)"
|
|
fi
|
|
else
|
|
echo "[3/6] Migration already complete (tables exist)"
|
|
fi
|
|
|
|
# Step 4: Stop existing server
|
|
echo "[4/6] Stopping existing server..."
|
|
pkill -f api-server 2>/dev/null || true
|
|
sleep 2
|
|
echo " ✅ Server stopped"
|
|
|
|
# Step 5: Start server
|
|
echo "[5/6] Starting API server..."
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR/backend"
|
|
|
|
export DB_PASSWORD
|
|
export JWT_SECRET="deployment-secret-$(date +%s)"
|
|
export RPC_URL
|
|
export CHAIN_ID
|
|
export PORT
|
|
export DB_HOST
|
|
export DB_USER
|
|
export DB_NAME
|
|
|
|
mkdir -p logs
|
|
nohup ./bin/api-server > logs/api-server.log 2>&1 &
|
|
SERVER_PID=$!
|
|
echo $SERVER_PID > logs/api-server.pid
|
|
|
|
# Wait for server to start
|
|
echo " Waiting for server to start..."
|
|
for i in {1..10}; do
|
|
if curl -s http://localhost:8080/health > /dev/null 2>&1; then
|
|
echo " ✅ Server started (PID: $SERVER_PID)"
|
|
break
|
|
fi
|
|
if [ $i -eq 10 ]; then
|
|
echo " ❌ Server failed to start"
|
|
echo " Check logs: tail -20 logs/api-server.log"
|
|
exit 1
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# Step 6: Test endpoints
|
|
echo "[6/6] Testing endpoints..."
|
|
echo -n " Health endpoint... "
|
|
if curl -s http://localhost:8080/health | grep -q "healthy\|degraded"; then
|
|
echo "✅"
|
|
else
|
|
echo "⚠️"
|
|
fi
|
|
|
|
echo -n " Feature flags... "
|
|
if curl -s http://localhost:8080/api/v1/features | grep -q "track"; then
|
|
echo "✅"
|
|
else
|
|
echo "⚠️"
|
|
fi
|
|
|
|
echo -n " Track 1 blocks... "
|
|
HTTP_CODE=$(curl -s -w "%{http_code}" -o /dev/null "http://localhost:8080/api/v1/track1/blocks/latest?limit=1")
|
|
if [ "$HTTP_CODE" = "200" ]; then
|
|
echo "✅"
|
|
else
|
|
echo "⚠️ (HTTP $HTTP_CODE)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " ✅ Deployment Complete!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Server Information:"
|
|
echo " PID: $SERVER_PID"
|
|
echo " Port: $PORT"
|
|
echo " Logs: $SCRIPT_DIR/backend/logs/api-server.log"
|
|
echo ""
|
|
echo "Test Commands:"
|
|
echo " curl http://localhost:8080/health"
|
|
echo " curl http://localhost:8080/api/v1/features"
|
|
echo " curl http://localhost:8080/api/v1/track1/blocks/latest?limit=5"
|
|
echo ""
|
|
echo "Next Steps:"
|
|
echo " 1. Test authentication: curl -X POST http://localhost:8080/api/v1/auth/nonce -H 'Content-Type: application/json' -d '{\"address\":\"0xYourAddress\"}'"
|
|
echo " 2. Approve users: bash scripts/approve-user.sh <address> <track_level>"
|
|
echo " 3. Monitor: tail -f backend/logs/api-server.log"
|
|
echo ""
|
|
|
|
unset PGPASSWORD
|