Refactored model User
This commit is contained in:
parent
dfd6dbaf17
commit
8a9da6c534
@ -14,6 +14,7 @@ import ru.dragonestia.picker.api.model.node.PickingMethod;
|
||||
import ru.dragonestia.picker.api.model.room.IRoom;
|
||||
import ru.dragonestia.picker.api.repository.type.NodeIdentifier;
|
||||
import ru.dragonestia.picker.api.repository.type.RoomIdentifier;
|
||||
import ru.dragonestia.picker.api.repository.type.UserIdentifier;
|
||||
import ru.dragonestia.picker.interceptor.DebugInterceptor;
|
||||
import ru.dragonestia.picker.model.Room;
|
||||
import ru.dragonestia.picker.model.Node;
|
||||
@ -61,7 +62,7 @@ public class TestConfig implements WebMvcConfigurer {
|
||||
roomRepository.create(room);
|
||||
|
||||
for (int j = 0, n = rand.nextInt(slots + 1); j < n; j++) {
|
||||
var user = new User("test-user-" + rand.nextInt(20));
|
||||
var user = new User(UserIdentifier.of("test-user-" + rand.nextInt(20)));
|
||||
userRepository.linkWithRoom(room, List.of(user), false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import ru.dragonestia.picker.api.model.user.ResponseUser;
|
||||
import ru.dragonestia.picker.api.repository.response.LinkedRoomsWithUserResponse;
|
||||
import ru.dragonestia.picker.api.repository.response.SearchUserResponse;
|
||||
import ru.dragonestia.picker.api.repository.response.UserDetailsResponse;
|
||||
import ru.dragonestia.picker.api.repository.type.UserIdentifier;
|
||||
import ru.dragonestia.picker.model.User;
|
||||
import ru.dragonestia.picker.service.UserService;
|
||||
import ru.dragonestia.picker.util.DetailsParser;
|
||||
@ -62,6 +63,6 @@ public class UserController {
|
||||
return new LinkedRoomsWithUserResponse(List.of());
|
||||
}
|
||||
|
||||
return new LinkedRoomsWithUserResponse(userService.getUserRoomsWithDetails(new User(userId), detailsParser.parseRoomDetails(detailsSeq)));
|
||||
return new LinkedRoomsWithUserResponse(userService.getUserRoomsWithDetails(new User(UserIdentifier.of(userId)), detailsParser.parseRoomDetails(detailsSeq)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,37 @@
|
||||
package ru.dragonestia.picker.model;
|
||||
|
||||
import lombok.NonNull;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import ru.dragonestia.picker.api.model.user.IUser;
|
||||
import ru.dragonestia.picker.api.model.user.ResponseUser;
|
||||
import ru.dragonestia.picker.api.model.user.UserDetails;
|
||||
import ru.dragonestia.picker.api.repository.type.UserIdentifier;
|
||||
|
||||
public record User(@NonNull String id) {
|
||||
public class User implements IUser {
|
||||
|
||||
private final String identifier;
|
||||
|
||||
public User(@NotNull UserIdentifier identifier) {
|
||||
this.identifier = identifier.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String getDetail(@NotNull UserDetails detail) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public @NotNull ResponseUser toResponseObject() {
|
||||
return new ResponseUser(identifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return id.hashCode();
|
||||
return identifier.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -15,12 +39,8 @@ public record User(@NonNull String id) {
|
||||
if (object == this) return true;
|
||||
if (object == null) return false;
|
||||
if (object instanceof User other) {
|
||||
return id.equals(other.id);
|
||||
return identifier.equals(other.identifier);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public ResponseUser toResponseObject() {
|
||||
return new ResponseUser(id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,8 +124,8 @@ public class UserRepositoryImpl implements UserRepository {
|
||||
public List<User> search(String input) {
|
||||
synchronized (usersMap) {
|
||||
return usersMap.keySet().stream()
|
||||
.filter(user -> user.id().startsWith(input))
|
||||
.sorted(Comparator.comparing(User::id))
|
||||
.filter(user -> user.getIdentifier().startsWith(input))
|
||||
.sorted(Comparator.comparing(User::getIdentifier))
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ public class RoomServiceImpl implements RoomService {
|
||||
room.getMaxSlots(),
|
||||
roomUsers.size(),
|
||||
room.isLocked(),
|
||||
roomUsers.stream().map(User::id).collect(Collectors.toSet())
|
||||
roomUsers.stream().map(User::getIdentifier).collect(Collectors.toSet())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ import ru.dragonestia.picker.api.model.room.RoomDetails;
|
||||
import ru.dragonestia.picker.api.model.room.ShortResponseRoom;
|
||||
import ru.dragonestia.picker.api.model.user.ResponseUser;
|
||||
import ru.dragonestia.picker.api.model.user.UserDetails;
|
||||
import ru.dragonestia.picker.api.repository.type.UserIdentifier;
|
||||
import ru.dragonestia.picker.model.Room;
|
||||
import ru.dragonestia.picker.model.User;
|
||||
import ru.dragonestia.picker.repository.UserRepository;
|
||||
@ -67,6 +68,6 @@ public class UserServiceImpl implements UserService {
|
||||
|
||||
@Override
|
||||
public ResponseUser getUserDetails(String userId, Set<UserDetails> details) {
|
||||
return detailsExtractor.extract(new User(userId), details);
|
||||
return detailsExtractor.extract(new User(UserIdentifier.of(userId)), details);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
|
||||
import ru.dragonestia.picker.api.exception.InvalidNodeIdentifierException;
|
||||
import ru.dragonestia.picker.api.exception.InvalidRoomIdentifierException;
|
||||
import ru.dragonestia.picker.api.exception.InvalidUsernamesException;
|
||||
import ru.dragonestia.picker.api.repository.type.UserIdentifier;
|
||||
import ru.dragonestia.picker.api.util.IdentifierValidator;
|
||||
import ru.dragonestia.picker.model.User;
|
||||
|
||||
@ -35,7 +36,7 @@ public class NamingValidator {
|
||||
|
||||
for (var username: input) {
|
||||
if (validateUserId(username)) {
|
||||
users.add(new User(username));
|
||||
users.add(new User(UserIdentifier.of(username)));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user