feat: Begins implementing dependencies as db controllers.
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import Dependencies
|
||||
import Fluent
|
||||
import Vapor
|
||||
|
||||
struct EmployeeApiController: RouteCollection {
|
||||
|
||||
private let employeeDB = EmployeeDB()
|
||||
@Dependency(\.employees) var employees
|
||||
|
||||
func boot(routes: any RoutesBuilder) throws {
|
||||
let protected = routes.apiProtected(route: "employees")
|
||||
@@ -19,20 +20,20 @@ struct EmployeeApiController: RouteCollection {
|
||||
@Sendable
|
||||
func index(req: Request) async throws -> [Employee.DTO] {
|
||||
let params = try req.query.decode(EmployeesIndexQuery.self)
|
||||
return try await employeeDB.fetchAll(active: params.active, on: req.db)
|
||||
return try await employees.fetchAll(params.active ?? false)
|
||||
}
|
||||
|
||||
@Sendable
|
||||
func create(req: Request) async throws -> Employee.DTO {
|
||||
try Employee.Create.validate(content: req)
|
||||
let create = try req.content.decode(Employee.Create.self)
|
||||
return try await employeeDB.create(create, on: req.db)
|
||||
return try await employees.create(create)
|
||||
}
|
||||
|
||||
@Sendable
|
||||
func get(req: Request) async throws -> Employee.DTO {
|
||||
guard let id = req.parameters.get("employeeID", as: Employee.IDValue.self),
|
||||
let employee = try await employeeDB.get(id: id, on: req.db)
|
||||
let employee = try await employees.get(id)
|
||||
else {
|
||||
throw Abort(.notFound)
|
||||
}
|
||||
@@ -46,7 +47,7 @@ struct EmployeeApiController: RouteCollection {
|
||||
throw Abort(.badRequest, reason: "Employee id value not provided")
|
||||
}
|
||||
let updates = try req.content.decode(Employee.Update.self)
|
||||
return try await employeeDB.update(id: employeeID, with: updates, on: req.db)
|
||||
return try await employees.update(employeeID, updates)
|
||||
}
|
||||
|
||||
@Sendable
|
||||
@@ -54,7 +55,7 @@ struct EmployeeApiController: RouteCollection {
|
||||
guard let employeeID = req.parameters.get("employeeID", as: Employee.IDValue.self) else {
|
||||
throw Abort(.badRequest, reason: "Employee id value not provided")
|
||||
}
|
||||
try await employeeDB.delete(id: employeeID, on: req.db)
|
||||
try await employees.delete(employeeID)
|
||||
return .ok
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user