Skip to content

Commit

Permalink
Merge pull request #124 from Team-Recordy/refactor/#123
Browse files Browse the repository at this point in the history
변경된 프로필 수정 로직 리팩토링
  • Loading branch information
elive7 authored Feb 15, 2025
2 parents 7074e04 + d5dd0f7 commit 7296a6f
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 47 deletions.
3 changes: 1 addition & 2 deletions src/main/java/org/recordy/server/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public User activate(UserSignUp userSignUp) {
.build();
}

public UserUpdate confirmUpdate(UserUpdate update) {
public void update(UserUpdate update) {
if (Objects.nonNull(update.nickname())) {
validateNicknameFormat(update.nickname());
nickname = update.nickname();
Expand All @@ -75,7 +75,6 @@ public UserUpdate confirmUpdate(UserUpdate update) {
else {
profileImageUrl = PROFILE_IMAGE_URL;
}
return new UserUpdate(nickname, profileImageUrl);
}

private void validateNicknameFormat(String nickname) {
Expand Down
31 changes: 19 additions & 12 deletions src/main/java/org/recordy/server/user/domain/UserEntity.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
package org.recordy.server.user.domain;

import jakarta.persistence.*;
import lombok.*;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.recordy.server.auth.domain.AuthPlatform;
import org.recordy.server.common.domain.JpaMetaInfoEntity;
import org.recordy.server.subscribe.domain.SubscribeEntity;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Table(name = "users")
Expand All @@ -24,19 +33,17 @@ public class UserEntity extends JpaMetaInfoEntity {
private AuthPlatform.Type platformType;
@Enumerated(EnumType.STRING)
private UserStatus status;
@Setter
private String profileImageUrl;
@Setter
private String nickname;
private boolean useTerm;
private boolean personalInfoTerm;
private boolean ageTerm;

@OneToMany(mappedBy = "subscribingUser", cascade = CascadeType.ALL, orphanRemoval = true)
private List<SubscribeEntity> subscribings = new ArrayList<>();
@OneToMany(mappedBy = "subscribingUser", cascade = CascadeType.ALL)
private Set<SubscribeEntity> subscribings = new HashSet<>();

@OneToMany(mappedBy = "subscribedUser", cascade = CascadeType.ALL, orphanRemoval = true)
private List<SubscribeEntity> subscribers = new ArrayList<>();
@OneToMany(mappedBy = "subscribedUser", cascade = CascadeType.ALL)
private Set<SubscribeEntity> subscribers = new HashSet<>();

public UserEntity(
Long id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@
import org.recordy.server.user.controller.dto.response.UserInfo;
import org.recordy.server.user.domain.User;
import org.recordy.server.user.domain.usecase.UserProfile;
import org.recordy.server.user.domain.usecase.UserUpdate;
import org.springframework.data.domain.Slice;

public interface UserRepository {

// command
User save(User user);
void deleteById(long id);
void update(long userId, UserUpdate update);

// query
User findById(long id);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,38 @@
package org.recordy.server.user.repository.impl;

import static org.recordy.server.record.domain.QRecordEntity.recordEntity;
import static org.recordy.server.subscribe.domain.QSubscribeEntity.subscribeEntity;
import static org.recordy.server.user.domain.QUserEntity.userEntity;

import com.querydsl.core.types.ConstructorExpression;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.recordy.server.common.util.QueryDslUtils;
import org.recordy.server.subscribe.domain.QSubscribeEntity;
import org.recordy.server.user.controller.dto.response.UserInfo;
import org.recordy.server.user.domain.UserEntity;
import org.recordy.server.user.domain.usecase.UserProfile;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.SliceImpl;
import org.springframework.stereotype.Repository;

import java.util.List;

import static org.recordy.server.record.domain.QRecordEntity.recordEntity;
import static org.recordy.server.subscribe.domain.QSubscribeEntity.subscribeEntity;
import static org.recordy.server.user.domain.QUserEntity.userEntity;

@RequiredArgsConstructor
@Repository
public class UserQueryDslRepository {

private final JPAQueryFactory jpaQueryFactory;
QSubscribeEntity subscribeEntity1 = new QSubscribeEntity("subscribe1");
QSubscribeEntity subscribeEntity2 = new QSubscribeEntity("subscribe2");

public UserEntity findById(long userId) {
return jpaQueryFactory
.selectFrom(userEntity)
.leftJoin(userEntity.subscribers, subscribeEntity1).fetchJoin()
.leftJoin(userEntity.subscribings, subscribeEntity2).fetchJoin()
.where(userEntity.id.eq(userId))
.fetchOne();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.recordy.server.user.repository.impl;

import java.util.Objects;
import lombok.RequiredArgsConstructor;
import org.recordy.server.common.message.ErrorMessage;
import org.recordy.server.subscribe.domain.SubscribeEntity;
Expand All @@ -8,15 +9,12 @@
import org.recordy.server.user.domain.User;
import org.recordy.server.user.domain.UserEntity;
import org.recordy.server.user.domain.usecase.UserProfile;
import org.recordy.server.user.domain.usecase.UserUpdate;
import org.recordy.server.user.exception.UserException;
import org.recordy.server.user.repository.UserRepository;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Repository;

import java.util.Objects;

@RequiredArgsConstructor
@Repository
public class UserRepositoryImpl implements UserRepository {
Expand Down Expand Up @@ -52,15 +50,6 @@ public void deleteById(long id) {
userJpaRepository.deleteById(id);
}

@Override
public void update(long id, UserUpdate update) {
UserEntity userEntity = userJpaRepository.findById(id)
.orElseThrow(() -> new UserException(ErrorMessage.USER_NOT_FOUND));

userEntity.setNickname(update.nickname());
userEntity.setProfileImageUrl(update.profileImageUrl());
}

@Override
public User findById(long id) {
UserEntity entity = userQueryDslRepository.findById(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@ public void update(UserUpdate update, long id) {
if (!user.getNickname().equals(update.nickname())) {
validateDuplicateNickname(update.nickname());
}
userRepository.update(id, user.confirmUpdate(update));
user.update(update);
userRepository.save(user);
}

@Transactional
Expand Down
11 changes: 0 additions & 11 deletions src/test/java/org/recordy/server/mock/user/FakeUserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.recordy.server.user.controller.dto.response.UserInfo;
import org.recordy.server.user.domain.User;
import org.recordy.server.user.domain.usecase.UserProfile;
import org.recordy.server.user.domain.usecase.UserUpdate;
import org.recordy.server.user.exception.UserException;
import org.recordy.server.user.repository.UserRepository;
import org.springframework.data.domain.Slice;
Expand Down Expand Up @@ -41,16 +40,6 @@ public void deleteById(long id) {
users.remove(id);
}

@Override
public void update(long userId, UserUpdate update) {
User user = users.get(userId);
if (user == null) {
throw new UserException(ErrorMessage.USER_NOT_FOUND);
}
user.confirmUpdate(update);
users.put(userId, user);
}

@Override
public User findById(long id) {
return users.get(id);
Expand Down

0 comments on commit 7296a6f

Please sign in to comment.