mirror of
				https://github.com/AdrianKuta/android-challange-adrian-kuta.git
				synced 2025-10-31 05:43:40 +01: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