@@ -10,11 +10,9 @@ export const calculateRoomRolePriorityFromRoles = (roles: IRole['_id'][]) => {
10
10
} ;
11
11
12
12
const READ_BATCH_SIZE = 1000 ;
13
- const WRITE_BATCH_SIZE = 1000 ;
14
13
15
14
async function assignRoomRolePrioritiesFromMap ( userIdAndroomRolePrioritiesMap : Map < IUser [ '_id' ] , IUser [ 'roomRolePriorities' ] > ) {
16
- let bulk = Users . col . initializeUnorderedBulkOp ( ) ;
17
- let counter = 0 ;
15
+ const bulk = Users . col . initializeUnorderedBulkOp ( ) ;
18
16
19
17
for await ( const [ userId , roomRolePriorities ] of userIdAndroomRolePrioritiesMap . entries ( ) ) {
20
18
userIdAndroomRolePrioritiesMap . delete ( userId ) ;
@@ -32,31 +30,19 @@ async function assignRoomRolePrioritiesFromMap(userIdAndroomRolePrioritiesMap: M
32
30
bulk . find ( { _id : userId } ) . updateOne ( {
33
31
$set : updateFields ,
34
32
} ) ;
35
-
36
- counter ++ ;
37
-
38
- if ( counter >= WRITE_BATCH_SIZE ) {
39
- // Execute the bulk operation for the current batch
40
- await bulk . execute ( ) ;
41
- bulk = Users . col . initializeUnorderedBulkOp ( ) ;
42
- counter = 0 ;
43
- }
44
33
}
45
34
}
46
35
47
- // Execute any remaining operations
48
- if ( counter > 0 ) {
36
+ if ( bulk . length > 0 ) {
49
37
await bulk . execute ( ) ;
50
38
}
51
-
52
- return userIdAndroomRolePrioritiesMap ;
53
39
}
54
40
55
41
export const syncRolePrioritiesForRoomIfRequired = async ( rid : IRoom [ '_id' ] ) => {
56
- let userIdAndroomRolePrioritiesMap = new Map < IUser [ '_id' ] , IUser [ 'roomRolePriorities' ] > ( ) ;
42
+ const userIdAndroomRolePrioritiesMap = new Map < IUser [ '_id' ] , IUser [ 'roomRolePriorities' ] > ( ) ;
57
43
58
44
if ( await Rooms . hasCreatedRolePrioritiesForRoom ( rid ) ) {
59
- return false ;
45
+ return ;
60
46
}
61
47
62
48
const cursor = Subscriptions . find (
@@ -79,15 +65,10 @@ export const syncRolePrioritiesForRoomIfRequired = async (rid: IRoom['_id']) =>
79
65
const existingPriorities = userIdAndroomRolePrioritiesMap . get ( userId ) || { } ;
80
66
existingPriorities [ roomId ] = priority ;
81
67
userIdAndroomRolePrioritiesMap . set ( userId , existingPriorities ) ;
82
-
83
- if ( userIdAndroomRolePrioritiesMap . size >= WRITE_BATCH_SIZE ) {
84
- userIdAndroomRolePrioritiesMap = await assignRoomRolePrioritiesFromMap ( userIdAndroomRolePrioritiesMap ) ;
85
- }
86
68
}
87
69
88
70
// Flush any remaining priorities in the map
89
71
await assignRoomRolePrioritiesFromMap ( userIdAndroomRolePrioritiesMap ) ;
90
72
91
73
await Rooms . markRolePrioritesCreatedForRoom ( rid ) ;
92
- return true ;
93
74
} ;
0 commit comments