import Foundation import CoreData import DifferenceKit public struct Vehicle: Decodable { public let number: String public let currentNumber: String? public let brand: VBrand? public let addedDate: TimeInterval public let updatedDate: TimeInterval } extension CDVehicle: Dated { public var updatedAt: Date { Date(timeIntervalSince1970: updatedDate) } public var addedAt: Date { Date(timeIntervalSince1970: addedDate) } } extension CDVehicle: Differentiable { public var differenceIdentifier: String { number! } public func isContentEqual(to source: CDVehicle) -> Bool { return number == source.number && addedDate == source.addedDate && updatedDate == source.updatedDate } } extension CDVehicle { convenience init(vehicle: Vehicle, context: NSManagedObjectContext) { self.init(context: context) self.number = vehicle.number self.currentNumber = vehicle.currentNumber self.addedDate = vehicle.addedDate/1000 self.updatedDate = vehicle.updatedDate/1000 if let vbrand = vehicle.brand { self.brand = CDVBrand(vbrand: vbrand, context: context) } } public var unrecognized: Bool { return self.brand == nil } public var outdated: Bool { if let current = self.currentNumber { return current != self.number } else { return false } } }