diff --git a/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java b/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java index 4c1bdff..7266c97 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/graphql/GraphqlController.java @@ -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 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); + } } diff --git a/server/src/main/resources/graphql/schema.graphqls b/server/src/main/resources/graphql/schema.graphqls index c4b06b5..3fe9fc4 100644 --- a/server/src/main/resources/graphql/schema.graphqls +++ b/server/src/main/resources/graphql/schema.graphqls @@ -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 {