Implementing DtoConvertible for SwiftData models
This commit is contained in:
parent
4037dd9617
commit
df15a154be
@ -39,3 +39,30 @@ final class SDAudioRecord {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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