woowacourse-teams / 2023-festa-go

🎪 페스타고, 대학 축제를 더욱 즐겁게!
71 stars 8 forks source link

[BE] 이미지 URL을 가진 엔티티에 모든 이미지 URL을 반환하는 메서드를 추가한다. #999

Open seokjin8678 opened 5 months ago

seokjin8678 commented 5 months ago

✨ 세부 내용

이미지 URL을 가진 엔티티들에 모든 이미지 URL을 반환하는 메서드를 추가합니다.

이유는 이미지 URL을 사용하는 클라이언트가 대상으로 하는 엔티티의 이미지 URL에 대해 강한 결합을 가지고 있기 때문입니다.

public class AsyncSchoolUploadImagesStatusChangeEventListener {
    ...

    @TransactionalEventListener(value = SchoolCreatedEvent.class, phase = TransactionPhase.AFTER_COMMIT)
    public void changeAttachedStatusSchoolImagesEventHandler(SchoolCreatedEvent event) {
        School school = event.school();
        Long schoolId = school.getId();
        List<String> imageUris = List.of(school.getBackgroundUrl(), school.getLogoUrl());
        uploadFileStatusChangeService.changeAttached(schoolId, SCHOOL, imageUris);
    }

    @TransactionalEventListener(value = SchoolUpdatedEvent.class, phase = TransactionPhase.AFTER_COMMIT)
    public void changeRenewalStatusSchoolImagesEventHandler(SchoolUpdatedEvent event) {
        School school = event.school();
        Long schoolId = school.getId();
        List<String> imageUris = List.of(school.getBackgroundUrl(), school.getLogoUrl());
        uploadFileStatusChangeService.changeRenewal(schoolId, SCHOOL, imageUris);
    }
}

학교가 가진 이미지의 상태를 변경하는 클래스인 AsyncSchoolUploadImagesStatusChangeEventListener의 메서드를 보면, getBackgroundUrl(), getLogoUrl() 같은 메서드를 호출하는 것을 볼 수 있습니다.

그런데 굳이 이런 이미지의 구체적인 형식을 클라이언트는 알 필요가 없습니다. (코드의 중복도 생기는건 덤이구요 😂)

따라서 이미지 URL을 가지는 엔티티에 대해 다음과 같은 메서드를 추가해서 사용하면 좋을 것 같습니다.

public class School {
    ...
    public List<String> getImageUrls() {
        return List.of(backgroundUrl, logoUrl);
    }
    ...
}

⏰ 예상 소요 시간

20분