AutoCat/AutoCatCore/Models/SwiftData/SDDebugInfo.swift

94 lines
2.4 KiB
Swift

//
// SDDebugInfo.swift
// AutoCatCore
//
// Created by Selim Mustafaev on 10.06.2025.
// Copyright © 2025 Selim Mustafaev. All rights reserved.
//
import SwiftData
@Model
final class SDDebugInfo {
@Relationship(deleteRule: .cascade) var autocod: SDDebugInfoEntry?
@Relationship(deleteRule: .cascade) var vin01vin: SDDebugInfoEntry?
@Relationship(deleteRule: .cascade) var vin01base: SDDebugInfoEntry?
@Relationship(deleteRule: .cascade) var vin01history: SDDebugInfoEntry?
@Relationship(deleteRule: .cascade) var nomerogram: SDDebugInfoEntry?
init(
autocod: SDDebugInfoEntry? = nil,
vin01vin: SDDebugInfoEntry? = nil,
vin01base: SDDebugInfoEntry? = nil,
vin01history: SDDebugInfoEntry? = nil,
nomerogram: SDDebugInfoEntry? = nil
) {
self.autocod = autocod
self.vin01vin = vin01vin
self.vin01base = vin01base
self.vin01history = vin01history
self.nomerogram = nomerogram
}
}
@Model
final class SDDebugInfoEntry {
var fields: Int64
var error: String?
var status: Int
init(fields: Int64, error: String? = nil, status: Int) {
self.fields = fields
self.error = error
self.status = status
}
}
extension SDDebugInfo: DtoConvertible {
public var dto: DebugInfoDto {
DebugInfoDto(
autocod: autocod?.dto,
vin01vin: vin01vin?.dto,
vin01base: vin01base?.dto,
vin01history: vin01history?.dto,
nomerogram: nomerogram?.dto
)
}
public convenience init(dto: DebugInfoDto) {
self.init(
autocod: SDDebugInfoEntry(dto: dto.autocod),
vin01vin: SDDebugInfoEntry(dto: dto.vin01vin),
vin01base: SDDebugInfoEntry(dto: dto.vin01base),
vin01history: SDDebugInfoEntry(dto: dto.vin01history),
nomerogram: SDDebugInfoEntry(dto: dto.nomerogram)
)
}
}
extension SDDebugInfoEntry: DtoConvertible {
public var dto: DebugInfoEntryDto {
DebugInfoEntryDto(
fields: fields,
error: error,
status: DebugInfoStatus(rawValue: status) ?? .success
)
}
public convenience init(dto: DebugInfoEntryDto) {
self.init(
fields: dto.fields,
error: dto.error,
status: dto.status.rawValue
)
}
}