# Build and test the C# solution (server + tests). Targets repo root NeonSprawl.sln.
name: .NET

on:
  push:
    branches: [main]
    paths:
      - "NeonSprawl.sln"
      - "server/**"
      - ".github/workflows/dotnet.yml"
  pull_request:
    branches: [main]
    paths:
      - "NeonSprawl.sln"
      - "server/**"
      - ".github/workflows/dotnet.yml"

jobs:
  build:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:16-alpine
        env:
          POSTGRES_USER: neon_sprawl
          POSTGRES_PASSWORD: neon_sprawl_dev
          POSTGRES_DB: neon_sprawl
        ports:
          - 5432:5432
        options: >-
          --health-cmd="pg_isready -U neon_sprawl -d neon_sprawl"
          --health-interval=5s
          --health-timeout=5s
          --health-retries=5

    steps:
      - uses: actions/checkout@v4

      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 10.0.x

      - name: Restore
        run: dotnet restore NeonSprawl.sln

      - name: Build
        run: dotnet build NeonSprawl.sln --no-restore --configuration Release

      - name: Test
        env:
          ConnectionStrings__NeonSprawl: >-
            Host=localhost;Port=5432;Database=neon_sprawl;Username=neon_sprawl;Password=neon_sprawl_dev
        run: dotnet test NeonSprawl.sln --no-build --configuration Release --verbosity normal
