From 9c60475e92d2f8c17f4003d06f98870ab229e7bd Mon Sep 17 00:00:00 2001 From: Claudio Maggioni Date: Sun, 15 Mar 2020 17:05:52 +0100 Subject: [PATCH] Added GET /device route --- .../smarthut/controller/DeviceController.java | 12 ++++++++---- .../smarthut/models/DeviceRepository.java | 9 +++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DeviceController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DeviceController.java index fa3242d..2d8dd99 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DeviceController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DeviceController.java @@ -6,13 +6,12 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Device; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DeviceRepository; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RoomRepository; +import java.security.Principal; +import java.util.List; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration @@ -22,6 +21,11 @@ public class DeviceController { @Autowired private DeviceRepository deviceRepository; @Autowired private RoomRepository roomRepository; + @GetMapping + public List getAll(final Principal user) { + return deviceRepository.findAllByUsername(user.getName()); + } + @PutMapping public Device update(@Valid @RequestBody DeviceSaveRequest deviceSaveRequest) throws NotFoundException, BadDataException { diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DeviceRepository.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DeviceRepository.java index b90639b..f844882 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DeviceRepository.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DeviceRepository.java @@ -23,6 +23,15 @@ public interface DeviceRepository extends CrudRepository findByIdAndUsername(Long id, String username); + /** + * Finds all devices belonging to a user + * + * @param username the User's username + * @return all devices of that user + */ + @Query("SELECT d FROM Device d JOIN d.room r JOIN r.user u WHERE u.username = ?1") + List findAllByUsername(String username); + /** * Find the user associated with a device through a room *