implemented client entity repository

This commit is contained in:
Andrey Terentev 2024-05-24 11:53:04 +07:00 committed by Andrey Terentev
parent 3679a1c40e
commit 9064f7cab7
2 changed files with 37 additions and 13 deletions

View File

@ -1,51 +1,75 @@
package ru.dragonestia.picker.api.impl.repository; 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.RestTemplate;
import ru.dragonestia.picker.api.impl.util.type.HttpMethod;
import ru.dragonestia.picker.api.model.entity.EntityId; import ru.dragonestia.picker.api.model.entity.EntityId;
import ru.dragonestia.picker.api.model.instance.InstanceId; import ru.dragonestia.picker.api.model.instance.InstanceId;
import ru.dragonestia.picker.api.model.room.Room; import ru.dragonestia.picker.api.model.room.Room;
import ru.dragonestia.picker.api.model.room.RoomId; import ru.dragonestia.picker.api.model.room.RoomId;
import ru.dragonestia.picker.api.repository.EntityRepository; import ru.dragonestia.picker.api.repository.EntityRepository;
import ru.dragonestia.picker.api.repository.response.ResponseObject;
import java.util.Collection; import java.util.*;
import java.util.List;
import java.util.Map;
public class EntityRepositoryImpl implements EntityRepository { public class EntityRepositoryImpl implements EntityRepository {
private final RestTemplate restTemplate; private final RestTemplate rest;
public EntityRepositoryImpl(RestTemplate restTemplate) { public EntityRepositoryImpl(RestTemplate rest) {
this.restTemplate = restTemplate; this.rest = rest;
} }
@Override @Override
public List<EntityId> searchUsers(EntityId input) { public List<EntityId> searchUsers(EntityId input) {
throw new UnsupportedOperationException("Not implemented"); return rest.queryWithRequest("/entities/search", HttpMethod.GET, new TypeReference<List<String>>(){}, params -> {
params.put("input", input.getValue());
}).stream().map(EntityId::of).toList();
} }
@Override @Override
public List<Room> getRooms(EntityId entity) { public List<Room> getRooms(EntityId entity) {
throw new UnsupportedOperationException("Not implemented"); return rest.queryWithRequest("/entities/target/rooms",
HttpMethod.GET,
new TypeReference<List<ResponseObject.RRoom>>() {},
params -> {
params.put("id", entity.getValue());
}).stream().map(ResponseObject.RRoom::covert).toList();
} }
@Override @Override
public Map<EntityId, List<Room>> getRooms(Collection<EntityId> entities) { public Map<EntityId, List<Room>> getRooms(Collection<EntityId> entities) {
throw new UnsupportedOperationException("Not implemented"); var map = new HashMap<EntityId, List<Room>>();
rest.queryWithRequest("/entities/list/rooms", HttpMethod.GET, new TypeReference<Map<String, List<ResponseObject.RRoom>>>() {}, 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 @Override
public List<EntityId> getRoomEntities(InstanceId instanceId, RoomId roomId) { public List<EntityId> 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<List<String>>(){}, params -> {
params.put("instanceId", instanceId.getValue());
params.put("roomId", roomId.getValue());
}).stream().map(EntityId::of).toList();
} }
@Override @Override
public void linkEntitiesWithRoom(InstanceId instanceId, RoomId roomId, Collection<EntityId> entities, boolean force) { public void linkEntitiesWithRoom(InstanceId instanceId, RoomId roomId, Collection<EntityId> 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 @Override
public void unlinkEntitiesFromRoom(InstanceId instanceId, RoomId roomId, Collection<EntityId> entities) { public void unlinkEntitiesFromRoom(InstanceId instanceId, RoomId roomId, Collection<EntityId> 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()));
});
} }
} }

View File

@ -14,7 +14,7 @@ import java.util.List;
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/instances/{instanceId}/rooms/{roomId}/users") @RequestMapping("/instances/{instanceId}/rooms/target/{roomId}/users")
public class EntityRoomController { public class EntityRoomController {
private final RoomService roomService; private final RoomService roomService;