From 7a66dc7ed305d934fc536c0f45e26370980f188a Mon Sep 17 00:00:00 2001 From: Mike Carman Date: Thu, 1 May 2025 11:47:50 -0400 Subject: [PATCH] Changes for Andy --- .../UserInterfaceState.xcuserstate | Bin 57720 -> 70959 bytes .../Controllers/FuelEntryV2Controller.swift | 129 ++++++++++++++++-- Sources/App/Models/FuelEntry.swift | 2 + Sources/App/configure.swift | 2 +- 4 files changed, 123 insertions(+), 10 deletions(-) diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/mcarman.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/mcarman.xcuserdatad/UserInterfaceState.xcuserstate index 947fea3664f4b420ca254a82ae1acab35a5a7659..3691b577cfe8955d9c84445d729e4c9a7702eef8 100644 GIT binary patch literal 70959 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�rjd;KcRP}F#`_EUn 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 V?V$zckt2s!RO#XM_v_Q?{|7_%p|k)1 literal 57720 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 Date? { + fileprivate func parseDate(_ dateString: String, _ start: Bool = true) throws -> Date? { if(dateString.count == 0){ return nil } else { let parts = dateString.split(separator: "-") - let year = Int(parts[0])! - let month = Int(parts[1])! - let day = Int(parts[2])! + if(parts.count != 3) { + throw Abort(.custom(code: 500,reasonPhrase: "Value at path '\(start ? "startdate" : "enddate")' was not of format 'yyyy-MM-dd'. Data found at '\(start ? "startdate" : "enddate")' was not properly formatted.")) + } + let year = Int(parts[0]) ?? nil + if(year == nil) { + throw Abort(.custom(code: 400,reasonPhrase: "Value at path '\(start ? "startdate" : "enddate")' was not of format 'yyyy-MM-dd'. Data found at '\(start ? "startdate" : "enddate")' was not properly formatted. Year component must be in the format yyyy and must be an integer")) + } + let month = Int(parts[1]) ?? nil + if(month == nil) { + throw Abort(.custom(code: 400,reasonPhrase: "Value at path '\(start ? "startdate" : "enddate")' was not of format 'yyyy-MM-dd'. Data found at '\(start ? "startdate" : "enddate")' was not properly formatted. Month component must be in the format MM and must be an integer")) + } + let day = Int(parts[2]) ?? nil + if( day == nil ) { + throw Abort(.custom(code: 400,reasonPhrase: "Value at path '\(start ? "startdate" : "enddate")' was not of format 'yyyy-MM-dd'. Data found at '\(start ? "startdate" : "enddate")' was not properly formatted. Day component must be in the format dd and must be an integer")) + } var dateComponents = DateComponents() dateComponents.year = year dateComponents.month = month @@ -92,6 +104,7 @@ struct FuelEntryV2Controller: RouteCollection { let previous = try qstring.get(Bool?.self, at: "previous") ?? false + var query = FuelEntry.query(on: req.db) if(image){ query = query @@ -135,7 +148,7 @@ struct FuelEntryV2Controller: RouteCollection { query = query.group(.and){ grp in if( startdate != nil) { - grp.filter(\.$loaddate >= startdate!) + grp.filter(\.$loaddate >= startdate) } if( enddate != nil) { grp.filter(\.$loaddate <= enddate!) @@ -167,7 +180,7 @@ struct FuelEntryV2Controller: RouteCollection { return try await wimage.encodeResponse(for: req) } else { let woimage = try await query.paginate(for: req).map{ - img in FuelEntry.woimage(id: img.id, timestamp: img.timestamp, userID: img.userID, latitude: img.latitude, longitutde: img.longitude, product: img.product, make: img.make, model: img.model, serialNumber: img.serialNumber, tankID: img.tankID, fuelAmount: img.fuelAmount, fuelType: img.fuelType, isOverride: img.isOverride, downloaded: img.downloaded == nil ? false : img.downloaded!, loaddate: img.loaddate == nil ? nil : img.loaddate, pulldate: previous == true ? img.pulldate : Date()) + img in FuelEntry.woimage(id: img.id, timestamp: img.timestamp, userID: img.userID, latitude: img.latitude, longitutde: img.longitude, product: img.product, make: img.make, model: img.model, serialNumber: img.serialNumber, tankID: img.tankID, fuelAmount: img.fuelAmount, fuelType: img.fuelType, image: nil, isOverride: img.isOverride, downloaded: img.downloaded == nil ? false : img.downloaded!, loaddate: img.loaddate == nil ? nil : img.loaddate, pulldate: previous == true ? img.pulldate : Date()) } if(!previous) { woimage.items.forEach { @@ -209,7 +222,7 @@ struct FuelEntryV2Controller: RouteCollection { .field(\.$image) .field(\.$downloaded) .field(\.$loaddate) - //.filter(\.$image != nil) + } else { query = query @@ -259,7 +272,7 @@ struct FuelEntryV2Controller: RouteCollection { return try await wimage.encodeResponse(for: req) } else { let woimage = try await query.paginate(for: req).map{ - img in FuelEntry.woimage(id: img.id, timestamp: img.timestamp, userID: img.userID, latitude: img.latitude, longitutde: img.longitude, product: img.product, make: img.make, model: img.model, serialNumber: img.serialNumber, tankID: img.tankID, fuelAmount: img.fuelAmount, fuelType: img.fuelType, isOverride: img.isOverride, downloaded: img.downloaded == nil ? false : img.downloaded!, loaddate: img.loaddate == nil ? nil : img.loaddate, pulldate: Date()) + img in FuelEntry.woimage(id: img.id, timestamp: img.timestamp, userID: img.userID, latitude: img.latitude, longitutde: img.longitude, product: img.product, make: img.make, model: img.model, serialNumber: img.serialNumber, tankID: img.tankID, fuelAmount: img.fuelAmount, fuelType: img.fuelType, image: nil, isOverride: img.isOverride, downloaded: img.downloaded == nil ? false : img.downloaded!, loaddate: img.loaddate == nil ? nil : img.loaddate, pulldate: Date()) } return try await woimage.encodeResponse(for: req) } @@ -282,16 +295,114 @@ struct FuelEntryV2Controller: RouteCollection { try await fuelEntry.delete(on: req.db) return .noContent } + + @Sendable + func getrpm(req: Request) async throws -> Response { + let qstring = req.query + let startdate = try parseDate(qstring.get(String?.self, at: "startdate") ?? "") + let enddate = try parseDate(qstring.get(String?.self, at: "enddate") ?? "", false) + let image = try qstring.get(Bool?.self, at: "image") ?? false + let serial = try qstring.get(String?.self, at: "serial") ?? nil + let tank = try qstring.get(String?.self, at: "tank") ?? nil + let previous = try qstring.get(Bool?.self, at: "previous") ?? false + + + var query = FuelEntry.query(on: req.db) + if(image){ + query = query + .field(\.$id) + .field(\.$timestamp) + .field(\.$userID) + .field(\.$product) + .field(\.$make) + .field(\.$model) + .field(\.$serialNumber) + .field(\.$tankID) + .field(\.$fuelAmount) + .field(\.$fuelType) + .field(\.$isOverride) + .field(\.$latitude) + .field(\.$longitude) + .field(\.$image) + .field(\.$downloaded) + .field(\.$loaddate) + + + } else { + query = query + .field(\.$id) + .field(\.$timestamp) + .field(\.$userID) + .field(\.$product) + .field(\.$make) + .field(\.$model) + .field(\.$serialNumber) + .field(\.$tankID) + .field(\.$fuelAmount) + .field(\.$fuelType) + .field(\.$isOverride) + .field(\.$latitude) + .field(\.$longitude) + .field(\.$downloaded) + .field(\.$loaddate) + } + + query = query.group(.and){ + grp in + if( startdate != nil) { + grp.filter(\.$loaddate >= startdate!) + } + if( enddate != nil) { + grp.filter(\.$loaddate <= enddate!) + } + if( serial != nil) { + grp.filter(\.$serialNumber == serial!) + } + if( tank != nil) { + grp.filter(\.$tankID == tank!) + } + if(!previous){ + grp.filter(\.$pulldate == nil) + } + + } + query = query.sort(\.$loaddate, .ascending).sort(\.$timestamp).sort(\.$serialNumber) + + + + if(image){ + //query = query.filter(\.$image) + let wimage = try await query.paginate(for: req).map{ + img in FuelEntry.wimage(id: img.id, timestamp: img.timestamp, userID: img.userID, latitude: img.latitude, longitutde: img.longitude, product: img.product, make: img.make, model: img.model, serialNumber: img.serialNumber, tankID: img.tankID, fuelAmount: img.fuelAmount, fuelType: img.fuelType, isOverride: img.isOverride, image: img.image == nil ? Data(): img.image, downloaded: img.downloaded == nil ? false : img.downloaded!, loaddate: img.loaddate == nil ? nil : img.loaddate, pulldate: Date()) + + } + return try await wimage.encodeResponse(for: req) + } else { + let woimage = try await query.paginate(for: req).map{ + img in FuelEntry.woimage(id: img.id, timestamp: img.timestamp, userID: img.userID, latitude: img.latitude, longitutde: img.longitude, product: img.product, make: img.make, model: img.model, serialNumber: img.serialNumber, tankID: img.tankID, fuelAmount: img.fuelAmount, fuelType: img.fuelType, image: nil, isOverride: img.isOverride, downloaded: img.downloaded == nil ? false : img.downloaded!, loaddate: img.loaddate == nil ? nil : img.loaddate, pulldate: Date()) + } + return try await woimage.encodeResponse(for: req) + } + } +} + +struct custMeta: Content { + let per: Int + let page: Int + let total: Int + let status: String? } struct PageRequest: Content { var page: Int var size: Int + var status: String? // Add any other properties needed for pagination - init(page: Int, size: Int) { + init(page: Int, size: Int, status: String? = nil) { self.page = page self.size = size + self.status = status } } diff --git a/Sources/App/Models/FuelEntry.swift b/Sources/App/Models/FuelEntry.swift index 12ff4c9..922499a 100755 --- a/Sources/App/Models/FuelEntry.swift +++ b/Sources/App/Models/FuelEntry.swift @@ -24,6 +24,7 @@ final class FuelEntry: Model, Content { let tankID: String let fuelAmount: Double let fuelType: String + let image: Data? let isOverride: Bool let downloaded: Bool? let loaddate: Date? @@ -43,6 +44,7 @@ final class FuelEntry: Model, Content { 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 diff --git a/Sources/App/configure.swift b/Sources/App/configure.swift index 073a191..ffaf095 100755 --- a/Sources/App/configure.swift +++ b/Sources/App/configure.swift @@ -10,7 +10,7 @@ public func configure(_ app: Application) async throws { app.routes.defaultMaxBodySize = "128mb" // let timeout = HTTPClient.Configuration.Timeout(connect: .seconds(300), read: .seconds(300)) // app.http.client.configuration.timeout = timeout - app.databases.use(.postgres(hostname: "127.0.0.1", port: 5432, username: "mcarman", password: "@ng31F@rm0823262", database: "fueling"), as: .psql) + app.databases.use(.postgres(hostname: "127.0.0.1", port: 5433, username: "mcarman", password: "@ng31F@rm0823262", database: "fueling"), as: .psql) // app.databases.use(DatabaseConfigurationFactory.postgres(configuration: .init( // hostname: Environment.get("DATABASE_HOST") ?? "localhost", // port: Environment.get("DATABASE_PORT").flatMap(Int.init(_:)) ?? 5433,