Added methods for count users

This commit is contained in:
Andrey Terentev 2024-03-14 15:11:59 +07:00 committed by Andrey Terentev
parent 65c78df852
commit 3faa88734d
2 changed files with 28 additions and 0 deletions

View File

@ -21,4 +21,8 @@ public interface UserRepository {
List<User> usersOf(Room room);
List<User> search(String input);
int countAllUsers();
Map<String, Integer> countUsersForNodes();
}

View File

@ -151,6 +151,30 @@ public class UserRepositoryImpl implements UserRepository {
}
}
@Override
public int countAllUsers() {
lock.readLock().lock();
try {
return usersMap.size();
} finally {
lock.readLock().unlock();
}
}
@Override
public Map<String, Integer> countUsersForNodes() {
var map = new HashMap<String, Integer>();
lock.readLock().lock();
try {
roomUsers.forEach((path, users) -> map.put(path.node, users.size()));
} finally {
lock.readLock().unlock();
}
return map;
}
private record NodeRoomPath(String node, String bucket) {
@Override