AutoCat2/AutoCatCore/Models/Vehicle.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
}
}
}