implemented all graphql query methods

This commit is contained in:
Andrey Terentev 2024-05-06 17:24:43 +07:00 committed by Andrey Terentev
parent bff4db3e0f
commit cf9271cf2b
2 changed files with 30 additions and 1 deletions

View File

@ -1,8 +1,11 @@
package ru.dragonestia.picker.controller.graphql;
import jakarta.validation.constraints.NotNull;
import org.springframework.graphql.data.method.annotation.Argument;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.stereotype.Controller;
import ru.dragonestia.picker.controller.graphql.entity.EntityNode;
import ru.dragonestia.picker.controller.graphql.entity.EntityRoom;
import ru.dragonestia.picker.controller.graphql.entity.type.DataProvider;
import ru.dragonestia.picker.service.NodeService;
import ru.dragonestia.picker.service.RoomService;
@ -31,4 +34,31 @@ public class GraphqlController {
.map(node -> new EntityNode(node, dataProvider))
.toList();
}
@QueryMapping
EntityNode nodeById(@Argument String id) {
return nodeService.find(id)
.map(node -> new EntityNode(node, dataProvider))
.orElse(null);
}
@QueryMapping
List<EntityRoom> allRooms(@NotNull String nodeId) {
var node = nodeService.find(nodeId).orElse(null);
if (node == null) return null;
return roomService.all(node).stream()
.map(room -> new EntityRoom(room, dataProvider))
.toList();
}
@QueryMapping
EntityRoom roomById(@Argument String nodeId, @NotNull String roomId) {
var node = nodeService.find(nodeId).orElse(null);
if (node == null) return null;
return roomService.find(node, roomId)
.map(room -> new EntityRoom(room, dataProvider))
.orElse(null);
}
}

View File

@ -3,7 +3,6 @@ type Query {
nodeById(id: String!): Node
allRooms(nodeId: String!): [Room]
roomById(nodeId: String!, roomId: String!): Room
roomUsers(nodeId: String!, roomId: String!): [User]
}
type Node {