// // FuelEntry.swift // // // Created by Bill Ryckman on 4/24/23. // import Fluent import Vapor final class FuelEntry: Model, Content { static let schema = "fuel_entries" struct woimage: Content{ let id: UUID? let timestamp: Date let userID: String let latitude: Double let longitude: Double let product: String let make: String let model: String let serialNumber: String let tankID: String let fuelAmount: Double let fuelType: String let image: Data? let isOverride: Bool let downloaded: Bool? let loaddate: Date? let pulldate: Date? let useremail: String? func toFuelEntry() -> FuelEntry { let entry = FuelEntry() entry.id = self.id entry.timestamp = self.timestamp entry.userID = self.userID entry.latitude = self.latitude entry.longitude = self.longitude entry.product = self.product entry.make = self.make entry.model = self.model entry.serialNumber = self.serialNumber entry.tankID = self.tankID entry.fuelAmount = self.fuelAmount entry.fuelType = self.fuelType entry.isOverride = self.isOverride entry.image = nil entry.downloaded = self.downloaded entry.loaddate = self.loaddate entry.pulldate = self.pulldate entry._$idExists = self.id == nil ? false : true entry.tabletserial = self.useremail return entry } } struct Output: Content { let id: UUID? let timestamp: Date let ssid: String let latitude: Double let longitude: Double let product: String let make: String let model: String let serialNumber: String let tankID: String let fuelAmount: Double let fuelType: String let isOverride: Bool let image: Data? let loaddate: Date? let useremail: String? } struct wimage: Content{ let id: UUID? let timestamp: Date let userID: String let latitude: Double let longitude: Double let product: String let make: String let model: String let serialNumber: String let tankID: String let fuelAmount: Double let fuelType: String let isOverride: Bool let image: Data? let downloaded: Bool? let loaddate: Date? let pulldate: Date? func toFuelEntry() -> FuelEntry { let entry = FuelEntry() entry.id = self.id entry.timestamp = self.timestamp entry.userID = self.userID entry.latitude = self.latitude entry.longitude = self.longitude entry.product = self.product entry.make = self.make entry.model = self.model entry.serialNumber = self.serialNumber entry.tankID = self.tankID entry.fuelAmount = self.fuelAmount entry.fuelType = self.fuelType entry.isOverride = self.isOverride entry.image = self.image entry.downloaded = self.downloaded entry.loaddate = self.loaddate entry.pulldate = self.pulldate entry._$idExists = self.id == nil ? false : true return entry } } @ID(key: .id) var id: UUID? @Field(key: "timestamp") var timestamp: Date @Field(key: "user_id") var userID: String @Field(key: "latitude") var latitude: Double @Field(key: "longitude") var longitude: Double @Field(key: "image") var image: Data? @Field(key: "product") var product: String @Field(key: "make") var make: String @Field(key: "model") var model: String @Field(key: "serial_number") var serialNumber: String @Field(key: "tank_id") var tankID: String @Field(key: "fuel_amount") var fuelAmount: Double @Field(key: "fuel_type") var fuelType: String @Field(key: "is_override") var isOverride: Bool @Field(key: "downloaded") var downloaded: Bool? @Field(key: "tablet_serial") var tabletserial: String? @Field(key: "app_version") var appVersion: String? @Timestamp(key: "loadDate", on: .create) var loaddate: Date? @Timestamp(key: "pullDate", on: .none) var pulldate: Date? @Field(key: "unique_id") var uniqueID: UUID? // var imageData: Data? init() {} init(id: UUID? = nil, timestamp: Date, userID: String, latitude: Double, longitude: Double, image: Data?, product: String, make: String, model: String, serialNumber: String, tankID: String, fuelAmount: Double, fuelType: String, isOverride: Bool, downloaded: Bool? = nil, tabletserial: String? = nil, appversion: String? = nil, uniqueID: UUID? = nil) { //imageData: Data? self.id = id self.timestamp = timestamp self.userID = userID self.latitude = latitude self.longitude = longitude self.image = image ?? nil self.product = product self.make = make self.model = model self.serialNumber = serialNumber self.tankID = tankID self.fuelAmount = fuelAmount self.fuelType = fuelType self.isOverride = isOverride self.downloaded = downloaded ?? nil self.image = image ?? nil self.tabletserial = tabletserial ?? nil self.appVersion = appversion ?? nil self.uniqueID = uniqueID // self.imageData = imageData } init(id: UUID? = nil, timestamp: Date, userID: String, latitude: Double, longitude: Double, image: Data?, product: String, make: String, model: String, serialNumber: String, tankID: String, fuelAmount: Double, fuelType: String, isOverride: Bool, downloaded: Bool? = nil, tabletserial: String? = nil, uniqueID: UUID? = nil) { //imageData: Data? self.id = id self.timestamp = timestamp self.userID = userID self.latitude = latitude self.longitude = longitude self.image = image ?? nil self.product = product self.make = make self.model = model self.serialNumber = serialNumber self.tankID = tankID self.fuelAmount = fuelAmount self.fuelType = fuelType self.isOverride = isOverride self.downloaded = downloaded ?? nil self.image = image ?? nil self.tabletserial = tabletserial ?? nil self.uniqueID = uniqueID // self.imageData = imageData } init(id: UUID? = nil, timestamp: Date, userID: String, latitude: Double, longitude: Double, image: Data?, product: String, make: String, model: String, serialNumber: String, tankID: String, fuelAmount: Double, fuelType: String, isOverride: Bool, tabletserial: String? = nil, uniqueID: UUID? = nil) { //imageData: Data? self.id = id self.timestamp = timestamp self.userID = userID self.latitude = latitude self.longitude = longitude self.image = image ?? nil self.product = product self.make = make self.model = model self.serialNumber = serialNumber self.tankID = tankID self.fuelAmount = fuelAmount self.fuelType = fuelType self.isOverride = isOverride self.downloaded = downloaded ?? nil self.image = image ?? nil self.tabletserial = tabletserial ?? nil self.uniqueID = uniqueID // self.imageData = imageData } init(id: UUID? = nil, timestamp: Date, userID: String, latitude: Double, longitude: Double, product: String, make: String, model: String, serialNumber: String, tankID: String, fuelAmount: Double, fuelType: String, isOverride: Bool, tabletserial: String? = nil, uniqueID: UUID? = nil) { //imageData: Data? self.id = id self.timestamp = timestamp self.userID = userID self.latitude = latitude self.longitude = longitude self.image = image ?? nil self.product = product self.make = make self.model = model self.serialNumber = serialNumber self.tankID = tankID self.fuelAmount = fuelAmount self.fuelType = fuelType self.isOverride = isOverride self.tabletserial = tabletserial ?? nil self.uniqueID = uniqueID // self.imageData = imageData } // struct V2_1_Input: Content { // var id: UUID? // var tabletSerial: Date? // var fuelAmount: Double? // var fuelType: String? // var timeStamp: Date? // var appVersion: String? // var longitude: String? // var product: String? // var latitude: String? // var serialNumber: String? // var isOverride: Bool? // var make: String? // var model: String? // var tankId: String? // var image: Data? // } init(from decoder: FuelEntry.V2_1_Input) throws { self.id = decoder.id self.timestamp = decoder.timeStamp ?? Date() self.fuelAmount = decoder.fuelAmount ?? 0 self.fuelType = decoder.fuelType ?? "" self.appVersion = decoder.appVersion ?? "" self.longitude = decoder.longitude ?? 0 self.product = decoder.product ?? "" self.latitude = decoder.latitude ?? 0 self.serialNumber = decoder.serialNumber ?? "" self.isOverride = decoder.isOverride ?? false self.make = decoder.make ?? "" self.model = decoder.model ?? "" self.tankID = decoder.tankId ?? "" self.userID = decoder.userId ?? "" self.image = decoder.image self.tabletserial = decoder.tabletSerial ?? "" self.downloaded = false } init(from decoder: FuelEntry.V2_2_Input) { self.id = decoder.id self.timestamp = decoder.timeStamp ?? Date() self.fuelAmount = decoder.fuelAmount ?? 0 self.fuelType = decoder.fuelType ?? "" self.appVersion = decoder.appVersion ?? "" self.longitude = decoder.longitude ?? 0 self.product = decoder.product ?? "" self.latitude = decoder.latitude ?? 0 self.serialNumber = decoder.serialNumber ?? "" self.isOverride = decoder.isOverride ?? false self.make = decoder.make ?? "" self.model = decoder.model ?? "" self.tankID = decoder.tankId ?? "" self.userID = decoder.userId ?? "" self.image = decoder.image self.tabletserial = decoder.tabletSerial ?? "" self.downloaded = false self.uniqueID = decoder.uniqueID == nil ? nil : UUID(uuidString: decoder.uniqueID!) } }