64 lines
1.5 KiB
Swift
64 lines
1.5 KiB
Swift
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
|
|
}
|
|
}
|
|
|
|
}
|