Skip to content

Commit

Permalink
fix: fix get shared album api to have uniform responseBody data for s…
Browse files Browse the repository at this point in the history
…imilar request
  • Loading branch information
gmkim20713 committed Nov 23, 2024
1 parent 8f92e64 commit 4d62ad3
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public Mono<SharedAlbumResponse> getAlbum(

return albumService
.findAlbumDetailById(albumId, memberId, authorizationToken)
.flatMap(SharedAlbumResponse::fromDto);
.map(SharedAlbumResponse::fromDto);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,33 +35,44 @@ public record SharedAlbumResponse(
@Schema(description = "공유 앨범 사용자 정보 목록")
List<SharedMemberDetailResponse> sharedMembers
) {
public static Mono<SharedAlbumResponse> fromDto(
public static SharedAlbumResponse fromDto(
SharedAlbumDto dto
) {
return Mono.justOrEmpty(dto.sharedMemberDtoFlux())
.flatMap(flux -> flux.map(SharedMemberDetailResponse::fromDto)
.collectList()
.map(sharedMemberList -> new SharedAlbumResponse(
dto.albumId(),
dto.name(),
dto.type(),
dto.photoCount().toString(),
dto.ownerMemberId(),
dto.ownerName(),
dto.ownerProfileImageUrl(),
dto.ownerSerialNumber(),
sharedMemberList
)))
.defaultIfEmpty(new SharedAlbumResponse(
dto.albumId(),
dto.name(),
dto.type(),
dto.photoCount().toString(),
dto.ownerMemberId(),
dto.ownerName(),
dto.ownerProfileImageUrl(),
dto.ownerSerialNumber(),
null
));
// return Mono.justOrEmpty(dto.sharedMemberDtoFlux())
// .flatMap(flux -> flux.map(SharedMemberDetailResponse::fromDto)
// .collectList()
// .map(sharedMemberList -> new SharedAlbumResponse(
// dto.albumId(),
// dto.name(),
// dto.type(),
// dto.photoCount().toString(),
// dto.ownerMemberId(),
// dto.ownerName(),
// dto.ownerProfileImageUrl(),
// dto.ownerSerialNumber(),
// sharedMemberList
// )))
// .defaultIfEmpty(new SharedAlbumResponse(
// dto.albumId(),
// dto.name(),
// dto.type(),
// dto.photoCount().toString(),
// dto.ownerMemberId(),
// dto.ownerName(),
// dto.ownerProfileImageUrl(),
// dto.ownerSerialNumber(),
// null
// ));
return new SharedAlbumResponse(
dto.albumId(),
dto.name(),
dto.type(),
dto.photoCount().toString(),
dto.ownerMemberId(),
dto.ownerName(),
dto.ownerProfileImageUrl(),
dto.ownerSerialNumber(),
dto.sharedMemberDtoList().stream().map(SharedMemberDetailResponse::fromDto).toList()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,18 @@ private Flux<AlbumDto> findSharedAlbumListByMemberId(String memberId, String tok
@Transactional(readOnly = true)
public Mono<SharedAlbumDto> findAlbumDetailById(String albumId, String requestMemberId, String token) {
return albumPermissionVerifier.verifyOwnershipOrAccessPermission(albumId, requestMemberId, VIEW_ACCESS)
.flatMap(album -> {
if(album.getOwnerMemberId().equals(requestMemberId)) {
return Mono.just(SharedAlbumDto.fromOwnedAlbum(album));
} else {
return memberService.getMemberInfoById(album.getOwnerMemberId(), token)
.flatMap(ownerMember -> Mono.just(SharedAlbumDto.fromSharedAlbum(
album,
ownerMember,
findSharedAlbumMemberDetail(albumId, token)
)));
}
}
.flatMap(album -> sharedMemberQuery.findAllByAlbumIdWhereStatusNotRejected(albumId)
.onErrorResume(SharedMemberNotFoundException.class, ex -> Mono.empty())

.flatMap(sharedMember -> memberService.getMemberInfoById(sharedMember.getMemberId(), token)
.map(memberInfo -> SharedMemberDto.fromSharedMember(sharedMember, memberInfo)))
.sort(Comparator.comparing(SharedMemberDto::shareStatus))
.collectList()
.flatMap(sharedMembers -> memberService.getMemberInfoById(album.getOwnerMemberId(), token)
.map(ownerMember -> SharedAlbumDto.fromSharedAlbum(album, ownerMember, sharedMembers))
)

.switchIfEmpty(Mono.just(SharedAlbumDto.fromOwnedAlbum(album)))
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package kr.mafoo.photo.service.dto;

import java.util.List;
import kr.mafoo.photo.domain.AlbumEntity;
import kr.mafoo.photo.domain.enums.AlbumType;
import reactor.core.publisher.Flux;
Expand All @@ -13,7 +14,7 @@ public record SharedAlbumDto(
String ownerName,
String ownerProfileImageUrl,
String ownerSerialNumber,
Flux<SharedMemberDto> sharedMemberDtoFlux
List<SharedMemberDto> sharedMemberDtoList
) {
public static SharedAlbumDto fromOwnedAlbum(
AlbumEntity albumEntity
Expand All @@ -34,7 +35,7 @@ public static SharedAlbumDto fromOwnedAlbum(
public static SharedAlbumDto fromSharedAlbum(
AlbumEntity albumEntity,
MemberDto ownerMemberDto,
Flux<SharedMemberDto> sharedMemberDtoFlux
List<SharedMemberDto> sharedMemberDtoList
) {
return new SharedAlbumDto(
albumEntity.getAlbumId(),
Expand All @@ -45,7 +46,7 @@ public static SharedAlbumDto fromSharedAlbum(
ownerMemberDto.name(),
ownerMemberDto.profileImageUrl(),
ownerMemberDto.serialNumber(),
sharedMemberDtoFlux
sharedMemberDtoList
);
}
}

0 comments on commit 4d62ad3

Please sign in to comment.