name: Test

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main, develop ]

jobs:
  test:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:15
        env:
          POSTGRES_PASSWORD: postgres
          POSTGRES_USER: postgres
          POSTGRES_DB: bun_orm
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432

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

    - name: Setup Bun
      uses: oven-sh/setup-bun@v1
      with:
        bun-version: latest

    - name: Install dependencies
      run: bun install

    - name: Wait for PostgreSQL
      run: |
        echo "Waiting for PostgreSQL to be ready..."
        while ! pg_isready -h localhost -p 5432 -U postgres; do
          sleep 1
        done
        echo "PostgreSQL is ready!"

    - name: Run tests for postgres
      run: bun test
      env:
        DB_DRIVER: postgres
        DB_HOST: localhost
        DB_PORT: 5432
        DB_NAME: bun_orm
        DB_USER: postgres
        DB_PASSWORD: postgres

    - name: Run tests for sqlite
      run: bun run test:coverage
      env:
        DB_DRIVER: sqlite