#!/bin/bash # Setup database user and database for custom explorer backend set -e echo "=== Setting up Database for Custom Explorer Backend ===" echo "" # Check if running as root or with sudo if [ "$EUID" -ne 0 ]; then echo "This script needs sudo privileges to create database user" echo "Please run: sudo bash scripts/setup-database.sh" exit 1 fi DB_USER="explorer" DB_PASSWORD="L@ker\$2010" DB_NAME="explorer" echo "Creating database user: $DB_USER" echo "Creating database: $DB_NAME" echo "" # Create user echo "Creating user..." sudo -u postgres psql << EOF DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_user WHERE usename = '$DB_USER') THEN CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD'; RAISE NOTICE 'User $DB_USER created'; ELSE RAISE NOTICE 'User $DB_USER already exists'; END IF; END \$\$; EOF # Create database echo "Creating database..." sudo -u postgres psql << EOF SELECT 'CREATE DATABASE $DB_NAME OWNER $DB_USER' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DB_NAME')\gexec EOF # Grant privileges echo "Granting privileges..." sudo -u postgres psql -d "$DB_NAME" << EOF GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER; GRANT ALL ON SCHEMA public TO $DB_USER; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $DB_USER; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO $DB_USER; EOF echo "" echo "✅ Database setup complete!" echo "" echo "Testing connection..." export PGPASSWORD="$DB_PASSWORD" if psql -h localhost -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" > /dev/null 2>&1; then echo "✅ Connection test successful" else echo "❌ Connection test failed" echo "Please check PostgreSQL configuration" fi unset PGPASSWORD echo "" echo "You can now run: bash EXECUTE_DEPLOYMENT.sh"