From 0fb82d57ddb8816b2eabab821ee9b13ff45fe4cd Mon Sep 17 00:00:00 2001 From: Adrian Kuta Date: Fri, 13 Jun 2025 12:56:20 +0200 Subject: [PATCH] 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. --- .../flights/domain/types/Airport.kt | 25 +++++++++++++++++++ .../flights/domain/types/AirportInfo.kt | 14 +++++++++++ .../flights/domain/types/Character.kt | 6 ----- .../adriankuta/flights/domain/types/City.kt | 6 +++++ .../flights/domain/types/Coordinates.kt | 6 +++++ .../flights/domain/types/Country.kt | 7 ++++++ .../adriankuta/flights/domain/types/Flight.kt | 7 ++++++ .../flights/domain/types/MacCity.kt | 5 ++++ .../adriankuta/flights/domain/types/Region.kt | 6 +++++ .../flights/domain/types/RegularFare.kt | 5 ++++ .../adriankuta/flights/domain/types/Route.kt | 7 ++++++ .../flights/domain/types/Segment.kt | 9 +++++++ .../adriankuta/flights/domain/types/Trip.kt | 7 ++++++ .../flights/domain/types/TripDate.kt | 6 +++++ .../flights/domain/types/TripFare.kt | 7 ++++++ .../flights/domain/types/TripFlight.kt | 11 ++++++++ 16 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt delete mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Character.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt create mode 100644 domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt new file mode 100644 index 0000000..f8245a9 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt @@ -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 +} \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt new file mode 100644 index 0000000..0838e3f --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt @@ -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 +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Character.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Character.kt deleted file mode 100644 index 0b60237..0000000 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Character.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.adriankuta.flights.domain.types - -data class Character( - val name: String, - val category: String? = null, -) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt new file mode 100644 index 0000000..a214595 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt @@ -0,0 +1,6 @@ +package dev.adriankuta.flights.domain.types + +data class City( + val code: String, + val name: String +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt new file mode 100644 index 0000000..eacfa6b --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt @@ -0,0 +1,6 @@ +package dev.adriankuta.flights.domain.types + +data class Coordinates( + val latitude: Double, + val longitude: Double +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt new file mode 100644 index 0000000..ee8c476 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt @@ -0,0 +1,7 @@ +package dev.adriankuta.flights.domain.types + +data class Country( + val code: String, + val name: String, + val currencyCode: String +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt new file mode 100644 index 0000000..9462f89 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt @@ -0,0 +1,7 @@ +package dev.adriankuta.flights.domain.types + +data class Flight( + val currency: String, + val currPrecision: Int, + val trips: List +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt new file mode 100644 index 0000000..b686b0e --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt @@ -0,0 +1,5 @@ +package dev.adriankuta.flights.domain.types + +data class MacCity( + val macCode: String +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt new file mode 100644 index 0000000..c5653b7 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt @@ -0,0 +1,6 @@ +package dev.adriankuta.flights.domain.types + +data class Region( + val code: String, + val name: String +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt new file mode 100644 index 0000000..d7df162 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt @@ -0,0 +1,5 @@ +package dev.adriankuta.flights.domain.types + +data class RegularFare( + val fares: List +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt new file mode 100644 index 0000000..e645ab8 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt @@ -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? +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt new file mode 100644 index 0000000..eaef042 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt @@ -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, + val duration: String +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt new file mode 100644 index 0000000..01a76a5 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt @@ -0,0 +1,7 @@ +package dev.adriankuta.flights.domain.types + +data class Trip( + val dates: List, + val origin: String, + val destination: String +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt new file mode 100644 index 0000000..5f50b74 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt @@ -0,0 +1,6 @@ +package dev.adriankuta.flights.domain.types + +data class TripDate( + val dateOut: String, + val flights: List +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt new file mode 100644 index 0000000..d965734 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt @@ -0,0 +1,7 @@ +package dev.adriankuta.flights.domain.types + +data class TripFare( + val type: String, + val amount: Double, + val count: Int +) \ No newline at end of file diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt new file mode 100644 index 0000000..fac4f11 --- /dev/null +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt @@ -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, + val duration: String, + val segments: List, + val operatedBy: String +) \ No newline at end of file