Skip to content

세션, 출석, 활동 이력 모델 리팩토링 #187

@devmizz

Description

@devmizz

🗒️ 수정하는 목적이 무엇인가요?

  • 현재 세션, 출석, 활동 이력을 관리하는 도메인 모델이 상황에 따라 다르게 선언되고 사용되어 로직이 흩어져 있음
  • 동일하게 일정을 반환하는 API임에도 어떤 모델을 사용하는지에 따라 다르게 표현되거나 누락되는 문제가 발생
  • 동일한 모델의 사용을 통해 일관성 있는 API 사용 경험 제공
  • 로직을 작성하는 입장에서도 매번 새로운 로직 작성할 필요 없이 공통 처리된 로직을 사용

💡 어떤 걸 수정하나요?

우선 모델을 정리한 뒤, 기존에 흩어져 있던 로직들을 각 모델에서 처리하도록 변경

모델 정리

현재 데이터 구조

현재 데이터는 다음과 같이 구분 되어 있음

  • 활동이력: activity_units
  • 일정: schedules
  • 출석: attendances

모델 정리

  • 기본 모델
    • Player(활동 주체, activity_units를 표현하는 모델)
    • Schedule(일정)
    • Session(세션, 일정 상속)
  • 중간 모델
    • Attendee(참가자, Player <-> Schedule)
  • 파생 모델
    • Attedance(출석, Attendee의 파생)
    • SessionPoster(세션 참가자, 세션1 : 참가자N)
    • AttendanceHistory(개인의 출석 이력, 참가자1 : 세션N)
    • Score(개인의 출석 이력을 기반으로 한 점수판)
    • AttendanceBook(출석부, 기수 전체의 출석 상태 관리)

플로우

Service <-> Find, Command Service <-> Repository

  • Entity와 모델을 변환하는 책임은 Find, Command Service에서 수행
  • Service에서의 로직은 모델로 처리

개선 순서

  1. 모델 선언 및 단위 테스트
  2. Find, CommandService 생성하여 기존 메서드와 동일한 저장, 조회 기능을 수행하는 로직 생성 및 테스트
  3. 서비스 로직 변경 및 단위 테스트

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions