import RealmSwift import DifferenceKit public final class Vehicle: Object, Decodable { @Persisted(primaryKey: true) public var number: String @Persisted public var currentNumber: String? @Persisted public var brand: VBrand? @Persisted public var model: VModel? @Persisted public var addedDate: TimeInterval @Persisted public var updatedDate: TimeInterval @Persisted public var color: String? @Persisted public var year: Int64? @Persisted public var category: String? @Persisted public var vin1: String? @Persisted public var vin2: String? @Persisted public var sts: String? @Persisted public var pts: String? @Persisted public var isRightWheel: Bool? @Persisted public var isJapanese: Bool? @Persisted public var addedBy: String? @Persisted public var engine: VEngine? @Persisted public var photos: List @Persisted public var ownershipPeriods: List @Persisted public var events: List @Persisted public var osagoContracts: List @Persisted public var ads: List @Persisted public var notes: List @Persisted public var debugInfo: DebugInfo? public convenience init(number: String, brandName: String, addedDate: TimeInterval, updatedDate: TimeInterval) { self.init() self.number = number self.currentNumber = number self.addedDate = addedDate self.updatedDate = updatedDate let name = VName() name.original = brandName let brand = VBrand() brand.name = name self.brand = brand } public var unrecognized: Bool { return self.brand == nil } public var outdated: Bool { if let current = self.currentNumber { return current != self.number } else { return false } } } extension Vehicle: Dated { public var updatedAt: Date { Date(timeIntervalSince1970: updatedDate) } public var addedAt: Date { Date(timeIntervalSince1970: addedDate) } } extension Vehicle: Differentiable { public var differenceIdentifier: String { number } public func isContentEqual(to source: Vehicle) -> Bool { return number == source.number && addedDate == source.addedDate && updatedDate == source.updatedDate } } extension Vehicle: Identifiable { public var id: String { number } }