Refactor: Update domain types for flight data

This commit refactors the domain types to better represent flight-related data.

Key changes:
- Deleted the unused `Character` data class.
- Introduced new data classes:
    - `Airport`: Represents airport information with sealed subtypes for `Departure`, `Arrival`, and `Connecting` airports.
    - `AirportInfo`: Contains detailed information about an airport, including `City`, `MacCity`, `Region`, `Country`, and `Coordinates`.
    - `City`: Represents city data with code and name.
    - `Coordinates`: Represents geographical coordinates.
    - `Country`: Represents country data including currency code.
    - `Flight`: Top-level data class for flight information, including currency and a list of `Trip` objects.
    - `MacCity`: Represents MAC (Multi-Airport City) code.
    - `Region`: Represents region data.
    - `RegularFare`: Contains a list of `TripFare` objects.
    - `Route`: Defines a flight route with departure, arrival, and optional connecting airports.
    - `Segment`: Represents a flight segment with origin, destination, flight number, dates, and duration.
    - `Trip`: Represents a trip with a list of `TripDate` objects, origin, and destination.
    - `TripDate`: Contains a date and a list of `TripFlight` objects for that date.
    - `TripFare`: Represents a fare type with amount and count.
    - `TripFlight`: Represents a specific flight within a trip, including fare information, segments, and operator.
This commit is contained in:
2025-06-13 12:56:20 +02:00
parent a6202c5383
commit 0fb82d57dd
16 changed files with 128 additions and 6 deletions

View File

@ -0,0 +1,25 @@
package dev.adriankuta.flights.domain.types
sealed interface Airport {
val code: String
val name: String
val macCity: MacCity?
data class Departure(
override val code: String,
override val name: String,
override val macCity: MacCity?
) : Airport
data class Arrival(
override val code: String,
override val name: String,
override val macCity: MacCity?
) : Airport
data class Connecting(
override val code: String,
override val name: String,
override val macCity: MacCity?
) : Airport
}

View File

@ -0,0 +1,14 @@
package dev.adriankuta.flights.domain.types
data class AirportInfo(
val code: String,
val name: String,
val seoName: String,
val isBase: Boolean,
val timeZone: String,
val city: City,
val macCity: MacCity,
val region: Region,
val country: Country,
val coordinates: Coordinates
)

View File

@ -1,6 +0,0 @@
package dev.adriankuta.flights.domain.types
data class Character(
val name: String,
val category: String? = null,
)

View File

@ -0,0 +1,6 @@
package dev.adriankuta.flights.domain.types
data class City(
val code: String,
val name: String
)

View File

@ -0,0 +1,6 @@
package dev.adriankuta.flights.domain.types
data class Coordinates(
val latitude: Double,
val longitude: Double
)

View File

@ -0,0 +1,7 @@
package dev.adriankuta.flights.domain.types
data class Country(
val code: String,
val name: String,
val currencyCode: String
)

View File

@ -0,0 +1,7 @@
package dev.adriankuta.flights.domain.types
data class Flight(
val currency: String,
val currPrecision: Int,
val trips: List<Trip>
)

View File

@ -0,0 +1,5 @@
package dev.adriankuta.flights.domain.types
data class MacCity(
val macCode: String
)

View File

@ -0,0 +1,6 @@
package dev.adriankuta.flights.domain.types
data class Region(
val code: String,
val name: String
)

View File

@ -0,0 +1,5 @@
package dev.adriankuta.flights.domain.types
data class RegularFare(
val fares: List<TripFare>
)

View File

@ -0,0 +1,7 @@
package dev.adriankuta.flights.domain.types
data class Route(
val departureAirport: Airport.Departure,
val arrivalAirport: Airport.Arrival,
val connectingAirport: Airport.Connecting?
)

View File

@ -0,0 +1,9 @@
package dev.adriankuta.flights.domain.types
data class Segment(
val origin: String,
val destination: String,
val flightNumber: String,
val dateTimes: List<String>,
val duration: String
)

View File

@ -0,0 +1,7 @@
package dev.adriankuta.flights.domain.types
data class Trip(
val dates: List<TripDate>,
val origin: String,
val destination: String
)

View File

@ -0,0 +1,6 @@
package dev.adriankuta.flights.domain.types
data class TripDate(
val dateOut: String,
val flights: List<TripFlight>
)

View File

@ -0,0 +1,7 @@
package dev.adriankuta.flights.domain.types
data class TripFare(
val type: String,
val amount: Double,
val count: Int
)

View File

@ -0,0 +1,11 @@
package dev.adriankuta.flights.domain.types
data class TripFlight(
val faresLeft: Int,
val regularFare: RegularFare,
val flightNumber: String,
val dateTimes: List<String>,
val duration: String,
val segments: List<Segment>,
val operatedBy: String
)