name: "GQL generation and linting"

# Validate gqlgen works
# Validate there are no uncommitted changes after running gqlgen
# Lint the graphql schema

on:
  push:
    branches:
      - main
  pull_request:
    branches: [main]
  release:
    types:
      - published

permissions: read-all

jobs:
  gqlgen:
    name: Check GQL generation
    runs-on: ubuntu-latest-4-cores
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          cache: false
          go-version: 1.22.x
      - name: Install dependencies
        run: |
          cd $GITHUB_WORKSPACE
          go mod download
      - name: Run gqlgen
        run: |
            make gqlgen
      - name: Verify uncommitted files
        run: |
            make verify-gql-committed
  gqllint:
    name: Check GQL schema follows best practices
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        run: |
          cd $GITHUB_WORKSPACE
          npm install graphql-schema-linter graphql
      - name: Lint the graphql schema
        run: |
          npm exec graphql-schema-linter pkg/extensions/search/*.graphql
