mirror of
https://github.com/AdrianKuta/android-challange-adrian-kuta.git
synced 2025-07-02 02:07:58 +02:00
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:
@ -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
|
||||||
|
}
|
@ -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
|
||||||
|
)
|
@ -1,6 +0,0 @@
|
|||||||
package dev.adriankuta.flights.domain.types
|
|
||||||
|
|
||||||
data class Character(
|
|
||||||
val name: String,
|
|
||||||
val category: String? = null,
|
|
||||||
)
|
|
@ -0,0 +1,6 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class City(
|
||||||
|
val code: String,
|
||||||
|
val name: String
|
||||||
|
)
|
@ -0,0 +1,6 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class Coordinates(
|
||||||
|
val latitude: Double,
|
||||||
|
val longitude: Double
|
||||||
|
)
|
@ -0,0 +1,7 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class Country(
|
||||||
|
val code: String,
|
||||||
|
val name: String,
|
||||||
|
val currencyCode: String
|
||||||
|
)
|
@ -0,0 +1,7 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class Flight(
|
||||||
|
val currency: String,
|
||||||
|
val currPrecision: Int,
|
||||||
|
val trips: List<Trip>
|
||||||
|
)
|
@ -0,0 +1,5 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class MacCity(
|
||||||
|
val macCode: String
|
||||||
|
)
|
@ -0,0 +1,6 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class Region(
|
||||||
|
val code: String,
|
||||||
|
val name: String
|
||||||
|
)
|
@ -0,0 +1,5 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class RegularFare(
|
||||||
|
val fares: List<TripFare>
|
||||||
|
)
|
@ -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?
|
||||||
|
)
|
@ -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
|
||||||
|
)
|
@ -0,0 +1,7 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class Trip(
|
||||||
|
val dates: List<TripDate>,
|
||||||
|
val origin: String,
|
||||||
|
val destination: String
|
||||||
|
)
|
@ -0,0 +1,6 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class TripDate(
|
||||||
|
val dateOut: String,
|
||||||
|
val flights: List<TripFlight>
|
||||||
|
)
|
@ -0,0 +1,7 @@
|
|||||||
|
package dev.adriankuta.flights.domain.types
|
||||||
|
|
||||||
|
data class TripFare(
|
||||||
|
val type: String,
|
||||||
|
val amount: Double,
|
||||||
|
val count: Int
|
||||||
|
)
|
@ -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
|
||||||
|
)
|
Reference in New Issue
Block a user