SearchInfo
검색 정보 모델. 검색 요청의 핵심 데이터 구조.
클래스 정의
data class SearchInfo(
val adult: Int,
val child: Int,
val infant: Int,
val freeBaggageOnly: Boolean,
val cabins: Set<CabinType>,
val originDestinationLocationInfos: List<OriginDestinationLocationInfo>,
val multiTicket: MultiTicket? = null,
val useCache: Boolean,
)필드
| 필드 | 타입 | 설명 |
|---|---|---|
adult | Int | 성인 수 |
child | Int | 아동 수 |
infant | Int | 유아 수 |
freeBaggageOnly | Boolean | 무료 수하물 포함 항공편만 |
cabins | Set<CabinType> | 좌석 등급 |
originDestinationLocationInfos | List<OriginDestinationLocationInfo> | 여정 정보 |
multiTicket | MultiTicket? | MIX 항공권 정보 |
useCache | Boolean | 캐시 사용 여부 |
계산 프로퍼티
key
val key: String
get() = originDestinationLocationInfos.joinToString("::") { it.locationInfoKey } +
"::$adult-$child-$infant::${cabins.joinToString("-")}"검색 캐시 키 생성.
메서드
validate()
fun validate(bookableDateRange: LongRange)검색 정보 유효성 검증.
검증 항목:
- 예약 가능 날짜 범위
- 날짜 순서 (출발일 < 귀국일)
- 승객 수 제한
- 여정 유효성 (출발지 ≠ 도착지)
- MIX 검색 조건
getTripType()
fun getTripType(): TripType여정 타입 판별 (ONE_WAY, ROUND_TRIP, MULTI_CITY).
포함 클래스: MultiTicket
data class MultiTicket(
val searchTripDirectionType: SearchTripDirectionType?,
val detailKey: String?,
val promotionPrincipleId: Long?,
val cachedListKey: UUID?,
)MIX 항공권 검색 정보.
특징
- 유효성 검증: validate()로 검색 조건 검증
- 캐시 키 생성: 검색 조건 기반 고유 키
- MIX 지원: 가는편/오는편 분리 검색