name: Backend check
on:
  push:
    paths:
        - "backend/**"
        - ".github/workflows/backend-check.yml"

jobs:
  check_oss:
    runs-on: ubicloud-standard-8
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache-workspaces: backend
          toolchain: 1.82.0
      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: backend
      - name: cargo check
        working-directory: ./backend
        timeout-minutes: 16
        run: SQLX_OFFLINE=true cargo check

  check_oss_full:
    runs-on: ubicloud-standard-8
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0


      - name: install xmlsec1
        run: |
            sudo apt-get update
            sudo apt-get install -y libxml2-dev libxmlsec1-dev 

      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache-workspaces: backend
          toolchain: 1.82.0
      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: backend
      - name: cargo check
        working-directory: ./backend
        timeout-minutes: 16
        run: |
          mkdir -p fake_frontend_build
          FRONTEND_BUILD_DIR=$(pwd)/fake_frontend_build SQLX_OFFLINE=true cargo check --all-features

  check_ee:
    runs-on: ubicloud-standard-8
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Read EE repo commit hash
        run: |
          echo "ee_repo_ref=$(cat ./backend/ee-repo-ref.txt)" >> "$GITHUB_ENV"

      - uses: actions/checkout@v4
        with:
          repository: windmill-labs/windmill-ee-private
          path: ./windmill-ee-private
          ref: ${{ env.ee_repo_ref }}
          token: ${{ secrets.WINDMILL_EE_PRIVATE_ACCESS }}
          fetch-depth: 0


      - name: Substitute EE code (EE logic is behind feature flag)
        run: |
          ./backend/substitute_ee_code.sh --copy --dir ./windmill-ee-private


      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache-workspaces: backend
          toolchain: 1.82.0
      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: backend
      - name: cargo check
        working-directory: ./backend
        timeout-minutes: 16
        run: SQLX_OFFLINE=true cargo check

  check_ee_full:
    runs-on: ubicloud-standard-8
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Read EE repo commit hash
        run: |
          echo "ee_repo_ref=$(cat ./backend/ee-repo-ref.txt)" >> "$GITHUB_ENV"

      - uses: actions/checkout@v4
        with:
          repository: windmill-labs/windmill-ee-private
          path: ./windmill-ee-private
          ref: ${{ env.ee_repo_ref }}
          token: ${{ secrets.WINDMILL_EE_PRIVATE_ACCESS }}
          fetch-depth: 0

      - name: install xmlsec1
        run: |
            sudo apt-get update
            sudo apt-get install -y libxml2-dev libxmlsec1-dev 

      - name: Substitute EE code (EE logic is behind feature flag)
        run: |
          ./backend/substitute_ee_code.sh --copy --dir ./windmill-ee-private

      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache-workspaces: backend
          toolchain: 1.82.0
      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: backend
      - name: cargo check
        timeout-minutes: 16
        working-directory: ./backend
        run: |
          mkdir -p fake_frontend_build
          FRONTEND_BUILD_DIR=$(pwd)/fake_frontend_build SQLX_OFFLINE=true cargo check --all-features

 