Skip to content

[feat] 재학 상태 검증 검색 파라미터 변경 반영#4

Merged
snowykte0426 merged 2 commits intomainfrom
feat/student
Mar 9, 2026
Merged

[feat] 재학 상태 검증 검색 파라미터 변경 반영#4
snowykte0426 merged 2 commits intomainfrom
feat/student

Conversation

@snowykte0426
Copy link
Member

Description

서버 PR #211의 학생 조회 API 변경사항을 반영하고, 재학 상태 필터링을 컴파일 타임에 구조적으로 보장하는 Type-State DSL(EnrollmentFilter)을 도입합니다.

기존의 isGraduated 단일 파라미터를 제거하고, onlyEnrolled / includeGraduates / includeWithdrawn 세 파라미터로 세분화된 필터링을 지원합니다. 우선순위를 위반하는 파라미터 조합(예: onlyEnrolled=true + includeGraduates=true)은 타입 시스템을 통해 컴파일 타임에 방지됩니다.

Changes

  • model/EnrollmentFilter.java 신규 추가 — OnlyEnrolled / Detailed 두 경로로 분리된 Type-State DSL
  • client/StudentApi.javaisGraduate 필드·빌더·getter 제거, enrollmentFilter(EnrollmentFilter) 추가
  • client/StudentApiImpl.javaisGraduated 직렬화 로직을 EnrollmentFilter.applyToParams() 위임으로 교체
  • build.gradle.kts — 버전 1.1.11.2.0

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Refactoring
  • Test update

Checklist

  • 코드가 정상적으로 빌드됩니다
  • 관련 테스트를 추가하거나 업데이트했습니다
  • 문서를 업데이트했습니다 (필요한 경우)
  • Breaking change가 있다면 마이그레이션 가이드를 작성했습니다

Breaking Change 마이그레이션 가이드

Before (1.1.1)

new StudentRequest().isGraduate(false)

After (1.2.0)

// 재학생만 조회 (onlyEnrolled)
new StudentRequest().enrollmentFilter(EnrollmentFilter.onlyEnrolled())

// 졸업생 포함 조회
new StudentRequest().enrollmentFilter(
    EnrollmentFilter.detailed().includeGraduates(true)
)

// 서버 기본값 사용 (파라미터 미전송)
new StudentRequest()

EnrollmentFilter.onlyEnrolled()에는 includeGraduates() / includeWithdrawn() 메서드가 존재하지 않으므로, 우선순위를 위반하는 조합은 컴파일 에러로 방지됩니다.

Related Issues

Closes #

@snowykte0426 snowykte0426 merged commit cb2bb02 into main Mar 9, 2026
1 check passed
@snowykte0426 snowykte0426 deleted the feat/student branch March 10, 2026 08:36
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.

2 participants