Skip to content

Instantly share code, notes, and snippets.

@jsoneaday
Created October 3, 2020 18:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jsoneaday/501bdb4064fac6782b8926f7fd6c96e3 to your computer and use it in GitHub Desktop.
Save jsoneaday/501bdb4064fac6782b8926f7fd6c96e3 to your computer and use it in GitHub Desktop.
View models for GraphQL result
//
// 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