Skip to content

Commit 1089869

Browse files
committed
changes requested
Signed-off-by: Abhinav Kumar <abhinav@avitechlab.com>
1 parent 7461d89 commit 1089869

File tree

6 files changed

+10
-34
lines changed

6 files changed

+10
-34
lines changed

apps/meteor/app/lib/server/functions/syncRolePrioritiesForRoomIfRequired.ts

+4-23
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ export const calculateRoomRolePriorityFromRoles = (roles: IRole['_id'][]) => {
1010
};
1111

1212
const READ_BATCH_SIZE = 1000;
13-
const WRITE_BATCH_SIZE = 1000;
1413

1514
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();
1816

1917
for await (const [userId, roomRolePriorities] of userIdAndroomRolePrioritiesMap.entries()) {
2018
userIdAndroomRolePrioritiesMap.delete(userId);
@@ -32,31 +30,19 @@ async function assignRoomRolePrioritiesFromMap(userIdAndroomRolePrioritiesMap: M
3230
bulk.find({ _id: userId }).updateOne({
3331
$set: updateFields,
3432
});
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-
}
4433
}
4534
}
4635

47-
// Execute any remaining operations
48-
if (counter > 0) {
36+
if (bulk.length > 0) {
4937
await bulk.execute();
5038
}
51-
52-
return userIdAndroomRolePrioritiesMap;
5339
}
5440

5541
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']>();
5743

5844
if (await Rooms.hasCreatedRolePrioritiesForRoom(rid)) {
59-
return false;
45+
return;
6046
}
6147

6248
const cursor = Subscriptions.find(
@@ -79,15 +65,10 @@ export const syncRolePrioritiesForRoomIfRequired = async (rid: IRoom['_id']) =>
7965
const existingPriorities = userIdAndroomRolePrioritiesMap.get(userId) || {};
8066
existingPriorities[roomId] = priority;
8167
userIdAndroomRolePrioritiesMap.set(userId, existingPriorities);
82-
83-
if (userIdAndroomRolePrioritiesMap.size >= WRITE_BATCH_SIZE) {
84-
userIdAndroomRolePrioritiesMap = await assignRoomRolePrioritiesFromMap(userIdAndroomRolePrioritiesMap);
85-
}
8668
}
8769

8870
// Flush any remaining priorities in the map
8971
await assignRoomRolePrioritiesFromMap(userIdAndroomRolePrioritiesMap);
9072

9173
await Rooms.markRolePrioritesCreatedForRoom(rid);
92-
return true;
9374
};

packages/model-typings/src/models/IRoomsModel.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -314,5 +314,5 @@ export interface IRoomsModel extends IBaseModel<IRoom> {
314314
countByBroadcast(options?: CountDocumentsOptions): Promise<number>;
315315
countByE2E(options?: CountDocumentsOptions): Promise<number>;
316316
markRolePrioritesCreatedForRoom(rid: IRoom['_id']): Promise<UpdateResult>;
317-
hasCreatedRolePrioritiesForRoom(rid: IRoom['_id']): Promise<boolean>;
317+
hasCreatedRolePrioritiesForRoom(rid: IRoom['_id']): Promise<number>;
318318
}

packages/model-typings/src/models/IUsersModel.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,7 @@ export interface IUsersModel extends IBaseModel<IUser> {
253253
removeRoomByRoomIds(rids: string[]): Promise<UpdateResult | Document>;
254254
addRoomRolePriorityByUserId(userId: string, rid: string, rolePriority: number): Promise<UpdateResult>;
255255
removeRoomRolePriorityByUserId(userId: string, rid: string): Promise<UpdateResult>;
256-
assignRoomRolePrioritiesByUserIdPriorityMap(
257-
rolePrioritiesMap: Record<string, number>,
258-
rid: string,
259-
): Promise<{
260-
modifiedCount: number;
261-
}>;
256+
assignRoomRolePrioritiesByUserIdPriorityMap(rolePrioritiesMap: Record<string, number>, rid: string): Promise<number>;
262257
unassignRoomRolePrioritiesByRoomId(rid: string): Promise<UpdateResult>;
263258
getLoginTokensByUserId(userId: string): FindCursor<ILoginToken>;
264259
addPersonalAccessTokenToUser(data: { userId: string; loginTokenObject: IPersonalAccessToken }): Promise<UpdateResult>;

packages/models/src/models/Rooms.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2212,6 +2212,6 @@ export class RoomsRaw extends BaseRaw<IRoom> implements IRoomsModel {
22122212
}
22132213

22142214
async hasCreatedRolePrioritiesForRoom(rid: IRoom['_id']) {
2215-
return (await this.findOne({ _id: rid, rolePrioritiesCreated: true })) !== null;
2215+
return this.countDocuments({ _id: rid, rolePrioritiesCreated: true });
22162216
}
22172217
}

packages/models/src/models/Users.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1615,10 +1615,10 @@ export class UsersRaw extends BaseRaw {
16151615

16161616
if (bulk.length > 0) {
16171617
const result = await bulk.execute();
1618-
return { modifiedCount: result.modifiedCount };
1618+
return result.modifiedCount;
16191619
}
16201620

1621-
return { modifiedCount: 0 };
1621+
return 0;
16221622
}
16231623

16241624
unassignRoomRolePrioritiesByRoomId(rid) {

packages/rest-typings/src/v1/rooms.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ export type RoomsEndpoints = {
843843

844844
'/v1/rooms.membersOrderedByRole': {
845845
GET: (params: RoomsMembersOrderedByRoleProps) => PaginatedResult<{
846-
members: (IUser & { roles: IRole['_id'][] })[];
846+
members: (IUser & { roles?: IRole['_id'][] })[];
847847
}>;
848848
};
849849
};

0 commit comments

Comments
 (0)