From 84d7a41aa3332edb8597d95a1e20a4029386eb6d Mon Sep 17 00:00:00 2001 From: birkon <birkon@stud.ntnu.no> Date: Tue, 2 May 2023 13:03:58 +0200 Subject: [PATCH] added get group endpoint --- .../SmartMat/controller/group/GroupController.java | 11 +++++++++++ .../entity/fridgeProduct/FridgeProductAsso.java | 4 ++-- .../v233/SmartMat/entity/group/UserGroupAsso.java | 5 +++-- .../repository/group/UserGroupAssoRepository.java | 8 ++++++++ .../v233/SmartMat/service/group/GroupService.java | 10 ++++++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java index a33ab537..e485351b 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java @@ -19,6 +19,7 @@ import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.stream.Collectors; /** * Controller for groups API, providing endpoints for group management @@ -324,4 +325,14 @@ public class GroupController { } } + /** + * Handles the HTTP DELETE request to remove a user from a group. + * @param auth the authentication object containing the username of the user + * @return a ResponseEntity object containing the list of groups the user is associated with and an HTTP status code of 200, + */ + @GetMapping("/") + public ResponseEntity<List<UserGroupAsso>> getAllGroupsByUser(Authentication auth) { + return ResponseEntity.ok(groupService.getUserGroupAssoByUserName(auth.getName())); + } + } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java index 8e823589..c1d1160c 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java @@ -23,12 +23,12 @@ public class FridgeProductAsso { @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @JoinColumn(name = "fridge_id") - @JsonIgnoreProperties({"products"}) + @JsonIgnore private Fridge fridgeId; @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @JoinColumn(name = "ean") - @JsonIgnoreProperties({"fridges"}) + @JsonIgnore private Product ean; @Column(name = "purchase_date") diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java index 5c90e08c..cf3b0fca 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java @@ -1,5 +1,6 @@ package ntnu.idatt2016.v233.SmartMat.entity.group; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import jakarta.persistence.*; import lombok.*; @@ -26,13 +27,13 @@ public class UserGroupAsso { @ManyToOne @MapsId("username") @JoinColumn(name = "username") - @JsonIgnoreProperties("group") + @JsonIgnore private User user; @ManyToOne @MapsId("group_id") @JoinColumn(name = "group_id") - @JsonIgnoreProperties({"group", "user"}) + @JsonIgnoreProperties({"user", "fridge", "shoppingList"}) private Group group; @Column(name = "primary_group") diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java index 77f294fc..07d37395 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java @@ -73,4 +73,12 @@ public interface UserGroupAssoRepository extends JpaRepository<UserGroupAsso, Us * @return */ String findAuthorityByUser_UsernameAndGroup_GroupId(String username, long groupId); + + + /** + * Finds all groups a user is a member of + * @param username the username of the user + * @return a list of all groups the user is a member of + */ + List<UserGroupAsso> findAllByUserUsername(String username); } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java index 484f3ff9..e29d843e 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupService.java @@ -219,4 +219,14 @@ public class GroupService { Optional<UserGroupAsso> userGroupAsso = getUserGroupAsso(username, groupId); return userGroupAsso.map(UserGroupAsso::getGroupAuthority).orElseThrow(() -> new IllegalArgumentException("User is not associated with group")); } + + + /** + * Gets all user group associations for a user + * @param username the username of the user + * @return a list of all user group associations for the user + */ + public List<UserGroupAsso> getUserGroupAssoByUserName(String username) { + return userGroupAssoRepository.findAllByUserUsername(username); + } } -- GitLab