Skip to content

Commit

Permalink
Merge pull request #45 from MoneyMakersClub/develop
Browse files Browse the repository at this point in the history
[Deploy] 일부 설정 옵션만 전달되어도 UserSetting 업데이트되도록 변경
  • Loading branch information
seohyun-lee authored Nov 5, 2024
2 parents 54213ec + 911ee21 commit e1ab768
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 9 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

bookduck/src/main/resources/mmc-bookduck-ocr.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package com.mmc.bookduck.domain.user.dto.request;

import com.mmc.bookduck.domain.user.entity.RecordFont;
import jakarta.validation.constraints.NotNull;

public record UserSettingUpdateRequestDto(
@NotNull Boolean isPushAlarmEnabled,
@NotNull Boolean isFriendRequestEnabled,
@NotNull RecordFont recordFont
Boolean isPushAlarmEnabled,
Boolean isFriendRequestEnabled,
RecordFont recordFont
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;
import java.util.function.Consumer;

@Service
@Transactional
@RequiredArgsConstructor
Expand Down Expand Up @@ -59,9 +62,16 @@ public void updateUserNickname(UserNicknameRequestDto requestDto) {
public void updateOptions(UserSettingUpdateRequestDto requestDto) {
User user = userService.getCurrentUser();
UserSetting userSetting = getUserSettingByUser(user);
// 트랜잭션 커밋 시 자동 저장
userSetting.updateIsPushAlarmEnabled(requestDto.isPushAlarmEnabled());
userSetting.updateIsFriendRequestEnabled(requestDto.isFriendRequestEnabled());
userSetting.updateRecordFont(requestDto.recordFont());

// null이 아닌 설정 옵션만 업데이트 진행
updateSetting(requestDto.isPushAlarmEnabled(), userSetting::updateIsPushAlarmEnabled);
updateSetting(requestDto.isFriendRequestEnabled(), userSetting::updateIsFriendRequestEnabled);
updateSetting(requestDto.recordFont(), userSetting::updateRecordFont);
userSettingRepository.save(userSetting);
}

// value가 null이 아닐 경우 updateFunction을 실행
private <T> void updateSetting(T value, Consumer<T> updateFunction) {
Optional.ofNullable(value).ifPresent(updateFunction);
}
}
}

0 comments on commit e1ab768

Please sign in to comment.