name: Build Test

on:
  push:
    branches: [main, develop]
  workflow_run:
    workflows: ["Deploy Development", "Deploy Production"]
    types: [completed]

jobs:
  pytest-backend:
    if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-latest
    steps:
      - name: Run backend pytest suite in deployed container
        run: |
          EVENT_NAME="${{ github.event_name }}"
          REF_NAME="${{ github.ref_name }}"
          RUN_WORKFLOW="${{ github.event.workflow_run.name }}"
          APP_DIR="/home/lars/docker/bodytrack"
          COMPOSE_FILE="docker-compose.yml"

          if [ "$EVENT_NAME" = "workflow_run" ]; then
            if [ "$RUN_WORKFLOW" = "Deploy Development" ]; then
              APP_DIR="/home/lars/docker/bodytrack-dev"
              COMPOSE_FILE="docker-compose.dev-env.yml"
            fi
          elif [ "$REF_NAME" = "develop" ]; then
            APP_DIR="/home/lars/docker/bodytrack-dev"
            COMPOSE_FILE="docker-compose.dev-env.yml"
          fi

          cd "$APP_DIR"
          docker compose -f "$COMPOSE_FILE" exec -T backend sh -lc "
            pip install -r /app/requirements-dev.txt &&
            cd /app &&
            python -m pytest tests -m 'not slow' -ra -vv --tb=short
          "

  lint-backend:
    if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-latest
    steps:
      - name: Check backend syntax on deployed app
        run: |
          EVENT_NAME="${{ github.event_name }}"
          REF_NAME="${{ github.ref_name }}"
          RUN_WORKFLOW="${{ github.event.workflow_run.name }}"
          APP_DIR="/home/lars/docker/bodytrack"

          if [ "$EVENT_NAME" = "workflow_run" ]; then
            if [ "$RUN_WORKFLOW" = "Deploy Development" ]; then
              APP_DIR="/home/lars/docker/bodytrack-dev"
            fi
          elif [ "$REF_NAME" = "develop" ]; then
            APP_DIR="/home/lars/docker/bodytrack-dev"
          fi

          python3 -m py_compile "$APP_DIR/backend/main.py"
          echo "✓ Backend syntax OK"

  build-frontend:
    if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-latest
    steps:
      - name: Build frontend on deployed app
        run: |
          EVENT_NAME="${{ github.event_name }}"
          REF_NAME="${{ github.ref_name }}"
          RUN_WORKFLOW="${{ github.event.workflow_run.name }}"
          APP_DIR="/home/lars/docker/bodytrack"

          if [ "$EVENT_NAME" = "workflow_run" ]; then
            if [ "$RUN_WORKFLOW" = "Deploy Development" ]; then
              APP_DIR="/home/lars/docker/bodytrack-dev"
            fi
          elif [ "$REF_NAME" = "develop" ]; then
            APP_DIR="/home/lars/docker/bodytrack-dev"
          fi

          cd "$APP_DIR/frontend"
          npm install
          npm run build
          echo "✓ Frontend build OK"
