implemented room controller

This commit is contained in:
Andrey Terentev 2024-05-11 10:59:37 +07:00 committed by Andrey Terentev
parent fbda9c1675
commit 3df58d31b6
3 changed files with 37 additions and 9 deletions

View File

@ -4,6 +4,12 @@ import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import ru.dragonestia.picker.controller.response.ResponseObject;
import ru.dragonestia.picker.exception.DoesNotExistsException;
import ru.dragonestia.picker.model.instance.InstanceId;
import ru.dragonestia.picker.model.room.RoomId;
import ru.dragonestia.picker.model.room.factory.RoomFactory;
import ru.dragonestia.picker.service.InstanceService;
import ru.dragonestia.picker.service.RoomService;
import java.util.List;
@ -12,19 +18,25 @@ import java.util.List;
@RequiredArgsConstructor
public class RoomController {
private final InstanceService instanceService;
private final RoomService roomService;
private final RoomFactory roomFactory;
@GetMapping
List<String> listRooms(@PathVariable String instanceId) {
throw new UnsupportedOperationException("Not implemented");
return roomService.all(InstanceId.of(instanceId)).stream().map(id -> id.getId().getValue()).toList();
}
@GetMapping("/target/{roomId}")
ResponseObject.Room targetRoomDetails(@PathVariable String instanceId, @PathVariable String roomId) {
throw new UnsupportedOperationException("Not implemented");
return roomService.find(InstanceId.of(instanceId), RoomId.of(roomId))
.map(ResponseObject.Room::of)
.orElseThrow(() -> DoesNotExistsException.forRoom(RoomId.of(roomId)));
}
@GetMapping("/list")
List<ResponseObject.Room> listRoomDetails(@PathVariable String instanceId, @RequestParam List<String> id) {
throw new UnsupportedOperationException("Not implemented");
return id.stream().map(roomId -> targetRoomDetails(instanceId, roomId)).toList();
}
@PostMapping
@ -34,21 +46,32 @@ public class RoomController {
@RequestParam String payload,
@RequestParam(defaultValue = "false") boolean locked,
@RequestParam(defaultValue = "false") boolean persist) {
throw new UnsupportedOperationException("Not implemented");
var instance = instanceService.find(InstanceId.of(instanceId))
.orElseThrow(() -> DoesNotExistsException.forInstance(InstanceId.of(instanceId)));
roomService.create(roomFactory.create(RoomId.of(id), instance, slots, payload, persist, locked));
return ResponseEntity.ok().build();
}
@DeleteMapping("/target/{roomId}")
ResponseEntity<Void> deleteRoom(@PathVariable String instanceId, @PathVariable String roomId) {
throw new UnsupportedOperationException("Not implemented");
roomService.find(InstanceId.of(instanceId), RoomId.of(roomId)).ifPresent(roomService::remove);
return ResponseEntity.ok().build();
}
@DeleteMapping("/list")
ResponseEntity<Void> deleteRooms(@PathVariable String instanceId, @RequestParam List<String> id) {
throw new UnsupportedOperationException("Not implemented");
for (var roomId: id) {
deleteRoom(instanceId, roomId);
}
return ResponseEntity.ok().build();
}
@PutMapping("/target/{roomId}/lock")
ResponseEntity<Void> lockRoom(@PathVariable String instanceId, @PathVariable String roomId, @RequestParam boolean newState) {
throw new UnsupportedOperationException("Not implemented");
var room = roomService.find(InstanceId.of(instanceId), RoomId.of(roomId))
.orElseThrow(() -> DoesNotExistsException.forRoom(RoomId.of(roomId)));
room.setLocked(newState);
roomService.updateState(room);
return ResponseEntity.ok().build();
}
}

View File

@ -11,6 +11,12 @@ import ru.dragonestia.picker.model.room.RoomId;
public class RoomFactory {
public Room create(RoomId identifier, Instance instance, int slots, String payload, boolean persist) {
return new Room(identifier, instance, slots, payload, persist);
return create(identifier, instance, slots, payload, persist, false);
}
public Room create(RoomId identifier, Instance instance, int slots, String payload, boolean persist, boolean locked) {
var room = new Room(identifier, instance, slots, payload, persist);
room.setLocked(locked);
return room;
}
}

View File

@ -26,7 +26,6 @@ public class RoomServiceImpl implements RoomService {
private final RoomRepository roomRepository;
private final InstanceRepository instanceRepository;
private final EntityRepository entityRepository;
private final InstanceAndRoomStorage storage;
@Override