Skip to content

Commit ea2b6e8

Browse files
committed
Some ranking fixes
1 parent 545d8de commit ea2b6e8

File tree

2 files changed

+26
-14
lines changed

2 files changed

+26
-14
lines changed

src/server/database/models/event_rankings.cpp

+14-10
Original file line numberDiff line numberDiff line change
@@ -224,16 +224,20 @@ namespace database::event_rankings
224224
last_update = now;
225225

226226
db->execute(R"(
227-
with ranked_players as (
228-
select player_id, value,
229-
(select count(distinct value) + 1
230-
from event_rankings pr2
231-
where pr2.value > pr1.value) as new_rank
232-
from event_rankings pr1
233-
)
234-
update event_rankings record
235-
join ranked_players ranked_player on record.player_id = ranked_player.player_id
236-
set record.player_rank = ranked_player.new_rank where record.value > 0;
227+
update event_rankings event_ranking
228+
join (
229+
select
230+
player_id,
231+
event_id,
232+
value,
233+
case
234+
when value = 0 then 0
235+
else rank() over (partition by event_id order by value desc)
236+
end as new_rank
237+
from event_rankings
238+
) ranked
239+
on event_ranking.player_id = ranked.player_id AND event_ranking.event_id = ranked.event_id
240+
set event_ranking.player_rank = ranked.new_rank;
237241
)");
238242
}
239243

src/server/platforms/tppstm/endpoints/main/commands/cmd_get_ranking.cpp

+12-4
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,23 @@ namespace tpp
3838
const auto event_id = event_id_opt.value();
3939

4040
const auto lookup_type = lookup_type_opt.value();
41-
auto offset = index_j.get<std::uint64_t>() - 1;
41+
auto offset = 0ull;
4242

4343
if (lookup_type == database::event_rankings::lookup_around)
4444
{
4545
const auto player_rank = database::event_rankings::get_player_rank(player->get_id(), event_id);
4646
if (player_rank.has_value())
4747
{
4848
const auto page_start = player_rank.value() - (player_rank.value() % num);
49-
offset += page_start;
49+
offset = page_start - 1;
50+
}
51+
}
52+
else
53+
{
54+
offset = index_j.get<std::uint64_t>();
55+
if (offset > 0)
56+
{
57+
offset--;
5058
}
5159
}
5260

@@ -59,12 +67,12 @@ namespace tpp
5967
const auto& entry = entries[i];
6068
auto& json_entry = result["ranking_list"][i];
6169

62-
json_entry["disp_rank"] = 1;
70+
json_entry["disp_rank"] = 0;
6371
json_entry["rank"] = entry.get_rank();
6472
json_entry["fob_grade"] = entry.get_fob_grade();
6573
json_entry["league_grade"] = entry.get_league_grade();
6674
json_entry["score"] = entry.get_value();
67-
json_entry["is_grade_top"] = 0;
75+
json_entry["is_grade_top"] = lookup_type == database::event_rankings::lookup_best && offset == 0 && i == 0;
6876
json_entry["player_info"] = player_info(entry.get_player_id(), entry.get_account_id());
6977
}
7078

0 commit comments

Comments
 (0)