Implemented UserRepository

This commit is contained in:
Andrey Terentev 2024-03-13 12:02:10 +07:00 committed by Andrey Terentev
parent 5814119428
commit 5ca6c02e54

View File

@ -3,11 +3,17 @@ package ru.dragonestia.picker.api.impl.repository;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.NotNull;
import ru.dragonestia.picker.api.impl.RoomPickerClient;
import ru.dragonestia.picker.api.impl.util.EnumUtils;
import ru.dragonestia.picker.api.impl.util.RestTemplate;
import ru.dragonestia.picker.api.impl.util.type.HttpMethod;
import ru.dragonestia.picker.api.model.room.ShortResponseRoom;
import ru.dragonestia.picker.api.model.user.ResponseUser;
import ru.dragonestia.picker.api.repository.UserRepository;
import ru.dragonestia.picker.api.repository.request.user.*;
import ru.dragonestia.picker.api.repository.response.LinkedRoomsWithUserResponse;
import ru.dragonestia.picker.api.repository.response.RoomUserListResponse;
import ru.dragonestia.picker.api.repository.response.SearchUserResponse;
import ru.dragonestia.picker.api.repository.response.UserDetailsResponse;
import java.util.List;
@ -22,31 +28,63 @@ public class UserRepositoryImpl implements UserRepository {
@Override
public void linkUsersWithRoom(@NotNull LinkUsersWithRoom request) {
throw new UnsupportedOperationException("Not implemented");
rest.query("/nodes/%s/rooms/%s/users".formatted(request.getNodeId(), request.getRoomId()),
HttpMethod.POST,
params -> {
params.put("userIds", String.join(",", request.getUsers()));
params.put("force", Boolean.toString(request.ignoreSlotLimitation()));
});
}
@Override
public void unlinkUsersFromRoom(@NotNull UnlinkUsersFromRoom request) {
throw new UnsupportedOperationException("Not implemented");
rest.query("/nodes/%s/rooms/%s/users".formatted(request.getNodeId(), request.getRoomId()),
HttpMethod.DELETE,
params -> {
params.put("userIds", String.join(",", request.getUsers()));
});
}
@Override
public @NotNull List<ResponseUser> getAllUsersFormRoom(@NotNull GetAllUsersFromRoom request) {
throw new UnsupportedOperationException("Not implemented");
return rest.query("/nodes/%s/rooms/%s/users".formatted(request.getNodeId(), request.getRoomId()),
HttpMethod.GET,
RoomUserListResponse.class,
params -> {
var detailsStr = String.join(",", EnumUtils.enumSetToString(request.getDetails()));
params.put("requiredDetails", detailsStr);
}).users();
}
@Override
public @NotNull List<ResponseUser> searchUsers(@NotNull SearchUsers request) {
throw new UnsupportedOperationException("Not implemented");
return rest.query("/users/search",
HttpMethod.GET,
SearchUserResponse.class,
params -> {
params.put("requiredDetails", EnumUtils.enumSetToString(request.getDetails()));
params.put("input", request.getSearchInput());
}).users();
}
@Override
public @NotNull ResponseUser findUserById(@NotNull FindUserById request) {
throw new UnsupportedOperationException("Not implemented");
return rest.query("/users/" + request.getUserId(),
HttpMethod.GET,
UserDetailsResponse.class,
params -> {
params.put("requiredDetails", EnumUtils.enumSetToString(request.getDetails()));
}).user();
}
@Override
public @NotNull List<ShortResponseRoom> findRoomsLinkedWithUser(@NotNull FindRoomsLinkedWithUser request) {
throw new UnsupportedOperationException("Not implemented");
return rest.query("/users/" + request.getUserId() + "/rooms",
HttpMethod.GET,
LinkedRoomsWithUserResponse.class,
params -> {
params.put("requiredDetails", EnumUtils.enumSetToString(request.getDetails()));
}).rooms();
}
}