#!/bin/bash
# AI Tender Copilot - Setup Script
# This script sets up the development environment for the project

set -e

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Configuration
DB_NAME="munafasaai"
DB_USER="munafasaai"
DB_PASS="munafasaai_password_2026"
DB_HOST="127.0.0.1"
DB_PORT="5433"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo -e "${GREEN}=== AI Tender Copilot Setup ===${NC}\n"

# Step 1: Check prerequisites
echo -e "${YELLOW}Step 1: Checking prerequisites...${NC}"

if ! command -v pnpm &> /dev/null; then
    echo -e "${RED}Error: pnpm is not installed${NC}"
    echo "Install pnpm: npm install -g pnpm"
    exit 1
fi
echo -e "${GREEN}✓ pnpm found${NC}"

if ! command -v node &> /dev/null; then
    echo -e "${RED}Error: Node.js is not installed${NC}"
    exit 1
fi
echo -e "${GREEN}✓ Node.js found $(node --version)${NC}"

# Step 2: Check PostgreSQL
echo -e "\n${YELLOW}Step 2: Checking PostgreSQL...${NC}"
if ! sudo -u postgres psql -p "$DB_PORT" -c '\q' 2>/dev/null; then
    echo -e "${RED}Error: Cannot connect to PostgreSQL on port $DB_PORT${NC}"
    exit 1
fi
echo -e "${GREEN}✓ PostgreSQL is running on port $DB_PORT${NC}"

# Step 3: Create database and user
echo -e "\n${YELLOW}Step 3: Setting up database...${NC}"

# Check if database exists
DB_EXISTS=$(sudo -u postgres psql -p "$DB_PORT" -tAc -c "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'" 2>/dev/null || echo "0")

if [ "$DB_EXISTS" = "1" ]; then
    echo -e "${GREEN}✓ Database '$DB_NAME' already exists${NC}"
else
    echo "Creating database user and database..."

    # Create user
    sudo -u postgres psql -p "$DB_PORT" -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" 2>/dev/null || echo "User may already exist"

    # Create database
    sudo -u postgres psql -p "$DB_PORT" -c "CREATE DATABASE $DB_NAME OWNER $DB_USER ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8';" 2>/dev/null

    # Grant privileges
    sudo -u postgres psql -p "$DB_PORT" -c "ALTER USER $DB_USER WITH SUPERUSER;" 2>/dev/null
    sudo -u postgres psql -p "$DB_PORT" -d "$DB_NAME" -c "GRANT ALL ON SCHEMA public TO $DB_USER;" 2>/dev/null

    echo -e "${GREEN}✓ Database '$DB_NAME' created${NC}"
fi

# Step 4: Create .env file
echo -e "\n${YELLOW}Step 4: Creating environment file...${NC}"

if [ -f "$PROJECT_DIR/.env" ]; then
    echo -e "${YELLOW}.env file already exists, skipping...${NC}"
else
    cat > "$PROJECT_DIR/.env" << EOF
# Database Configuration
DATABASE_URL=postgresql://$DB_USER:$DB_PASS@$DB_HOST:$DB_PORT/$DB_NAME

# Clerk Authentication (Get from: https://dashboard.clerk.com/)
CLERK_PUBLISHABLE_KEY=pk_test_PLACEHOLDER
CLERK_SECRET_KEY=sk_test_PLACEHOLDER

# OpenAI API Key (Get from: https://platform.openai.com/api-keys)
OPENAI_API_KEY=sk-PLACEHOLDER

# Stripe Configuration (Get from: https://dashboard.stripe.com/)
STRIPE_SECRET_KEY=sk_test_PLACEHOLDER
STRIPE_WEBHOOK_SECRET=whsec_PLACEHOLDER
STRIPE_PRICE_STARTER=price_PLACEHOLDER
STRIPE_PRICE_PROFESSIONAL=price_PLACEHOLDER
STRIPE_PRICE_ENTERPRISE=price_PLACEHOLDER

# Resend Email (Get from: https://resend.com/api-keys)
RESEND_API_KEY=re_PLACEHOLDER

# CORS Configuration (Optional: Add extra allowed origins)
ALLOWED_ORIGINS=

# Application
NODE_ENV=development
PORT=8080

# Google Cloud Storage (Optional - for file uploads)
GOOGLE_CLOUD_PROJECT=
GOOGLE_CLOUD_BUCKET=
GOOGLE_CLOUD_KEYFILE=
EOF
    echo -e "${GREEN}✓ .env file created${NC}"
fi

# Step 5: Install dependencies
echo -e "\n${YELLOW}Step 5: Installing dependencies...${NC}"
cd "$PROJECT_DIR"
pnpm install --ignore-scripts
echo -e "${GREEN}✓ Dependencies installed${NC}"

# Step 6: Push database schema
echo -e "\n${YELLOW}Step 6: Setting up database schema...${NC}"
export DATABASE_URL="postgresql://$DB_USER:$DB_PASS@$DB_HOST:$DB_PORT/$DB_NAME"
pnpm --filter @workspace/db run push
echo -e "${GREEN}✓ Database schema created${NC}"

# Step 7: Create uploads directory
echo -e "\n${YELLOW}Step 7: Creating uploads directory...${NC}"
mkdir -p "$PROJECT_DIR/artifacts/api-server/uploads"
echo -e "${GREEN}✓ Uploads directory created${NC}"

# Summary
echo -e "\n${GREEN}=== Setup Complete! ===${NC}\n"
echo "Database connection:"
echo "  Host: $DB_HOST:$DB_PORT"
echo "  Database: $DB_NAME"
echo "  User: $DB_USER"
echo ""
echo "Next steps:"
echo "  1. Edit .env file and add your API keys (Clerk, OpenAI, Stripe, Resend)"
echo "  2. Run the API server: pnpm --filter @workspace/api-server run dev"
echo "  3. Run the frontend: pnpm --filter @workspace/tender-copilot run dev"
echo ""
echo "For more information, see replit.md"
