#!/bin/bash

# Diagrammers API Template Processor
# Usage: ./scripts/process-template.sh <project-name>

PROJECT_NAME=$1

if [ -z "$PROJECT_NAME" ]; then
    echo "❌ Project name is required"
    echo "Usage: ./scripts/process-template.sh <project-name>"
    exit 1
fi

# Convert project name to database-friendly format (lowercase, replace spaces/hyphens with underscores)
DB_NAME=$(echo $PROJECT_NAME | tr '[:upper:]' '[:lower:]' | sed 's/[^a-zA-Z0-9]/_/g' | sed 's/__*/_/g' | sed 's/^_//' | sed 's/_$//')

echo "🔧 Processing template for project: $PROJECT_NAME"
echo "🗄️ Database name will be: $DB_NAME"

# Process configuration files
echo "📝 Updating configuration files..."

# Update development config
if [ -f "src/config/development.ts" ]; then
    sed -i '' "s/mongodb:\/\/127\.0\.0\.1:27017\/tactic-development/mongodb:\/\/127.0.0.1:27017\/${DB_NAME}-development/g" src/config/development.ts
    echo "   ✅ Updated development.ts"
fi

# Update staging config
if [ -f "src/config/staging.ts" ]; then
    sed -i '' "s/sendifier-staging/${DB_NAME}-staging/g" src/config/staging.ts
    echo "   ✅ Updated staging.ts"
fi

# Update production config
if [ -f "src/config/production.ts" ]; then
    sed -i '' "s/sendifier-production/${DB_NAME}-production/g" src/config/production.ts
    echo "   ✅ Updated production.ts"
fi

# Update package.json
if [ -f "package.json" ]; then
    sed -i '' "s/\"name\": \"@diagramers\/api\"/\"name\": \"${PROJECT_NAME}\"/g" package.json
    sed -i '' "s/\"description\": \"Diagramers API - A comprehensive Node.js API template with TypeScript, Firebase Functions, and Socket.io\"/\"description\": \"${PROJECT_NAME} - API project\"/g" package.json
    echo "   ✅ Updated package.json"
fi

# Update README.md
if [ -f "README.md" ]; then
    sed -i '' "s/# @diagramers\/api/# ${PROJECT_NAME}/g" README.md
    sed -i '' "s/A comprehensive Node.js API template with TypeScript, Firebase Functions, and Socket.io./${PROJECT_NAME} - API project./g" README.md
    echo "   ✅ Updated README.md"
fi

# Create .env file template
echo "📄 Creating .env template..."
cat > ".env.example" << EOF
# Environment Configuration
NODE_ENV=development

# Server Configuration
PORT=4000
HOST=localhost

# Database Configuration
MONGODB_URI=mongodb://127.0.0.1:27017/${DB_NAME}-development

# Firebase Configuration
FIREBASE_API_KEY=your-api-key
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_STORAGE_BUCKET=your-project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your-sender-id
FIREBASE_APP_ID=your-app-id

# JWT Configuration
JWT_SECRET=your-jwt-secret-key

# Twilio Configuration (for SMS)
TWILIO_ACCOUNT_SID=your-account-sid
TWILIO_AUTH_TOKEN=your-auth-token

# Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password

# Internal API Configuration
INTERNAL_REQUEST_HEADER_VALUE=your-secret-header-value

# Optional Configuration
BASE_SITE_URL=http://localhost:3000
LOCAL_API_TUNNEL_URL=https://your-ngrok-url.ngrok-free.app
LOCAL_UI_TUNNEL_URL=https://your-ui-ngrok-url.ngrok-free.app
BACKUP_DATABASES_FOLDER_PATH=/path/to/backup/folder
EXTERNAL_HTTP_REQUEST_TIMEOUT=5000
EOF

echo "✅ Template processing completed!"
echo ""
echo "📋 Summary:"
echo "   Project Name: $PROJECT_NAME"
echo "   Database Name: $DB_NAME"
echo "   Development DB: ${DB_NAME}-development"
echo "   Staging DB: ${DB_NAME}-staging"
echo "   Production DB: ${DB_NAME}-production"
echo ""
echo "🚀 Next steps:"
echo "   1. Copy .env.example to .env and configure your environment variables"
echo "   2. Install dependencies: npm install"
echo "   3. Build the project: npm run build:dev"
echo "   4. Start the server: npm start" 