enabled GraphiQL and created base entities

This commit is contained in:
Andrey Terentev 2024-05-06 16:49:20 +07:00 committed by Andrey Terentev
parent daf770f5ee
commit 2ecf7366c1
6 changed files with 127 additions and 0 deletions

View File

@ -0,0 +1,27 @@
package ru.dragonestia.picker.controller.graphql;
import lombok.RequiredArgsConstructor;
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.service.NodeService;
import ru.dragonestia.picker.service.RoomService;
import ru.dragonestia.picker.service.UserService;
import java.util.List;
@Controller
@RequiredArgsConstructor
public class GraphqlController {
private final NodeService nodeService;
private final RoomService roomService;
private final UserService userService;
@QueryMapping
List<EntityNode> allNodes() {
return nodeService.all().stream()
.map(EntityNode::new)
.toList();
}
}

View File

@ -0,0 +1,21 @@
package ru.dragonestia.picker.controller.graphql.entity;
import jakarta.validation.constraints.NotNull;
import ru.dragonestia.picker.model.Node;
public class EntityNode {
private final Node node;
public EntityNode(Node node) {
this.node = node;
}
public @NotNull String getId() {
return node.getIdentifier();
}
public @NotNull String getMethod() {
return node.getPickingMethod().name();
}
}

View File

@ -0,0 +1,33 @@
package ru.dragonestia.picker.controller.graphql.entity;
import jakarta.validation.constraints.NotNull;
import ru.dragonestia.picker.model.Room;
public class EntityRoom {
private final Room room;
public EntityRoom(@NotNull Room room) {
this.room = room;
}
public @NotNull String getId() {
return room.getIdentifier();
}
public @NotNull String getNodeId() {
return room.getNodeIdentifier();
}
public int getSlots() {
return room.getMaxSlots();
}
public @NotNull String getPayload() {
return room.getPayload();
}
public boolean isLocked() {
return room.isLocked();
}
}

View File

@ -0,0 +1,17 @@
package ru.dragonestia.picker.controller.graphql.entity;
import jakarta.validation.constraints.NotNull;
import ru.dragonestia.picker.model.User;
public class EntityUser {
private final User user;
public EntityUser(@NotNull User user) {
this.user = user;
}
public @NotNull String getId() {
return user.getIdentifier();
}
}

View File

@ -15,3 +15,8 @@ springdoc:
swagger-ui:
path: /api-docs-ui
default-models-expand-depth: -1
spring:
graphql:
graphiql:
enabled: true

View File

@ -0,0 +1,24 @@
type Query {
allNodes: [Node]
nodeById(id: String!): Node
allRooms(nodeId: String!): [Room]
roomById(nodeId: String!, roomId: String!): Room
roomUsers(nodeId: String!, roomId: String!): [User]
}
type Node {
id: String!
method: String!
}
type Room {
id: String!
nodeId: String!
slots: Int!
payload: String!
locked: Boolean!
}
type User {
id: String!
}