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,
)

필드

필드타입설명
adultInt성인 수
childInt아동 수
infantInt유아 수
freeBaggageOnlyBoolean무료 수하물 포함 항공편만
cabinsSet<CabinType>좌석 등급
originDestinationLocationInfosList<OriginDestinationLocationInfo>여정 정보
multiTicketMultiTicket?MIX 항공권 정보
useCacheBoolean캐시 사용 여부

계산 프로퍼티

key

val key: String
    get() = originDestinationLocationInfos.joinToString("::") { it.locationInfoKey } +
            "::$adult-$child-$infant::${cabins.joinToString("-")}"

검색 캐시 키 생성.

메서드

validate()

fun validate(bookableDateRange: LongRange)

검색 정보 유효성 검증.

검증 항목:

  1. 예약 가능 날짜 범위
  2. 날짜 순서 (출발일 < 귀국일)
  3. 승객 수 제한
  4. 여정 유효성 (출발지 ≠ 도착지)
  5. 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 지원: 가는편/오는편 분리 검색