86 lines
2.4 KiB
Swift
86 lines
2.4 KiB
Swift
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<VPhoto>
|
|
@Persisted public var ownershipPeriods: List<VOwnershipPeriod>
|
|
@Persisted public var events: List<VEvent>
|
|
@Persisted public var osagoContracts: List<VOsago>
|
|
@Persisted public var ads: List<VAd>
|
|
@Persisted public var notes: List<VNote>
|
|
@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 }
|
|
}
|
|
|