From 8361b52d813fa80877f431c9b13478fb79c8b0af Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Sat, 11 May 2024 11:56:07 +0700 Subject: [PATCH] implemented entity controller --- .../picker/controller/EntityController.java | 17 +++++++++++--- .../controller/EntityRoomController.java | 23 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/ru/dragonestia/picker/controller/EntityController.java b/server/src/main/java/ru/dragonestia/picker/controller/EntityController.java index e9ca650..e89fb91 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/EntityController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/EntityController.java @@ -2,7 +2,10 @@ package ru.dragonestia.picker.controller; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import ru.dragonestia.picker.model.entity.EntityId; +import ru.dragonestia.picker.service.EntityService; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -11,18 +14,26 @@ import java.util.Map; @RequestMapping("/entities") public class EntityController { + private final EntityService entityService; + @GetMapping("/search") List search(@RequestParam String input) { - throw new UnsupportedOperationException("Not implemented"); + return entityService.searchEntities(EntityId.of(input)).stream().map(id -> id.getId().getValue()).toList(); } @GetMapping("/target/rooms") List find(@RequestParam String id) { - throw new UnsupportedOperationException("Not implemented"); + return entityService.getEntityRooms(EntityId.of(id)).stream() + .map(room -> room.getId().getValue()) + .toList(); } @GetMapping("/list/rooms") Map> roomsOf(@RequestParam List id) { - throw new UnsupportedOperationException("Not implemented"); + var map = new HashMap>(); + for (var userId: id) { + map.put(userId, find(userId)); + } + return map; } } diff --git a/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java b/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java index e7afb78..45a1006 100644 --- a/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java +++ b/server/src/main/java/ru/dragonestia/picker/controller/EntityRoomController.java @@ -3,6 +3,12 @@ package ru.dragonestia.picker.controller; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import ru.dragonestia.picker.exception.DoesNotExistsException; +import ru.dragonestia.picker.model.entity.EntityId; +import ru.dragonestia.picker.model.instance.InstanceId; +import ru.dragonestia.picker.model.room.RoomId; +import ru.dragonestia.picker.service.EntityService; +import ru.dragonestia.picker.service.RoomService; import java.util.List; @@ -11,9 +17,14 @@ import java.util.List; @RequestMapping("/instances/{instanceId}/rooms/{roomId}/users") public class EntityRoomController { + private final RoomService roomService; + private final EntityService entityService; + @GetMapping List entitiesInsideRoom(@PathVariable String instanceId, @PathVariable String roomId) { - throw new UnsupportedOperationException("Not implemented"); + var room = roomService.find(InstanceId.of(instanceId), RoomId.of(roomId)) + .orElseThrow(() -> DoesNotExistsException.forRoom(RoomId.of(roomId))); + return entityService.getRoomEntities(room).stream().map(id -> id.getId().getValue()).toList(); } @PostMapping @@ -21,13 +32,19 @@ public class EntityRoomController { @PathVariable String roomId, @RequestParam List entities, @RequestParam(defaultValue = "false") boolean force) { - throw new UnsupportedOperationException("Not implemented"); + var room = roomService.find(InstanceId.of(instanceId), RoomId.of(roomId)) + .orElseThrow(() -> DoesNotExistsException.forRoom(RoomId.of(roomId))); + entityService.linkEntitiesWithRoom(room, entities.stream().map(EntityId::of).toList(), force); + return ResponseEntity.ok().build(); } @DeleteMapping ResponseEntity unlinkEntitiesForBucket(@PathVariable String instanceId, @PathVariable String roomId, @RequestParam List entities) { - throw new UnsupportedOperationException("Not implemented"); + var room = roomService.find(InstanceId.of(instanceId), RoomId.of(roomId)) + .orElseThrow(() -> DoesNotExistsException.forRoom(RoomId.of(roomId))); + entityService.unlinkEntitiesFromRoom(room, entities.stream().map(EntityId::of).toList()); + return ResponseEntity.ok().build(); } }