fixed repositories

This commit is contained in:
Andrey Terentev 2024-05-27 00:34:23 +07:00 committed by Andrey Terentev
parent 8e2d075f56
commit 2a21143711
6 changed files with 20 additions and 31 deletions

View File

@ -73,7 +73,7 @@ public class RoomPickerClient {
}
public RoomPickerInfoResponse getServerInfo() {
return restTemplate.queryWithRequest("/info", HttpMethod.GET, new TypeReference<>() {
return restTemplate.query("/info", HttpMethod.GET, new TypeReference<>() {
}, params -> {});
}

View File

@ -1,5 +1,6 @@
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.account.Account;
@ -21,22 +22,20 @@ public class AccountRepositoryImpl implements AccountRepository {
@Override
public List<AccountId> allAccountsIds() {
List<String> id = rest.queryWithRequest("/accounts", HttpMethod.GET);
return id.stream().map(AccountId::of).toList();
return rest.query("/accounts", HttpMethod.GET, new TypeReference<List<String>>(){}).stream().map(AccountId::of).toList();
}
@Override
public Account getAccount(AccountId id) {
ResponseObject.RAccount account = rest.queryWithRequest("/accounts/target/" + id, HttpMethod.GET);
return account.convert();
return rest.query("/accounts/target/" + id, HttpMethod.GET, new TypeReference<ResponseObject.RAccount>(){}).convert();
}
@Override
public List<Account> getAccounts(Collection<AccountId> id) {
List<ResponseObject.RAccount> accounts = rest.queryWithRequest("/accounts/list", HttpMethod.GET, params -> {
return rest.query("/accounts/list", HttpMethod.GET, new TypeReference<List<ResponseObject.RAccount>>(){}, params -> {
params.put("id", String.join(",", id.stream().map(AccountId::getValue).toList()));
});
return accounts.stream().map(ResponseObject.RAccount::convert).toList();
}).stream().map(ResponseObject.RAccount::convert).toList();
}
@Override

View File

@ -22,14 +22,14 @@ public class EntityRepositoryImpl implements EntityRepository {
@Override
public List<EntityId> searchUsers(EntityId input) {
return rest.queryWithRequest("/entities/search", HttpMethod.GET, new TypeReference<List<String>>(){}, params -> {
return rest.query("/entities/search", HttpMethod.GET, new TypeReference<List<String>>(){}, params -> {
params.put("input", input.getValue());
}).stream().map(EntityId::of).toList();
}
@Override
public List<Room> getRooms(EntityId entity) {
return rest.queryWithRequest("/entities/target/rooms",
return rest.query("/entities/target/rooms",
HttpMethod.GET,
new TypeReference<List<ResponseObject.RRoom>>() {},
params -> {
@ -40,7 +40,7 @@ public class EntityRepositoryImpl implements EntityRepository {
@Override
public Map<EntityId, List<Room>> getRooms(Collection<EntityId> entities) {
var map = new HashMap<EntityId, List<Room>>();
rest.queryWithRequest("/entities/list/rooms", HttpMethod.GET, new TypeReference<Map<String, List<ResponseObject.RRoom>>>() {}, params -> {
rest.query("/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;
@ -48,7 +48,7 @@ public class EntityRepositoryImpl implements EntityRepository {
@Override
public List<EntityId> getRoomEntities(InstanceId instanceId, RoomId roomId) {
return rest.queryWithRequest("/instances/%s/rooms/target/%s/users".formatted(instanceId.getValue(), roomId.getValue()), HttpMethod.GET, new TypeReference<List<String>>(){}, params -> {
return rest.query("/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();

View File

@ -22,20 +22,18 @@ public class InstanceRepositoryImpl implements InstanceRepository {
@Override
public List<InstanceId> allInstancesIds() {
List<String> id = rest.queryWithRequest("/instances", HttpMethod.GET);
return id.stream().map(InstanceId::of).toList();
return rest.query("/instances", HttpMethod.GET, new TypeReference<List<String>>(){}).stream().map(InstanceId::of).toList();
}
@Override
public Instance getInstance(InstanceId id) {
ResponseObject.RInstance instance = rest.queryWithRequest("/instances/target/" + id.getValue(), HttpMethod.GET);
return instance.convert();
return rest.query("/instances/target/" + id.getValue(), HttpMethod.GET, new TypeReference<ResponseObject.RInstance>(){}).convert();
}
@Override
public Map<InstanceId, Instance> getInstances(Collection<InstanceId> ids) {
var map = new HashMap<InstanceId, Instance>();
rest.queryWithRequest("/instances/target/list", HttpMethod.GET, new TypeReference<List<ResponseObject.RInstance>>() {}, params -> {
rest.query("/instances/target/list", HttpMethod.GET, new TypeReference<List<ResponseObject.RInstance>>() {}, params -> {
params.put("id", String.join(",", ids.stream().map(InstanceId::getValue).toList()));
}).stream().map(ResponseObject.RInstance::convert).forEach(instance -> map.put(instance.id(), instance));
return map;

View File

@ -21,20 +21,18 @@ public class RoomRepositoryImpl implements RoomRepository {
@Override
public List<RoomId> allRoomsIds(InstanceId instanceId) {
List<String> id = rest.queryWithRequest("/instances/target/%s/rooms".formatted(instanceId.getValue()), HttpMethod.GET);
return id.stream().map(RoomId::of).toList();
return rest.query("/instances/target/%s/rooms".formatted(instanceId.getValue()), HttpMethod.GET, new TypeReference<List<String>>(){}).stream().map(RoomId::of).toList();
}
@Override
public Room getRoom(InstanceId instanceId, RoomId roomId) {
ResponseObject.RRoom room = rest.queryWithRequest("/instances/target/%s/rooms/target/%s".formatted(instanceId.getValue(), roomId.getValue()), HttpMethod.GET);
return room.covert();
return rest.query("/instances/target/%s/rooms/target/%s".formatted(instanceId.getValue(), roomId.getValue()), HttpMethod.GET, new TypeReference<ResponseObject.RRoom>(){}).covert();
}
@Override
public Map<RoomId, Room> getRooms(InstanceId instanceId, Collection<RoomId> rooms) {
var map = new HashMap<RoomId, Room>();
rest.queryWithRequest("/instances/target/%s/rooms/list".formatted(instanceId.getValue()), HttpMethod.GET, new TypeReference<List<ResponseObject.RRoom>>() {}, params -> {
rest.query("/instances/target/%s/rooms/list".formatted(instanceId.getValue()), HttpMethod.GET, new TypeReference<List<ResponseObject.RRoom>>() {}, params -> {
params.put("id", String.join(",", rooms.stream().map(RoomId::getValue).toList()));
}).stream().map(ResponseObject.RRoom::covert).forEach(room -> map.put(room.id(), room));
return map;

View File

@ -5,7 +5,6 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeCreator;
import okhttp3.*;
import org.jetbrains.annotations.ApiStatus.Internal;
import ru.dragonestia.picker.api.impl.exception.ExceptionService;
@ -21,7 +20,6 @@ import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Stream;
@Internal
public class RestTemplate {
@ -58,15 +56,11 @@ public class RestTemplate {
.build());
}
public <T> T queryWithRequest(String uri, HttpMethod method) {
return queryWithRequest(uri, method, ParamsConsumer.NONE);
public <T> T query(String uri, HttpMethod method, TypeReference<T> type) {
return query(uri, method, type, ParamsConsumer.NONE);
}
public <T> T queryWithRequest(String uri, HttpMethod method, ParamsConsumer paramsConsumer) {
return queryWithRequest(uri, method, new TypeReference<>(){}, paramsConsumer);
}
public <T> T queryWithRequest(String uri, HttpMethod method, TypeReference<T> type, ParamsConsumer paramsConsumer) {
public <T> T query(String uri, HttpMethod method, TypeReference<T> type, ParamsConsumer paramsConsumer) {
return execute(client.prepareRequestBuilder(uri + queryEncode(paramsConsumer))
.method(method.name(), method == HttpMethod.GET? null : new FormBody.Builder().build())
.build(),