Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

43 рядки
1.0 KiB

  1. //
  2. // FuelEntryController.swift
  3. //
  4. //
  5. // Created by Bill Ryckman on 4/24/23.
  6. //
  7. import Vapor
  8. struct FuelEntryController: RouteCollection {
  9. func boot(routes: RoutesBuilder) throws {
  10. let fuelEntries = routes.grouped("fuel_entries")
  11. fuelEntries.get(use: index)
  12. fuelEntries.post(use: create)
  13. fuelEntries.group(":fuelEntryID") { fuelEntry in
  14. fuelEntry.delete(use: delete)
  15. }
  16. }
  17. func index(req: Request) async throws -> [FuelEntry] {
  18. try await FuelEntry.query(on: req.db).all()
  19. }
  20. func create(req: Request) async throws -> [FuelEntry] {
  21. let fuelEntry = try req.content.decode([FuelEntry].self)
  22. try await fuelEntry.create(on: req.db)
  23. return fuelEntry
  24. }
  25. func delete(req: Request) async throws -> HTTPStatus {
  26. guard let fuelEntry = try await FuelEntry.find(req.parameters.get("fuelEntryID"), on: req.db) else {
  27. throw Abort(.notFound)
  28. }
  29. try await fuelEntry.delete(on: req.db)
  30. return .noContent
  31. }
  32. }