3.4 KiB
3.4 KiB
Fix Verification for Team Logo Issue
Problem Summary
- Issue: Teams with stale
logoRefvalues (system-default/logo) persist across force reseeds - Root Cause:
clearExistingRacingData()didn't clearracing_teamstable - Impact: API returns
/media/default/logo.pnginstead of/media/teams/{id}/logo
Fix Applied
Updated adapters/bootstrap/SeedRacingData.ts clearExistingRacingData() method to:
- Clear team join requests - Before deleting teams
- Clear team memberships - Before deleting teams
- Clear teams - The critical fix (teams have stale logoRef)
- Clear related racing data - Results, standings, races, etc.
Key Changes
// Before (incomplete):
private async clearExistingRacingData(): Promise<void> {
// Only cleared drivers and leagues
// Missing: teams, team_memberships, team_join_requests
}
// After (complete):
private async clearExistingRacingData(): Promise<void> {
// Clear stats
await this.seedDeps.driverStatsRepository.clear();
await this.seedDeps.teamStatsRepository.clear();
// Clear race registrations
const races = await this.seedDeps.raceRepository.findAll();
for (const race of races) {
await this.seedDeps.raceRegistrationRepository.clearRaceRegistrations(race.id.toString());
}
// Clear team join requests
const teams = await this.seedDeps.teamRepository.findAll();
for (const team of teams) {
const joinRequests = await this.seedDeps.teamMembershipRepository.getJoinRequests(team.id.toString());
for (const request of joinRequests) {
await this.seedDeps.teamMembershipRepository.removeJoinRequest(request.id);
}
}
// Clear team memberships
for (const team of teams) {
const memberships = await this.seedDeps.teamMembershipRepository.getTeamMembers(team.id.toString());
for (const membership of memberships) {
await this.seedDeps.teamMembershipRepository.removeMembership(team.id.toString(), membership.driverId.toString());
}
}
// Clear teams (CRITICAL FIX)
for (const team of teams) {
await this.seedDeps.teamRepository.delete(team.id.toString());
}
// Clear other racing data...
// Results, standings, races, league memberships, etc.
}
Expected Behavior After Fix
Before Fix:
- Start dev with
GRIDPILOT_API_FORCE_RESEED=1 - Teams from previous seed remain with
logoRef: {"type":"system-default","variant":"logo"} GET /teams/allreturns"logoUrl": "/media/default/logo.png"
After Fix:
- Start dev with
GRIDPILOT_API_FORCE_RESEED=1 - All racing data cleared including teams
- New teams seeded with
logoRef: MediaReference.generated('team', teamId) GET /teams/allreturns"logoUrl": "/media/teams/{id}/logo"
Verification Steps
- Start with existing data: Run API with force reseed enabled
- Check database: Verify
racing_teamstable is cleared - Verify new data: Teams should have generated logoRef
- Test API:
/teams/allshould return correct logo URLs
Files Modified
adapters/bootstrap/SeedRacingData.ts- EnhancedclearExistingRacingData()method
Related Code
RacingTeamFactory.createTeams()- SetslogoRef: MediaReference.generated('team', teamId)AllTeamsPresenter.present()- DeriveslogoUrlfromlogoRefMediaController.debugResolve()- Validates media resolution