jobs:
  build:
    runs-on: ${{ matrix.platform }}
    steps:
    - name: Check out code into the Go module directory
      uses: actions/checkout@v4
    - name: Install Go
      if: success()
      uses: actions/setup-go@v4
      with:
        go-version: ${{ matrix.go-version }}
    - name: Run tests
      run: make test
    strategy:
      matrix:
        go-version:
        - "1.19"
        - "1.20"
        - "1.21"
        platform:
        - ubuntu-latest
        - macos-latest
        - windows-latest
        exclude:
          - go-version: "1.19"
            platform: windows-latest
  dbtest:
    runs-on: ubuntu-latest
    services:
      mysql:
        env:
          MYSQL_DATABASE: trdsql_test
          MYSQL_ROOT_PASSWORD: root
        image: mysql:8.0
        ports:
        - 3307:3306
      postgres:
        env:
          POSTGRES_DB: trdsql_test
          POSTGRES_INITDB_ARGS: --encoding=UTF-8 --locale=C
          POSTGRES_PASSWORD: postgres
          POSTGRES_USER: postgres
        image: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s
          --health-retries 5
        ports:
        - 5432:5432
    steps:
    - name: Check out code into the Go module directory
      uses: actions/checkout@v4
    - name: Install Go
      uses: actions/setup-go@v4
      if: success()
      with:
        go-version-file: go.mod
    - env:
        SESSION_MY_TEST_DSN: root:root@tcp(localhost:3307)/trdsql_test
        SESSION_PG_TEST_DSN: host=localhost user=postgres password=postgres dbname=trdsql_test
          sslmode=disable
      name: Run tests
      run: make test
    - name: Update coverage report
      uses: ncruces/go-coverage-report@main
      if: github.event_name == 'push'
      continue-on-error: true
name: Go
"on":
- push
