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

[Refactor/#351] WorkBookSubscriberWriter 책임 분리 리펙토링 #352

Merged
merged 7 commits into from
Aug 19, 2024

Conversation

belljun3395
Copy link
Collaborator

🎫 연관 이슈

resolved: #351

💁‍♂️ PR 내용

  • WorkBookSubscriberWriter 책임 분리 리펙토링: 기존 구현의 경우 Writer에서 모든 책임을 수행하고 있어서 분리하는 작업을 진행하였습니다.
  • 로그를 조금 더 구체적으로 남겨지도록 수정하였습니다.
    • as-is memberId : 성공여부
    • to-be memberId: workbookId : 성공여부
스크린샷 2024-08-18 오후 8 44 14

🙏 작업

  • browseXXXService 클래스: 이메일 전송을 위한 데이터 조회를 위한 클래스
  • MailServiceArgsGenerator: 조회한 데이터를 이용하여 이메일 전송을 위한 인자 생성
  • xxxFilter: 이메일 전송 결과에 따라 진행률 업데이트 및 구독 해지 처리를 위한 데이터 생성

🙈 PR 참고 사항

📸 스크린샷

🤖 테스트 체크리스트

  • 체크 미완료
  • 체크 완료

@github-actions github-actions bot added the refactor 기존 기능에 대해 개선할 때 사용됩니다. label Aug 18, 2024
Comment on lines +41 to +46
/** 이메일 전송을 위한 데이터 조회 */
val memberEmailRecords = browseMemberEmailService.execute(memberIds)
val workbooksMappedLastDayCol = browseWorkbookLastDayColService.execute(targetWorkBookIds)
val memberReceiveArticles =
browseMemberReceiveArticlesService.execute(targetWorkBookProgress)
val articleContents = browseArticleContentsService.execute(memberReceiveArticles.getArticleIds())
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

필요한 정보를 조회하는 과정은 browseXXXService로 분리하였습니다.

Comment on lines +49 to +55
val emailServiceArgs = MailServiceArgsGenerator(
LocalDate.now(),
items,
memberEmailRecords,
memberReceiveArticles,
articleContents
).generate()
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

MailServiceArgsGenerator로 MailServiceArgs를 생성하도록 수정하였습니다.

Comment on lines +71 to +83
/** 이메일 전송 결과에 따라 진행률 업데이트 및 구독 해지 처리를 위한 데이터 생성 */
val receiveLastDayRecords =
ReceiveLastArticleRecordFilter(items, workbooksMappedLastDayCol).filter()
.map {
ReceiveLastArticleRecord(it.memberId, it.targetWorkBookId)
}

val receiveLastDayMemberIds = receiveLastDayMembers.map {
it.memberId
val updateTargetMemberRecords = UpdateProgressRecordFilter(
items,
mailSendRecorder.getSuccessMemberIds(),
receiveLastDayRecords.getMemberIds()
).filter().map {
UpdateProgressRecord(it.memberId, it.targetWorkBookId, it.progress)
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

item에서 원하는 결과만 필터링하는 것ㅇ르 xxxFilter 클래스로 분리하였습니다.

val targetWorkBookId: Long,
val progress: Long,
) {
val updatedProgress: Long = progress + 1
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

https://kapentaz.github.io/kotlin/Kotlin%EC%97%90%EC%84%9C-property%EC%99%80-function%EC%9D%98-%EC%82%AC%EC%9A%A9-%EA%B5%AC%EB%B6%84/#

해당 값의 경우 프로퍼티가 적절할 것 같아 프로퍼티로 구현하였습니다.

@belljun3395 belljun3395 merged commit 4b11861 into dev Aug 19, 2024
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactor 기존 기능에 대해 개선할 때 사용됩니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

WorkBookSubscriberWriter 리펙토링 (책임 분리)
1 participant