HASH 6f6a8bacc7b0
DATE 2025-12-24
SUBJECT ookstats: fix season scoped player search index
FILES 1 CHANGED
HASH 6f6a8bacc7b0
DATE 2025-12-24
SUBJECT ookstats: fix season scoped player
search index
FILES 1 CHANGED
┌─ nix/pkgs/ookstats/src/internal/generator/search.go ───────────────────────┐
│ diff --git a/nix/pkgs/ookstats/src/internal/generator/search.go b/nix/pkgs/ookstat │
│ s/src/internal/generator/search.go │
│ index 355ce08..07d370f 100644 │
│ --- a/nix/pkgs/ookstats/src/internal/generator/search.go │
│ +++ b/nix/pkgs/ookstats/src/internal/generator/search.go │
│ @@ -33,10 +33,15 @@ func GenerateSearchIndex(db *sql.DB, out string, shardSize int │
│ ) error { │
│ SELECT p.id, p.name, r.region, r.slug, r.name, │
│ COALESCE(pp.class_name, ''), pp.global_ranking, COALESCE(pp.global │
│ _ranking_bracket,'') │
│ FROM players p │
│ - JOIN player_profiles pp ON p.id = pp.player_id │
│ + JOIN ( │
│ + SELECT player_id, MAX(season_id) as max_season_id │
│ + FROM player_profiles │
│ + WHERE has_complete_coverage = 1 │
│ + GROUP BY player_id │
│ + ) latest ON p.id = latest.player_id │
│ + JOIN player_profiles pp ON pp.player_id = latest.player_id │
│ + AND pp.season_id = latest.max_season_id │
│ JOIN realms r ON p.realm_id = r.id │
│ - WHERE pp.has_complete_coverage = 1 │
│ - AND pp.season_id = (SELECT MAX(season_number) FROM seasons) │
│ ORDER BY pp.global_ranking ASC, p.name ASC │
│ `) │
│ if err != nil { │
│ @@ -53,10 +58,15 @@ func GenerateSearchIndex(db *sql.DB, out string, shardSize int │
│ ) error { │
│ if err := db.QueryRow(` │
│ SELECT COUNT(*) │
│ FROM players p │
│ - JOIN player_profiles pp ON p.id = pp.player_id │
│ + JOIN ( │
│ + SELECT player_id, MAX(season_id) as max_season_id │
│ + FROM player_profiles │
│ + WHERE has_complete_coverage = 1 │
│ + GROUP BY player_id │
│ + ) latest ON p.id = latest.player_id │
│ + JOIN player_profiles pp ON pp.player_id = latest.player_id │
│ + AND pp.season_id = latest.max_season_id │
│ JOIN realms r ON p.realm_id = r.id │
│ - WHERE pp.has_complete_coverage = 1 │
│ - AND pp.season_id = (SELECT MAX(season_number) FROM seasons) │
│ `).Scan(&totalPlayers); err != nil { │
│ return err │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ .../internal/generator/search.go ───┐
│ diff --git a/nix/pkgs/ookstats/src/internal/ │
│ generator/search.go b/nix/pkgs/ookstats/src/ │
│ internal/generator/search.go │
│ index 355ce08..07d370f 100644 │
│ --- a/nix/pkgs/ookstats/src/internal/generat │
│ or/search.go │
│ +++ b/nix/pkgs/ookstats/src/internal/generat │
│ or/search.go │
│ @@ -33,10 +33,15 @@ func GenerateSearchIndex │
│ (db *sql.DB, out string, shardSize int) erro │
│ r { │
│ SELECT p.id, p.name, r.region, r.sl │
│ ug, r.name, │
│ COALESCE(pp.class_name, ''), │
│ pp.global_ranking, COALESCE(pp.global_ranki │
│ ng_bracket,'') │
│ FROM players p │
│ - JOIN player_profiles pp ON p.id = p │
│ p.player_id │
│ + JOIN ( │
│ + SELECT player_id, MAX(season_id │
│ ) as max_season_id │
│ + FROM player_profiles │
│ + WHERE has_complete_coverage = 1 │
│ + GROUP BY player_id │
│ + ) latest ON p.id = latest.player_id │
│ + JOIN player_profiles pp ON pp.playe │
│ r_id = latest.player_id │
│ + AND pp.seas │
│ on_id = latest.max_season_id │
│ JOIN realms r ON p.realm_id = r.id │
│ - WHERE pp.has_complete_coverage = 1 │
│ - AND pp.season_id = (SELECT MAX(se │
│ ason_number) FROM seasons) │
│ ORDER BY pp.global_ranking ASC, p.n │
│ ame ASC │
│ `) │
│ if err != nil { │
│ @@ -53,10 +58,15 @@ func GenerateSearchIndex │
│ (db *sql.DB, out string, shardSize int) erro │
│ r { │
│ if err := db.QueryRow(` │
│ SELECT COUNT(*) │
│ FROM players p │
│ - JOIN player_profiles pp ON p.id = pp. │
│ player_id │
│ + JOIN ( │
│ + SELECT player_id, MAX(season_id) │
│ as max_season_id │
│ + FROM player_profiles │
│ + WHERE has_complete_coverage = 1 │
│ + GROUP BY player_id │
│ + ) latest ON p.id = latest.player_id │
│ + JOIN player_profiles pp ON pp.player_ │
│ id = latest.player_id │
│ + AND pp.season │
│ _id = latest.max_season_id │
│ JOIN realms r ON p.realm_id = r.id │
│ - WHERE pp.has_complete_coverage = 1 │
│ - AND pp.season_id = (SELECT MAX(seas │
│ on_number) FROM seasons) │
│ `).Scan(&totalPlayers); err != nil { │
│ return err │
│ } │
└──────────────────────────────────────────────┘
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET