Skip to content

Commit

Permalink
refactor: add detailed logic for modify album ownership api
Browse files Browse the repository at this point in the history
  • Loading branch information
gmkim20713 committed Nov 23, 2024
1 parent a9378da commit 4308cfa
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package kr.mafoo.photo.exception;

public class AlbumOwnerChangeDeniedException extends DomainException {
public AlbumOwnerChangeDeniedException() {
super(ErrorCode.ALBUM_OWNER_CHANGE_DENIED);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public enum ErrorCode {
ALBUM_NOT_FOUND("AE0001", "์•จ๋ฒ”์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"),
ALBUM_DISPLAY_INDEX_IS_SAME("AE0002", "์˜ฎ๊ธฐ๋ ค๋Š” ๋Œ€์ƒ ์•จ๋ฒ” ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ™์Šต๋‹ˆ๋‹ค"),
ALBUM_OWNER_MISMATCH("AE0003", "์•จ๋ฒ”์˜ ์†Œ์œ ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"),
ALBUM_OWNER_CHANGE_DENIED("AE0004", "๊ณต์œ ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ์†Œ์œ ์ž๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"),

PHOTO_NOT_FOUND("PE0001", "์‚ฌ์ง„์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"),
PHOTO_BRAND_NOT_EXISTS("PE0002", "์‚ฌ์ง„ ๋ธŒ๋žœ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.Comparator;
import kr.mafoo.photo.domain.AlbumEntity;
import kr.mafoo.photo.exception.AlbumNotFoundException;
import kr.mafoo.photo.exception.AlbumOwnerChangeDeniedException;
import kr.mafoo.photo.exception.SharedMemberNotFoundException;
import kr.mafoo.photo.service.dto.AlbumDto;
import kr.mafoo.photo.service.dto.SharedAlbumDto;
Expand All @@ -27,6 +28,7 @@ public class AlbumService {

private final SharedMemberQuery sharedMemberQuery;
private final MemberService memberService;
private final SharedMemberCommand sharedMemberCommand;

@Transactional(readOnly = true)
public Flux<AlbumDto> findAlbumListByMemberId(String memberId, String token) {
Expand Down Expand Up @@ -84,8 +86,14 @@ public Mono<AlbumEntity> modifyAlbumNameAndType(String albumId, String newAlbumN
@Transactional
public Mono<AlbumEntity> modifyAlbumOwnership(String albumId, String newOwnerMemberId, String requestMemberId) {
return albumPermissionVerifier.verifyOwnership(albumId, requestMemberId)
.flatMap(album -> albumCommand.modifyAlbumOwnership(album, newOwnerMemberId)
// TODO : ์•จ๋ฒ” ๋‚ด๋ถ€ ์‚ฌ์ง„ ์†Œ์œ ์ž๋ฅผ ์ƒˆ๋กœ์šด ์•จ๋ฒ” ์†Œ์œ ์ž๋กœ ๋ณ€๊ฒฝ
.flatMap(album -> sharedMemberQuery.findByAlbumIdAndMemberId(albumId, newOwnerMemberId)
.onErrorResume(SharedMemberNotFoundException.class, ex ->
Mono.error(new AlbumOwnerChangeDeniedException())
)
.flatMap(sharedMemberCommand::removeSharedMember)
.then(albumCommand.modifyAlbumOwnership(album, newOwnerMemberId))
.then(sharedMemberCommand.addSharedMember(albumId, String.valueOf(FULL_ACCESS), requestMemberId))
.thenReturn(album)
);
}

Expand Down

0 comments on commit 4308cfa

Please sign in to comment.