Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3차 클론코딩 과제 완료 #16

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

3차 클론코딩 과제 완료 #16

wants to merge 1 commit into from

Conversation

minwoo0419
Copy link
Contributor

@minwoo0419 minwoo0419 commented Jun 1, 2024

이 주의 과제

  • 아이템 이미지 S3 업로드하기
  • 아이템 삭제 시 S3도 같이 삭제해주기

아이템 업로드 시 이미지 함께 업로드 후 S3에 저장

  • request에서 image리스트를 받아오면, 각 이미지들을 S3에 업로드 후 Image 엔티티에 저장시켰습니다.
    @Transactional
    public void createItem(Long memberId, ItemCreateDto itemCreateDto){
        Member member = memberService.findMemberById(memberId);
        Item item = itemRepository.save(Item.create(member, itemCreateDto));
        itemCreateDto.images().forEach(
                image -> {
                    try {
                        String imageUrl = s3Service.uploadImage("items/" + item.getId(), image);
                        imageService.createImage(imageUrl, item);
                    } catch (IOException e) {
                        throw new CustomException(ErrorCode.FAILED_UPLOAD_IMAGE);
                    }
                }
        );
    }

아이템 삭제 시 S3함께 삭제

  • 이미지 삭제 시 삭제할 Item의 id를 이용해 image들을 가져온 후 반복문을 통해서 S3에서 삭제, DB에서도 삭제 해주었습니다.
    @Transactional
    public void deleteItem(Long itemId){
        Item item = findItemById(itemId);
        imageService.findAllByItem(item).forEach(
                image -> {
                    try{
                        s3Service.deleteImage(image.getImageUrl());
                        imageService.removeImage(image);
                    } catch (IOException e) {
                        throw new CustomException(ErrorCode.FAILED_DELETE_IMAGE);
                    }
                }
        );
        itemRepository.delete(item);
    }

요구사항 분석

  1. 아이템 업로드 시, 여러 이미지를 함께 업로드한다.
  2. 아이템을 삭제한다.

구현 고민 사항

질문있어요!

@minwoo0419 minwoo0419 requested a review from sohyundoh June 1, 2024 13:34
@minwoo0419 minwoo0419 self-assigned this Jun 1, 2024
Copy link

@orijoon98 orijoon98 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전반적으로 읽기 좋은 코드였던 것 같아요! 네이밍이나 컨벤션 잘 진행해주신 것 같습니다 :)
코멘트 하나 남겼는데, 무조건 옳다는 아니구 참고만 해주세요.

Comment on lines +32 to +35
String imageUrl = s3Service.uploadImage("items/" + item.getId(), image);
imageService.createImage(imageUrl, item);
} catch (IOException e) {
throw new CustomException(ErrorCode.FAILED_UPLOAD_IMAGE);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

imageService.createImage imageService.deleteImage
두 가지 모두 메서드에서 IOExceptionthrow 하고 있는 것으로 보여요.
크게 문제 될 건 없지만, IOException 자체는 S3Service 내부에서 핸들링하면
다른 서비스에서 해당 메서드를 사용할 때 더욱 편리하게 사용할 수 있어보입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3차 클론코딩 과제
2 participants