@@ -322,7 +322,13 @@ export async function getUserQueueRole(
322322
323323export async function getUsersNeedingRoleUpdates (
324324 queueId : number ,
325- players : Array < { user_id : string ; oldMMR : number ; newMMR : number } > ,
325+ players : Array < {
326+ user_id : string
327+ oldMMR : number
328+ newMMR : number
329+ oldRank : number
330+ newRank : number
331+ } > ,
326332) : Promise < string [ ] > {
327333 if ( players . length === 0 ) return [ ]
328334
@@ -333,6 +339,13 @@ export async function getUsersNeedingRoleUpdates(
333339 [ queueId ] ,
334340 )
335341
342+ const leaderboardRoles = await pool . query (
343+ `SELECT leaderboard_min, leaderboard_max FROM queue_roles
344+ WHERE queue_id = $1 AND mmr_threshold IS NULL
345+ ORDER BY leaderboard_min DESC` ,
346+ [ queueId ] ,
347+ )
348+
336349 const thresholds = roles . rows . map ( ( r ) => r . mmr_threshold )
337350 const usersToUpdate : string [ ] = [ ]
338351
@@ -343,6 +356,25 @@ export async function getUsersNeedingRoleUpdates(
343356 if ( oldRole !== newRole ) {
344357 usersToUpdate . push ( player . user_id )
345358 }
359+
360+ // Also handle leaderboard positions
361+ if (
362+ player . newRank !== null &&
363+ leaderboardRoles &&
364+ leaderboardRoles . rowCount !== 0
365+ ) {
366+ const oldLeaderboardRole = leaderboardRoles . rows . find (
367+ ( r ) => r . leaderboard_min <= player . oldRank ,
368+ )
369+ const newLeaderboardRole = leaderboardRoles . rows . find (
370+ ( r ) => r . leaderboard_min <= player . newRank ,
371+ )
372+
373+ // Update leaderboard role if its not the same
374+ if ( oldLeaderboardRole !== newLeaderboardRole ) {
375+ usersToUpdate . push ( player . user_id )
376+ }
377+ }
346378 }
347379
348380 return usersToUpdate
@@ -379,13 +411,15 @@ export async function getLeaderboardQueueRole(
379411 SELECT *
380412 FROM queue_roles
381413 WHERE queue_id = $1
382- AND leaderboard_min > = $2
383- AND leaderboard_max < = $2
414+ AND leaderboard_min < = $2
415+ AND leaderboard_max > = $2
384416 LIMIT 1
385417 ` ,
386418 [ queueId , rank ] ,
387419 )
388420
421+ console . log ( roleRes . rowCount )
422+
389423 if ( roleRes . rowCount === 0 ) return null
390424 return roleRes . rows [ 0 ]
391425}
0 commit comments