# Debugging Standings Issues

## Issue: "No standings data available for this season"

### Root Cause

Standings are only created from **completed races** with results. If a league has:
- No completed races
- Or completed races but no results

Then no standings will be created, and the API will return an empty array.

### How Standings Are Created

1. **During seeding**: The `RacingStandingFactory.create()` method only creates standings for leagues that have completed races
2. **When races are completed**: Standings are recalculated when race results are imported

### Debugging Steps

1. **Check if the league has any races**:
   ```bash
   curl http://localhost:3000/api/leagues/{leagueId}/races
   ```

2. **Check if any races are completed**:
   - Look at the `status` field in the race data
   - Completed races have `status: "completed"`

3. **Check if completed races have results**:
   - Results are stored separately from races
   - Without results, standings cannot be calculated

4. **Check if standings exist**:
   ```bash
   curl http://localhost:3000/api/leagues/{leagueId}/standings
   ```
   - If this returns an empty array `[]`, no standings exist

### Solutions

#### Option 1: Add Completed Races with Results

1. Create completed races for the league
2. Add race results for those races
3. Standings will be automatically calculated

#### Option 2: Use the Recalculate Endpoint (if available)

If there's a standings recalculate endpoint, call it to generate standings from existing race results.

#### Option 3: Reseed the Database

If the league was created manually and you want to start fresh:

```bash
npm run docker:dev:reseed
```

This will:
1. Stop all containers
2. Remove the database volume
3. Start fresh with seed data
4. Create standings for leagues with completed races

### Related Issues

#### Schedule Empty

If the schedule is empty but races exist, it's likely because:
1. No seasons are configured for the league
2. The season's date window doesn't include the races

**Fix**: The `GetLeagueScheduleUseCase` now handles leagues without seasons by showing all races.

#### Standings Empty

If standings are empty but races exist, it's likely because:
1. No completed races exist
2. No results exist for completed races

**Fix**: Add completed races with results, or use the recalculate endpoint.

### Example: Creating Standings Manually

If you need to create standings for testing:

1. Create completed races with results
2. Call the standings endpoint - it will automatically calculate standings from the results

Or, if you have a recalculate endpoint:

```bash
curl -X POST http://localhost:3000/api/leagues/{leagueId}/standings/recalculate
```

### Prevention

To avoid this issue in the future:
1. Always create seasons when creating leagues
2. Add completed races with results
3. Use the `docker:dev:reseed` command to ensure a clean database state
