11package com .ftm .server .adapter .out .persistence .adapter .user ;
22
33import com .ftm .server .adapter .out .persistence .mapper .EmailVerificationLogsMapper ;
4+ import com .ftm .server .adapter .out .persistence .mapper .PostMapper ;
45import com .ftm .server .adapter .out .persistence .mapper .UserImageMapper ;
56import com .ftm .server .adapter .out .persistence .mapper .UserMapper ;
6- import com .ftm .server .adapter .out .persistence .model .EmailVerificationLogsJpaEntity ;
7- import com .ftm .server .adapter .out .persistence .model .GroomingLevelJpaEntity ;
8- import com .ftm .server .adapter .out .persistence .model .UserImageJpaEntity ;
9- import com .ftm .server .adapter .out .persistence .model .UserJpaEntity ;
10- import com .ftm .server .adapter .out .persistence .repository .EmailVerificationLogsRepository ;
11- import com .ftm .server .adapter .out .persistence .repository .GroomingLevelRepository ;
12- import com .ftm .server .adapter .out .persistence .repository .UserImageRepository ;
13- import com .ftm .server .adapter .out .persistence .repository .UserRepository ;
14- import com .ftm .server .application .command .user .EmailVerificationLogCreationCommand ;
7+ import com .ftm .server .adapter .out .persistence .model .*;
8+ import com .ftm .server .adapter .out .persistence .repository .*;
9+ import com .ftm .server .application .command .user .*;
1510import com .ftm .server .application .port .out .persistence .user .*;
1611import com .ftm .server .application .query .*;
1712import com .ftm .server .common .annotation .Adapter ;
1813import com .ftm .server .common .exception .CustomException ;
19- import com .ftm .server .domain .entity .EmailVerificationLogs ;
20- import com .ftm .server .domain .entity .User ;
21- import com .ftm .server .domain .entity .UserImage ;
14+ import com .ftm .server .domain .entity .*;
15+ import java .util .HashMap ;
16+ import java .util .List ;
17+ import java .util .Map ;
2218import java .util .Optional ;
2319import lombok .RequiredArgsConstructor ;
2420import lombok .extern .slf4j .Slf4j ;
@@ -35,19 +31,29 @@ public class UserDomainPersistenceAdapter
3531 SaveUserImagePort ,
3632 LoadUserPort ,
3733 LoadUserImagePort ,
38- UpdateUserInfoPort ,
39- UpdateUserImagePort {
34+ UpdateUserPort ,
35+ UpdateUserImagePort ,
36+ LoadPostUserDomainPort ,
37+ UpdatePostUserDomainPort ,
38+ DeleteUserImagePort ,
39+ DeleteGroomingTestResultPort ,
40+ DeleteUserPort ,
41+ DeleteBookmarkPort {
4042
4143 // repository
4244 private final EmailVerificationLogsRepository emailVerificationLogsRepository ;
4345 private final UserRepository userRepository ;
4446 private final GroomingLevelRepository groomingLevelRepository ;
4547 private final UserImageRepository userImageRepository ;
48+ private final PostRepository postRepository ;
49+ private final BookmarkRepository bookmarkRepository ;
50+ private final GroomingTestResultRepository groomingTestResultRepository ;
4651
4752 // mapper
4853 private final EmailVerificationLogsMapper emailVerificationLogsMapper ;
4954 private final UserMapper userMapper ;
5055 private final UserImageMapper userImageMapper ;
56+ private final PostMapper postMapper ;
5157
5258 @ Override
5359 public Optional <EmailVerificationLogs > loadEmailVerificationLogByEmail (FindByEmailQuery query ) {
@@ -115,11 +121,27 @@ public User saveSocialUser(User user) {
115121 public User loadUserById (FindByUserIdQuery query ) {
116122 UserJpaEntity userJpaEntity =
117123 userRepository
118- .findById (query .getUserId ())
124+ .findByIdAndIsDeleted (query .getUserId (), false )
119125 .orElseThrow (() -> CustomException .USER_NOT_FOUND );
120126 return userMapper .toDomainEntity (userJpaEntity );
121127 }
122128
129+ @ Override
130+ public User loadUserByRole (FindUserByRoleQuery query ) {
131+ UserJpaEntity userJpaEntity = userRepository .findByRole (query .getUserRole ()).get ();
132+ return userMapper .toDomainEntity (userJpaEntity );
133+ }
134+
135+ @ Override
136+ public List <User > loadUserByDeleteOption (FindUserByDeleteOptionQuery query ) {
137+ return userRepository
138+ .findAllByDeletedBefore (
139+ query .getIsDeleted (), query .getDeletedAt ().atTime (23 , 59 , 59 ))
140+ .stream ()
141+ .map (userMapper ::toDomainEntity )
142+ .toList ();
143+ }
144+
123145 @ Override
124146 public UserImage loadUserImageByUserId (FindByUserIdQuery query ) {
125147 UserImageJpaEntity userImageJpaEntity =
@@ -131,7 +153,7 @@ public UserImage loadUserImageByUserId(FindByUserIdQuery query) {
131153 }
132154
133155 @ Override
134- public void updateUserInfo (User user ) {
156+ public void updateUser (User user ) {
135157 UserJpaEntity savedUser =
136158 userRepository
137159 .findById (user .getId ())
@@ -156,4 +178,49 @@ public void updateUserImage(UserImage userImage) {
156178
157179 userImageJpaEntity .updateFromDomainEntity (userImage );
158180 }
181+
182+ @ Override
183+ public List <Post > loadPostListByUser (FindByUserIdQuery query ) {
184+ return postRepository .findByUserId (query .getUserId ()).stream ()
185+ .map (postMapper ::toDomainEntity )
186+ .toList ();
187+ }
188+
189+ @ Override
190+ public void updatePostListBySystemUser (List <Post > postList ) {
191+ UserJpaEntity systemUser = userRepository .findById (postList .get (0 ).getUserId ()).get ();
192+
193+ Map <Long , Post > map = new HashMap <>();
194+ postList .forEach (p -> map .put (p .getId (), p ));
195+
196+ List <PostJpaEntity > postJpaEntityList =
197+ postRepository .findAllById (postList .stream ().map (Post ::getId ).toList ());
198+
199+ postJpaEntityList .forEach (
200+ pj -> pj .updatePostForDomainEntity (map .get (pj .getId ()), systemUser ));
201+ }
202+
203+ @ Override
204+ public void deleteGroomingTestResultByUserList (
205+ DeleteGroomingTestResultByUserIdCommand command ) {
206+ groomingTestResultRepository .deleteAllByUserIdList (command .getUserIdList ());
207+ }
208+
209+ @ Override
210+ public List <String > deleteUserImageByUserList (DeleteUserImageByUserIdCommand command ) {
211+ List <String > imageKeyList =
212+ userImageRepository .findAllByUserIdList (command .getUserIdList ());
213+ userImageRepository .deleteAllByUserIdList (command .getUserIdList ());
214+ return imageKeyList ;
215+ }
216+
217+ @ Override
218+ public void deleteAllUserByIdList (DeleteAllUserByIdListCommand command ) {
219+ userRepository .deleteAllByUserIdList (command .getUserIdList ());
220+ }
221+
222+ @ Override
223+ public void deleteBookmarkByUserList (DeleteBookmarkByUserIdCommand command ) {
224+ bookmarkRepository .deleteAllByUserIdList (command .getUserIdList ());
225+ }
159226}
0 commit comments