From b44588f7f221a6f14550360888d4401a7539fc2a Mon Sep 17 00:00:00 2001 From: tkdwns414 Date: Wed, 10 Jan 2024 16:33:13 +0900 Subject: [PATCH] [feat] add groups field in `me` api --- .../java/org/pingle/pingleserver/domain/User.java | 4 ++++ .../dto/response/SimpleGroupInfo.java | 9 +++++++++ .../dto/response/UserInfoResponse.java | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/pingle/pingleserver/dto/response/SimpleGroupInfo.java diff --git a/src/main/java/org/pingle/pingleserver/domain/User.java b/src/main/java/org/pingle/pingleserver/domain/User.java index 816b180..63274cd 100644 --- a/src/main/java/org/pingle/pingleserver/domain/User.java +++ b/src/main/java/org/pingle/pingleserver/domain/User.java @@ -9,6 +9,7 @@ import org.pingle.pingleserver.domain.enums.URole; import java.time.LocalDateTime; +import java.util.List; @Entity @Getter @@ -41,6 +42,9 @@ public class User { private LocalDateTime deletedAt; + @OneToMany(mappedBy = "user") + private List userTeams; + @Builder public User(String serialId, String name, String email, Provider provider, URole role, String refreshToken) { this.serialId = serialId; diff --git a/src/main/java/org/pingle/pingleserver/dto/response/SimpleGroupInfo.java b/src/main/java/org/pingle/pingleserver/dto/response/SimpleGroupInfo.java new file mode 100644 index 0000000..d7caa95 --- /dev/null +++ b/src/main/java/org/pingle/pingleserver/dto/response/SimpleGroupInfo.java @@ -0,0 +1,9 @@ +package org.pingle.pingleserver.dto.response; + +import org.pingle.pingleserver.domain.UserTeam; + +public record SimpleGroupInfo(Long id, String name) { + public static SimpleGroupInfo of(UserTeam userTeam) { + return new SimpleGroupInfo(userTeam.getTeam().getId(), userTeam.getTeam().getName()); + } +} diff --git a/src/main/java/org/pingle/pingleserver/dto/response/UserInfoResponse.java b/src/main/java/org/pingle/pingleserver/dto/response/UserInfoResponse.java index c833eda..9e03312 100644 --- a/src/main/java/org/pingle/pingleserver/dto/response/UserInfoResponse.java +++ b/src/main/java/org/pingle/pingleserver/dto/response/UserInfoResponse.java @@ -1,10 +1,21 @@ package org.pingle.pingleserver.dto.response; import org.pingle.pingleserver.domain.User; +import org.pingle.pingleserver.domain.UserTeam; import org.pingle.pingleserver.domain.enums.Provider; -public record UserInfoResponse(Long id, String name, String email, Provider provider){ +import java.util.List; +import java.util.stream.Collectors; + +public record UserInfoResponse(Long id, String name, String email, Provider provider, List groups){ public static UserInfoResponse of(User user){ - return new UserInfoResponse(user.getId(), user.getName(), user.getEmail(), user.getProvider()); + return new UserInfoResponse(user.getId(), user.getName(), + user.getEmail(), user.getProvider(), getSimpleGroupsInfo(user.getUserTeams())); + } + + private static List getSimpleGroupsInfo(List userTeams){ + return userTeams.stream() + .map(SimpleGroupInfo::of) + .collect(Collectors.toList()); } }