From 3faa88734dfd2c482b03696b66d966f309337820 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Thu, 14 Mar 2024 15:11:59 +0700 Subject: [PATCH] Added methods for count users --- .../picker/repository/UserRepository.java | 4 ++++ .../repository/impl/UserRepositoryImpl.java | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java b/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java index 65ac8ba..e295431 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/UserRepository.java @@ -21,4 +21,8 @@ public interface UserRepository { List usersOf(Room room); List search(String input); + + int countAllUsers(); + + Map countUsersForNodes(); } diff --git a/server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java b/server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java index f41adeb..fb92909 100644 --- a/server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java +++ b/server/src/main/java/ru/dragonestia/picker/repository/impl/UserRepositoryImpl.java @@ -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 countUsersForNodes() { + var map = new HashMap(); + + 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