Implemented NodeRepository

This commit is contained in:
Andrey Terentev 2024-03-13 11:42:01 +07:00 committed by Andrey Terentev
parent 7d8f9bd463
commit 425fb71f4c
2 changed files with 26 additions and 6 deletions

View File

@ -32,7 +32,7 @@ public class NodeDefinition implements INode {
}
@Override
public @Nullable Boolean isPersist() {
public @NotNull Boolean isPersist() {
return persist;
}

View File

@ -2,14 +2,19 @@ package ru.dragonestia.picker.api.impl.repository;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.NotNull;
import ru.dragonestia.picker.api.exception.NodeNotFoundException;
import ru.dragonestia.picker.api.impl.RoomPickerClient;
import ru.dragonestia.picker.api.impl.util.EnumUtils;
import ru.dragonestia.picker.api.impl.util.RestTemplate;
import ru.dragonestia.picker.api.impl.util.type.HttpMethod;
import ru.dragonestia.picker.api.model.node.INode;
import ru.dragonestia.picker.api.model.node.NodeDefinition;
import ru.dragonestia.picker.api.repository.NodeRepository;
import ru.dragonestia.picker.api.repository.request.node.FindNodeById;
import ru.dragonestia.picker.api.repository.request.node.GetAllNodes;
import ru.dragonestia.picker.api.repository.request.node.RemoveNodesByIds;
import ru.dragonestia.picker.api.repository.response.NodeDetailsResponse;
import ru.dragonestia.picker.api.repository.response.NodeListResponse;
import ru.dragonestia.picker.api.repository.response.PickedRoomResponse;
import ru.dragonestia.picker.api.repository.type.NodeIdentifier;
import ru.dragonestia.picker.api.repository.type.UserIdentifier;
@ -29,27 +34,42 @@ public class NodeRepositoryImpl implements NodeRepository {
@Override
public @NotNull List<INode> allNodes(@NotNull GetAllNodes data) {
throw new UnsupportedOperationException("Not implemented");
return rest.query("/nodes", HttpMethod.GET, NodeListResponse.class, params -> {
params.put("requiredDetails", EnumUtils.enumSetToString(data.getDetails()));
}).nodes().stream().map(node -> (INode) node).toList();
}
@Override
public @NotNull Optional<INode> findNodeById(@NotNull FindNodeById data) {
throw new UnsupportedOperationException("Not implemented");
try {
var response = rest.query("/nodes/" + data.getId(), HttpMethod.GET, NodeDetailsResponse.class, params -> {
params.put("requiredDetails", EnumUtils.enumSetToString(data.getDetails()));
});
return Optional.of(response.node());
} catch (NodeNotFoundException ex) {
return Optional.empty();
}
}
@Override
public void removeNodesById(@NotNull RemoveNodesByIds data) {
throw new UnsupportedOperationException("Not implemented");
rest.query("/nodes", HttpMethod.DELETE, params -> {
params.put("toDelete", String.join(",", data.getNodeIds()));
});
}
@Override
public void removeNode(@NotNull INode node) {
throw new UnsupportedOperationException("Not implemented");
rest.query("/nodes/" + node.getIdentifier(), HttpMethod.DELETE, params -> {});
}
@Override
public void saveNode(@NotNull NodeDefinition definition) {
throw new UnsupportedOperationException("Not implemented");
rest.query("/nodes", HttpMethod.POST, params -> {
params.put("nodeId", definition.getIdentifier());
params.put("method", definition.getPickingMethod().name());
params.put("persist", Boolean.toString(definition.isPersist()));
});
}
@Override