diff --git a/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/EntityRepositoryImpl.java b/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/EntityRepositoryImpl.java index 41f912d..163e547 100644 --- a/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/EntityRepositoryImpl.java +++ b/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/EntityRepositoryImpl.java @@ -1,51 +1,75 @@ package ru.dragonestia.picker.api.impl.repository; +import com.fasterxml.jackson.core.type.TypeReference; import ru.dragonestia.picker.api.impl.util.RestTemplate; +import ru.dragonestia.picker.api.impl.util.type.HttpMethod; import ru.dragonestia.picker.api.model.entity.EntityId; import ru.dragonestia.picker.api.model.instance.InstanceId; import ru.dragonestia.picker.api.model.room.Room; import ru.dragonestia.picker.api.model.room.RoomId; import ru.dragonestia.picker.api.repository.EntityRepository; +import ru.dragonestia.picker.api.repository.response.ResponseObject; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; public class EntityRepositoryImpl implements EntityRepository { - private final RestTemplate restTemplate; + private final RestTemplate rest; - public EntityRepositoryImpl(RestTemplate restTemplate) { - this.restTemplate = restTemplate; + public EntityRepositoryImpl(RestTemplate rest) { + this.rest = rest; } @Override public List searchUsers(EntityId input) { - throw new UnsupportedOperationException("Not implemented"); + return rest.queryWithRequest("/entities/search", HttpMethod.GET, new TypeReference>(){}, params -> { + params.put("input", input.getValue()); + }).stream().map(EntityId::of).toList(); } @Override public List getRooms(EntityId entity) { - throw new UnsupportedOperationException("Not implemented"); + return rest.queryWithRequest("/entities/target/rooms", + HttpMethod.GET, + new TypeReference>() {}, + params -> { + params.put("id", entity.getValue()); + }).stream().map(ResponseObject.RRoom::covert).toList(); } @Override public Map> getRooms(Collection entities) { - throw new UnsupportedOperationException("Not implemented"); + var map = new HashMap>(); + rest.queryWithRequest("/entities/list/rooms", HttpMethod.GET, new TypeReference>>() {}, params -> { + params.put("id", String.join(",", entities.stream().map(EntityId::getValue).toList())); + }).forEach((id, rooms) -> map.put(EntityId.of(id), rooms.stream().map(ResponseObject.RRoom::covert).toList())); + return map; } @Override public List getRoomEntities(InstanceId instanceId, RoomId roomId) { - throw new UnsupportedOperationException("Not implemented"); + return rest.queryWithRequest("/instances/%s/rooms/target/%s/users".formatted(instanceId.getValue(), roomId.getValue()), HttpMethod.GET, new TypeReference>(){}, params -> { + params.put("instanceId", instanceId.getValue()); + params.put("roomId", roomId.getValue()); + }).stream().map(EntityId::of).toList(); } @Override public void linkEntitiesWithRoom(InstanceId instanceId, RoomId roomId, Collection entities, boolean force) { - throw new UnsupportedOperationException("Not implemented"); + rest.query("/instances/%s/rooms/target/%s/users".formatted(instanceId.getValue(), roomId.getValue()), HttpMethod.POST, params -> { + params.put("instanceId", instanceId.getValue()); + params.put("roomId", roomId.getValue()); + params.put("entities", String.join(",", entities.stream().map(EntityId::getValue).toList())); + params.put("force", Boolean.toString(force)); + }); } @Override public void unlinkEntitiesFromRoom(InstanceId instanceId, RoomId roomId, Collection entities) { - throw new UnsupportedOperationException("Not implemented"); + rest.query("/instances/%s/rooms/target/%s/users".formatted(instanceId.getValue(), roomId.getValue()), HttpMethod.DELETE, params -> { + params.put("instanceId", instanceId.getValue()); + params.put("roomId", roomId.getValue()); + params.put("entities", String.join(",", entities.stream().map(EntityId::getValue).toList())); + }); } } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java b/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java index 45a1006..a4d4d60 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java @@ -14,7 +14,7 @@ import java.util.List; @RequiredArgsConstructor @RestController -@RequestMapping("/instances/{instanceId}/rooms/{roomId}/users") +@RequestMapping("/instances/{instanceId}/rooms/target/{roomId}/users") public class EntityRoomController { private final RoomService roomService;