Pārlūkot izejas kodu

Added getAllEntriesWithImages to bring down pictures with data if need be. Left default route intact without images.

Added the creation of the image field with the imagePath.
v2_uploadImages
admin pirms 2 gadiem
vecāks
revīzija
934d4d9c25
2 mainītis faili ar 30 papildinājumiem un 5 dzēšanām
  1. +25
    -4
      Sources/App/Controllers/FuelEntryV2Controller.swift
  2. +5
    -1
      Sources/App/Models/FuelEntry.swift

+ 25
- 4
Sources/App/Controllers/FuelEntryV2Controller.swift Parādīt failu

@@ -11,6 +11,7 @@ struct FuelEntryV2Controller: RouteCollection {
func boot(routes: RoutesBuilder) throws { func boot(routes: RoutesBuilder) throws {
let fuelEntries = routes.grouped("fuel_entries") let fuelEntries = routes.grouped("fuel_entries")
fuelEntries.get(use: index) fuelEntries.get(use: index)
fuelEntries.get("with-images", use: getAllEntriesWithImages)
fuelEntries.post(use: create) fuelEntries.post(use: create)
fuelEntries.post("upload-image", use: uploadImage) fuelEntries.post("upload-image", use: uploadImage)
fuelEntries.group(":fuelEntryID") { fuelEntry in fuelEntries.group(":fuelEntryID") { fuelEntry in
@@ -22,11 +23,31 @@ struct FuelEntryV2Controller: RouteCollection {
try await FuelEntry.query(on: req.db).all() try await FuelEntry.query(on: req.db).all()
} }
//Need to create image file path at time of FuelEntry creation. UploadImage to store file appropriately
func getAllEntriesWithImages(req: Request) async throws -> [FuelEntry] {
let fuelEntries = try await FuelEntry.query(on: req.db).all()
for var fuelEntry in fuelEntries {
if let imagePath = fuelEntry.image {
let fileURL = URL(fileURLWithPath: imagePath)
if let imageData = try? Data(contentsOf: fileURL) {
fuelEntry.imageData = imageData
}
}
}
return fuelEntries
}
func create(req: Request) async throws -> [FuelEntry] { func create(req: Request) async throws -> [FuelEntry] {
let fuelEntry = try req.content.decode([FuelEntry].self)
try await fuelEntry.create(on: req.db)
return fuelEntry
var fuelEntries = try req.content.decode([FuelEntry].self)
let directory = DirectoryConfiguration.detect().workingDirectory + "Images/"
for index in fuelEntries.indices {
let imagePath = directory + (fuelEntries[index].id?.uuidString ?? "Unknown") + ".png"
fuelEntries[index].image = imagePath
}
try await fuelEntries.create(on: req.db)
return fuelEntries
} }
func delete(req: Request) async throws -> HTTPStatus { func delete(req: Request) async throws -> HTTPStatus {


+ 5
- 1
Sources/App/Models/FuelEntry.swift Parādīt failu

@@ -52,10 +52,13 @@ final class FuelEntry: Model, Content {


@Field(key: "is_override") @Field(key: "is_override")
var isOverride: Bool var isOverride: Bool
@Field(key: "imageData")
var imageData: Data?


init() {} init() {}


init(id: UUID? = nil, timestamp: Date, userID: String, latitude: Double, longitude: Double, image: String?, product: String, make: String, model: String, serialNumber: String, tankID: String, fuelAmount: Double, fuelType: String, isOverride: Bool) {
init(id: UUID? = nil, timestamp: Date, userID: String, latitude: Double, longitude: Double, image: String?, product: String, make: String, model: String, serialNumber: String, tankID: String, fuelAmount: Double, fuelType: String, isOverride: Bool, imageData: Data?) {
self.id = id self.id = id
self.timestamp = timestamp self.timestamp = timestamp
self.userID = userID self.userID = userID
@@ -70,5 +73,6 @@ final class FuelEntry: Model, Content {
self.fuelAmount = fuelAmount self.fuelAmount = fuelAmount
self.fuelType = fuelType self.fuelType = fuelType
self.isOverride = isOverride self.isOverride = isOverride
self.imageData = imageData
} }
} }

Notiek ielāde…
Atcelt
Saglabāt