22 getQueueSettings ,
33 getUsersNeedingRoleUpdates ,
44 updatePlayerMmrAll ,
5+ countPlayerGames ,
56} from '../queryDB'
6- import type { Matches , Queues , teamResults } from 'psqlDB'
7+ import type { Queues , teamResults } from 'psqlDB'
78import { setUserQueueRole } from 'utils/queueHelpers'
89import { clamp } from 'lodash-es'
910
@@ -130,7 +131,6 @@ export async function calculatePredictedMMR(
130131
131132export async function calculateNewMMR (
132133 queueId : number ,
133- matchData : Matches ,
134134 queueSettings : Queues ,
135135 teamResults : teamResults ,
136136 winningTeamId : number ,
@@ -143,8 +143,13 @@ export async function calculateNewMMR(
143143 queueSettings . default_elo ,
144144 )
145145
146- const playerMMRChanges : Array < { user_id : string ; oldMMR : number ; newMMR : number } > = [ ]
146+ const playerMMRChanges : Array < {
147+ user_id : string
148+ oldMMR : number
149+ newMMR : number
150+ } > = [ ]
147151 const updatePromises : Promise < void > [ ] = [ ]
152+ let roleUpdateUsers : string [ ] = [ ]
148153
149154 for ( const ts of teamStats ) {
150155 const isWinner = ts . isWinner
@@ -170,23 +175,29 @@ export async function calculateNewMMR(
170175 updatePromises . push (
171176 updatePlayerMmrAll ( queueId , player . user_id , newMMR , newVolatility ) ,
172177 )
178+
179+ const gamesPlayed = await countPlayerGames ( queueId , player . user_id )
180+ if ( gamesPlayed === 1 ) {
181+ roleUpdateUsers . push ( player . user_id )
182+ }
173183 }
174184
175185 ts . team . score = isWinner ? 1 : 0
176186 }
177187
178188 await Promise . all ( updatePromises )
179189
180- const usersNeedingRoleUpdate = await getUsersNeedingRoleUpdates (
190+ // Get users who need role updates due to MMR threshold changes
191+ let usersNeedingRoleUpdate = await getUsersNeedingRoleUpdates (
181192 queueId ,
182193 playerMMRChanges ,
183194 )
184195
185- if ( usersNeedingRoleUpdate . length > 0 ) {
196+ roleUpdateUsers = roleUpdateUsers . concat ( usersNeedingRoleUpdate ) . flat ( )
197+
198+ if ( roleUpdateUsers . length > 0 ) {
186199 await Promise . all (
187- usersNeedingRoleUpdate . map ( ( userId ) =>
188- setUserQueueRole ( queueId , userId ) ,
189- ) ,
200+ roleUpdateUsers . map ( ( userId ) => setUserQueueRole ( queueId , userId ) ) ,
190201 )
191202 }
192203
0 commit comments