AutoCat/AutoCatCore/Models/SwiftData/SDVehicle.swift

119 lines
3.0 KiB
Swift

//
// SDVehicle.swift
// AutoCatCore
//
// Created by Selim Mustafaev on 10.06.2025.
// Copyright © 2025 Selim Mustafaev. All rights reserved.
//
import Foundation
import SwiftData
@Model
final class SDVehicle {
@Relationship(deleteRule: .cascade)
var brand: SDVehicleBrand?
@Relationship(deleteRule: .cascade)
var model: SDVehicleModel?
var color: String?
var year: Int
var category: String?
@Relationship(deleteRule: .cascade)
var engine: SDVehicleEngine?
@Attribute(.unique)
var number: String
var currentNumber: String?
var vin1: String?
var vin2: String?
var sts: String?
var pts: String?
var isRightWheel: Bool?
var isJapanese: Bool?
var addedDate: TimeInterval
var updatedDate: TimeInterval
var addedBy: String
@Relationship(deleteRule: .cascade)
var photos: [SDVehiclePhoto]
@Relationship(deleteRule: .cascade)
var ownershipPeriods: [SDVehicleOwnershipPeriod]
@Relationship(deleteRule: .cascade)
var events: [SDVehicleEvent]
@Relationship(deleteRule: .cascade)
var osagoContracts: [SDOsago]
@Relationship(deleteRule: .cascade)
var ads: [SDVehicleAd]
@Relationship(deleteRule: .cascade)
var notes: [SDVehicleNote]
@Relationship(deleteRule: .cascade)
var debugInfo: SDDebugInfo?
var synchronized: Bool
init(
brand: SDVehicleBrand? = nil,
model: SDVehicleModel? = nil,
color: String? = nil,
year: Int,
category: String? = nil,
engine: SDVehicleEngine? = nil,
number: String,
currentNumber: String? = nil,
vin1: String? = nil,
vin2: String? = nil,
sts: String? = nil,
pts: String? = nil,
isRightWheel: Bool? = nil,
isJapanese: Bool? = nil,
addedDate: TimeInterval,
updatedDate: TimeInterval,
addedBy: String,
photos: [SDVehiclePhoto],
ownershipPeriods: [SDVehicleOwnershipPeriod],
events: [SDVehicleEvent],
osagoContracts: [SDOsago],
ads: [SDVehicleAd],
notes: [SDVehicleNote],
debugInfo: SDDebugInfo? = nil,
synchronized: Bool
) {
self.brand = brand
self.model = model
self.color = color
self.year = year
self.category = category
self.engine = engine
self.number = number
self.currentNumber = currentNumber
self.vin1 = vin1
self.vin2 = vin2
self.sts = sts
self.pts = pts
self.isRightWheel = isRightWheel
self.isJapanese = isJapanese
self.addedDate = addedDate
self.updatedDate = updatedDate
self.addedBy = addedBy
self.photos = photos
self.ownershipPeriods = ownershipPeriods
self.events = events
self.osagoContracts = osagoContracts
self.ads = ads
self.notes = notes
self.debugInfo = debugInfo
self.synchronized = synchronized
}
}