Added PERSIST detail for nodes and rooms

This commit is contained in:
Andrey Terentev 2024-02-28 13:01:35 +07:00 committed by Andrey Terentev
parent 268853b75e
commit 68efccbe79
6 changed files with 16 additions and 5 deletions

View File

@ -11,7 +11,7 @@ import java.util.Set;
public interface NodeRepository { public interface NodeRepository {
Set<NodeDetails> ALL_DETAILS = Set.of(); Set<NodeDetails> ALL_DETAILS = Set.of(NodeDetails.PERSIST);
void register(RNode node, boolean persist) throws InvalidNodeIdentifierException, NodeAlreadyExistException; void register(RNode node, boolean persist) throws InvalidNodeIdentifierException, NodeAlreadyExistException;

View File

@ -11,7 +11,7 @@ import java.util.Set;
public interface RoomRepository { public interface RoomRepository {
Set<RoomDetails> ALL_DETAILS = Set.of(RoomDetails.COUNT_USERS); Set<RoomDetails> ALL_DETAILS = Set.of(RoomDetails.COUNT_USERS, RoomDetails.PERSIST);
void register(RRoom room, boolean persist) throws NodeNotFoundException, InvalidRoomIdentifierException, RoomAlreadyExistException; void register(RRoom room, boolean persist) throws NodeNotFoundException, InvalidRoomIdentifierException, RoomAlreadyExistException;

View File

@ -1,4 +1,5 @@
package ru.dragonestia.picker.api.repository.details; package ru.dragonestia.picker.api.repository.details;
public enum NodeDetails { public enum NodeDetails {
PERSIST
} }

View File

@ -1,5 +1,6 @@
package ru.dragonestia.picker.api.repository.details; package ru.dragonestia.picker.api.repository.details;
public enum RoomDetails { public enum RoomDetails {
COUNT_USERS COUNT_USERS,
PERSIST
} }

View File

@ -39,7 +39,7 @@ public class RNode {
details.put(detail, value); details.put(detail, value);
} }
public String getDetails(NodeDetails detail, String value) { public String getDetails(NodeDetails detail) {
return details.get(detail); return details.get(detail);
} }

View File

@ -29,7 +29,10 @@ public class DetailsExtractor {
var response = node.toResponseObject(); var response = node.toResponseObject();
for (var detail: details) { for (var detail: details) {
// TODO... if (detail == NodeDetails.PERSIST) {
response.putDetail(NodeDetails.PERSIST, Boolean.toString(node.persist()));
continue;
}
} }
return response; return response;
@ -42,6 +45,12 @@ public class DetailsExtractor {
if (detail == RoomDetails.COUNT_USERS) { if (detail == RoomDetails.COUNT_USERS) {
var users = Integer.toString(userRepository.usersOf(room).size()); var users = Integer.toString(userRepository.usersOf(room).size());
response.details().put(RoomDetails.COUNT_USERS, users); response.details().put(RoomDetails.COUNT_USERS, users);
continue;
}
if (detail == RoomDetails.PERSIST) {
response.details().put(RoomDetails.PERSIST, Boolean.toString(room.isPersist()));
continue;
} }
} }