Created
October 3, 2020 18:34
-
-
Save jsoneaday/501bdb4064fac6782b8926f7fd6c96e3 to your computer and use it in GitHub Desktop.
View models for GraphQL result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Entities.swift | |
// SwiftUI-Gql | |
// | |
// Created by David Choi on 9/19/20. | |
// | |
import Foundation | |
protocol IVehicle { | |
var id: String { get }; | |
var name: String { get }; | |
} | |
protocol IPassengerVehicle { | |
var passengerCount: Int { get }; | |
} | |
protocol IWorkVehicle { | |
var maxPayload: Double { get }; | |
} | |
protocol ILandVehicle { | |
var wheelCount: Int { get }; | |
} | |
class Car: IVehicle, IPassengerVehicle, ILandVehicle, Identifiable { | |
var id: String | |
var name: String | |
var wheelCount: Int | |
var passengerCount: Int | |
init(_ id: String, _ name: String, _ wheelCount: Int, _ passengerCount: Int) { | |
self.id = id | |
self.name = name | |
self.wheelCount = wheelCount | |
self.passengerCount = passengerCount | |
} | |
} | |
class Truck: IVehicle, IWorkVehicle, Identifiable { | |
var id: String | |
var name: String | |
var wheelCount: Int | |
var maxPayload: Double | |
init( | |
_ id: String, | |
_ name: String, | |
_ wheelCount: Int, | |
_ maxPayload: Double | |
) { | |
self.id = id | |
self.name = name | |
self.wheelCount = wheelCount | |
self.maxPayload = maxPayload | |
} | |
} | |
class Boat: IVehicle, IPassengerVehicle, Identifiable { | |
var id: String | |
var name: String | |
var passengerCount: Int | |
init( | |
_ id: String, | |
_ name: String, | |
_ passengerCount: Int | |
) { | |
self.id = id | |
self.name = name | |
self.passengerCount = passengerCount | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment