name: Security

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    # Run CodeQL scan every Monday at 14:20 UTC
    - cron: "20 14 * * 1"

jobs:
  codeql-analysis:
    name: CodeQL Security Scan
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

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

      - name: Setup Go
        uses: actions/setup-go@v6
        with:
          go-version: "1.25"
          cache: true

      - name: Verify Go installation
        run: |
          echo "Go version: $(go version)"
          echo "Go path: $(which go)"
          echo "GOROOT: $GOROOT"

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: go
          # CodeQL will use the Go version installed by setup-go above
          # Optionally use security-extended for more comprehensive scanning
          # queries: security-extended

      - name: Install dependencies
        run: go mod download

      - name: Build for analysis
        run: go build -v ./...

      - name: Perform CodeQL Analysis
        id: codeql-analysis
        uses: github/codeql-action/analyze@v3
        with:
          category: "backend-security"
        continue-on-error: true

      - name: Check CodeQL Results
        if: steps.codeql-analysis.outcome == 'failure'
        run: |
          echo "⚠️ CodeQL analysis completed with warnings/errors"
          echo "This may be due to:"
          echo "  1. Code scanning not enabled in repository settings"
          echo "  2. Security alerts that need review"
          echo ""
          echo "To enable code scanning:"
          echo "  Go to Settings > Security > Code security and analysis"
          echo "  Click 'Set up' under Code scanning"
          echo ""
          echo "Analysis results are still available in the workflow artifacts."
