Implementing DtoConvertible for SwiftData models
This commit is contained in:
parent
4037dd9617
commit
df15a154be
@ -39,3 +39,30 @@ final class SDAudioRecord {
|
|||||||
self.event = event
|
self.event = event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDAudioRecord: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: AudioRecordDto {
|
||||||
|
|
||||||
|
AudioRecordDto(
|
||||||
|
path: path,
|
||||||
|
number: number,
|
||||||
|
raw: rawText,
|
||||||
|
addedDate: addedDate,
|
||||||
|
duration: duration,
|
||||||
|
event: event?.dto
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(dto: AudioRecordDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
path: dto.path,
|
||||||
|
number: dto.number,
|
||||||
|
rawText: dto.rawText,
|
||||||
|
addedDate: dto.addedDate,
|
||||||
|
duration: dto.duration,
|
||||||
|
event: SDVehicleEvent(dto: dto.event)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -45,3 +45,49 @@ final class SDDebugInfoEntry {
|
|||||||
self.status = status
|
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
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -50,3 +50,40 @@ final class SDOsago {
|
|||||||
self.birthday = birthday
|
self.birthday = birthday
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDOsago: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: OsagoDto {
|
||||||
|
|
||||||
|
OsagoDto(
|
||||||
|
date: date,
|
||||||
|
number: number,
|
||||||
|
vin: vin,
|
||||||
|
plateNumber: plateNumber,
|
||||||
|
name: name,
|
||||||
|
status: status,
|
||||||
|
restrictions: restrictions,
|
||||||
|
insurant: insurant,
|
||||||
|
owner: owner,
|
||||||
|
usageRegion: usageRegion,
|
||||||
|
birthday: birthday
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(dto: OsagoDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
date: dto.date,
|
||||||
|
number: dto.number,
|
||||||
|
vin: dto.vin,
|
||||||
|
plateNumber: dto.plateNumber,
|
||||||
|
name: dto.name,
|
||||||
|
status: dto.status,
|
||||||
|
restrictions: dto.restrictions,
|
||||||
|
insurant: dto.insurant,
|
||||||
|
owner: dto.owner,
|
||||||
|
usageRegion: dto.usageRegion,
|
||||||
|
birthday: dto.birthday
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -116,3 +116,84 @@ final class SDVehicle {
|
|||||||
self.synchronized = synchronized
|
self.synchronized = synchronized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicle: DtoConvertible {
|
||||||
|
|
||||||
|
var shallowDto: VehicleDto {
|
||||||
|
|
||||||
|
var vehicle = VehicleDto()
|
||||||
|
vehicle.number = self.number
|
||||||
|
vehicle.currentNumber = self.currentNumber
|
||||||
|
vehicle.addedDate = self.addedDate
|
||||||
|
vehicle.updatedDate = self.updatedDate
|
||||||
|
vehicle.brand = self.brand?.dto
|
||||||
|
vehicle.synchronized = self.synchronized
|
||||||
|
|
||||||
|
vehicle.notes = notes.map(\.dto)
|
||||||
|
vehicle.events = events.map(\.dto).sorted { $0.date > $1.date }
|
||||||
|
|
||||||
|
return vehicle
|
||||||
|
}
|
||||||
|
|
||||||
|
var dto: VehicleDto {
|
||||||
|
|
||||||
|
var vehicle = VehicleDto()
|
||||||
|
vehicle.brand = brand?.dto
|
||||||
|
vehicle.model = model?.dto
|
||||||
|
vehicle.color = color
|
||||||
|
vehicle.year = year
|
||||||
|
vehicle.category = category
|
||||||
|
vehicle.engine = engine?.dto
|
||||||
|
vehicle.number = number
|
||||||
|
vehicle.currentNumber = currentNumber
|
||||||
|
vehicle.vin1 = vin1
|
||||||
|
vehicle.vin2 = vin2
|
||||||
|
vehicle.sts = sts
|
||||||
|
vehicle.pts = pts
|
||||||
|
vehicle.isRightWheel = isRightWheel
|
||||||
|
vehicle.isJapanese = isJapanese
|
||||||
|
vehicle.addedDate = addedDate
|
||||||
|
vehicle.updatedDate = updatedDate
|
||||||
|
vehicle.addedBy = addedBy
|
||||||
|
vehicle.photos = photos.map(\.dto)
|
||||||
|
vehicle.ownershipPeriods = ownershipPeriods.map(\.dto)
|
||||||
|
vehicle.events = events.map(\.dto)
|
||||||
|
vehicle.osagoContracts = osagoContracts.map(\.dto)
|
||||||
|
vehicle.ads = ads.map(\.dto)
|
||||||
|
vehicle.notes = notes.map(\.dto)
|
||||||
|
vehicle.debugInfo = debugInfo?.dto
|
||||||
|
vehicle.synchronized = synchronized
|
||||||
|
return vehicle
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(dto: VehicleDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
brand: SDVehicleBrand(dto: dto.brand),
|
||||||
|
model: SDVehicleModel(dto: dto.model),
|
||||||
|
color: dto.color,
|
||||||
|
year: dto.year,
|
||||||
|
category: dto.category,
|
||||||
|
engine: SDVehicleEngine(dto: dto.engine),
|
||||||
|
number: dto.number,
|
||||||
|
currentNumber: dto.currentNumber,
|
||||||
|
vin1: dto.vin1,
|
||||||
|
vin2: dto.vin2,
|
||||||
|
sts: dto.sts,
|
||||||
|
pts: dto.pts,
|
||||||
|
isRightWheel: dto.isRightWheel,
|
||||||
|
isJapanese: dto.isJapanese,
|
||||||
|
addedDate: dto.addedDate,
|
||||||
|
updatedDate: dto.updatedDate,
|
||||||
|
addedBy: dto.addedBy,
|
||||||
|
photos: dto.photos.map(SDVehiclePhoto.init),
|
||||||
|
ownershipPeriods: dto.ownershipPeriods.map(SDVehicleOwnershipPeriod.init),
|
||||||
|
events: dto.events.map(SDVehicleEvent.init),
|
||||||
|
osagoContracts: dto.osagoContracts.map(SDOsago.init),
|
||||||
|
ads: dto.ads.map(SDVehicleAd.init),
|
||||||
|
notes: dto.notes.map(SDVehicleNote.init),
|
||||||
|
debugInfo: SDDebugInfo(dto: dto.debugInfo),
|
||||||
|
synchronized: dto.synchronized
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -44,3 +44,36 @@ final class SDVehicleAd {
|
|||||||
self.photos = photos
|
self.photos = photos
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleAd: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: VehicleAdDto {
|
||||||
|
|
||||||
|
VehicleAdDto(
|
||||||
|
id: id,
|
||||||
|
url: url,
|
||||||
|
price: price,
|
||||||
|
date: date,
|
||||||
|
mileage: mileage,
|
||||||
|
region: region,
|
||||||
|
city: city,
|
||||||
|
adDescription: adDescription,
|
||||||
|
photos: photos
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(dto: VehicleAdDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
id: dto.id,
|
||||||
|
url: dto.url,
|
||||||
|
price: dto.price,
|
||||||
|
date: dto.date,
|
||||||
|
mileage: dto.mileage,
|
||||||
|
region: dto.region,
|
||||||
|
city: dto.city,
|
||||||
|
adDescription: dto.adDescription,
|
||||||
|
photos: dto.photos
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -20,3 +20,19 @@ final class SDVehicleBrand {
|
|||||||
self.logo = logo
|
self.logo = logo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleBrand: DtoConvertible {
|
||||||
|
|
||||||
|
var dto: VehicleBrandDto {
|
||||||
|
|
||||||
|
VehicleBrandDto(name: name?.dto, logo: logo)
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(dto: VehicleBrandDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
name: SDVehicleName(dto: dto.name),
|
||||||
|
logo: dto.logo
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -31,3 +31,28 @@ final class SDVehicleEngine {
|
|||||||
self.fuelType = fuelType
|
self.fuelType = fuelType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleEngine: DtoConvertible {
|
||||||
|
|
||||||
|
var dto: VehicleEngineDto {
|
||||||
|
|
||||||
|
VehicleEngineDto(
|
||||||
|
number: number,
|
||||||
|
volume: volume,
|
||||||
|
powerHp: powerHp,
|
||||||
|
powerKw: powerKw,
|
||||||
|
fuelType: fuelType
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(dto: VehicleEngineDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
number: dto.number,
|
||||||
|
volume: dto.volume,
|
||||||
|
powerHp: dto.powerHp,
|
||||||
|
powerKw: dto.powerKw,
|
||||||
|
fuelType: dto.fuelType
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -37,3 +37,32 @@ final class SDVehicleEvent {
|
|||||||
self.addedBy = addedBy
|
self.addedBy = addedBy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleEvent: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: VehicleEventDto {
|
||||||
|
|
||||||
|
var dto = VehicleEventDto(
|
||||||
|
lat: latitude,
|
||||||
|
lon: longitude,
|
||||||
|
addedBy: addedBy
|
||||||
|
)
|
||||||
|
|
||||||
|
dto.id = id
|
||||||
|
dto.date = date
|
||||||
|
dto.address = address
|
||||||
|
return dto
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(dto: VehicleEventDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
id: dto.id,
|
||||||
|
date: dto.date,
|
||||||
|
latitude: dto.latitude,
|
||||||
|
longitude: dto.longitude,
|
||||||
|
address: dto.address,
|
||||||
|
addedBy: dto.addedBy
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -18,3 +18,16 @@ final class SDVehicleModel {
|
|||||||
self.name = name
|
self.name = name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleModel: DtoConvertible {
|
||||||
|
|
||||||
|
var dto: VehicleModelDto {
|
||||||
|
|
||||||
|
VehicleModelDto(name: name?.dto)
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(dto: VehicleModelDto) {
|
||||||
|
|
||||||
|
self.init(name: SDVehicleName(dto: dto.name))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -19,3 +19,22 @@ final class SDVehicleName {
|
|||||||
self.normalized = normalized
|
self.normalized = normalized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleName: DtoConvertible {
|
||||||
|
|
||||||
|
var dto: VehicleNameDto {
|
||||||
|
|
||||||
|
VehicleNameDto(
|
||||||
|
original: original,
|
||||||
|
normalized: normalized
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(dto: VehicleNameDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
original: dto.original,
|
||||||
|
normalized: dto.normalized
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -31,3 +31,23 @@ final class SDVehicleNote {
|
|||||||
self.text = text
|
self.text = text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleNote: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: VehicleNoteDto {
|
||||||
|
var dto = VehicleNoteDto(text: text, user: user)
|
||||||
|
dto.id = id
|
||||||
|
dto.date = date
|
||||||
|
return dto
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(dto: VehicleNoteDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
id: dto.id,
|
||||||
|
user: dto.user,
|
||||||
|
date: dto.date,
|
||||||
|
text: dto.text
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -49,3 +49,40 @@ final class SDVehicleOwnershipPeriod {
|
|||||||
self.inn = inn
|
self.inn = inn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehicleOwnershipPeriod: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: VehicleOwnershipPeriodDto {
|
||||||
|
|
||||||
|
VehicleOwnershipPeriodDto(
|
||||||
|
lastOperation: lastOperation,
|
||||||
|
ownerType: ownerType,
|
||||||
|
from: from,
|
||||||
|
to: to,
|
||||||
|
region: region,
|
||||||
|
registrationRegion: registrationRegion,
|
||||||
|
locality: locality,
|
||||||
|
code: code,
|
||||||
|
street: street,
|
||||||
|
building: building,
|
||||||
|
inn: inn
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience public init(dto: VehicleOwnershipPeriodDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
lastOperation: dto.lastOperation,
|
||||||
|
ownerType: dto.ownerType,
|
||||||
|
from: dto.from,
|
||||||
|
to: dto.to,
|
||||||
|
region: dto.region,
|
||||||
|
registrationRegion: dto.registrationRegion,
|
||||||
|
locality: dto.locality,
|
||||||
|
code: dto.code,
|
||||||
|
street: dto.street,
|
||||||
|
building: dto.building,
|
||||||
|
inn: dto.inn
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -29,3 +29,26 @@ final class SDVehiclePhoto {
|
|||||||
self.url = url
|
self.url = url
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SDVehiclePhoto: DtoConvertible {
|
||||||
|
|
||||||
|
public var dto: VehiclePhotoDto {
|
||||||
|
|
||||||
|
VehiclePhotoDto(
|
||||||
|
brand: brand,
|
||||||
|
model: model,
|
||||||
|
date: date,
|
||||||
|
url: url
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(dto: VehiclePhotoDto) {
|
||||||
|
|
||||||
|
self.init(
|
||||||
|
brand: dto.brand,
|
||||||
|
model: dto.model,
|
||||||
|
date: dto.date,
|
||||||
|
url: dto.url
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user