name: Deploy to Production

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Install dependencies
        run: |
          npm install
          cd backend && npm install && cd ..
          cd frontend && npm install && cd ..

      - name: Run backend tests
        run: |
          cd backend
          npm test || echo "No tests configured"

      - name: Build frontend
        run: |
          cd frontend
          npm run build

      - name: Deploy to server
        env:
          SERVER_HOST: ${{ secrets.SERVER_HOST }}
          SERVER_USER: ${{ secrets.SERVER_USER }}
          SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        run: |
          # Setup SSH
          mkdir -p ~/.ssh
          echo "$SSH_KEY" > ~/.ssh/deploy_key
          chmod 600 ~/.ssh/deploy_key
          ssh-keyscan -H $SERVER_HOST >> ~/.ssh/known_hosts

          # Deploy
          ssh -i ~/.ssh/deploy_key $SERVER_USER@$SERVER_HOST << 'EOF'
            cd /var/www/aeroEcho
            git pull origin main
            npm run install:all
            cd frontend && npm run build && cd ..
            pm2 restart ecosystem.config.js
          EOF
