feat: Minimal user api controller on hummingbird app, not sure there's big wins over vapor.
This commit is contained in:
28
Sources/HApp/Controllers/Api/UserController.swift
Normal file
28
Sources/HApp/Controllers/Api/UserController.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
import DatabaseClient
|
||||
import Hummingbird
|
||||
import HummingbirdFluent
|
||||
import SharedModels
|
||||
|
||||
struct UserController<Context: RequestContext> {
|
||||
let db: DatabaseClient.Users
|
||||
|
||||
func addRoutes(to group: RouterGroup<Context>) {
|
||||
group.get(use: list)
|
||||
.post(use: create)
|
||||
}
|
||||
|
||||
@Sendable
|
||||
func list(_ request: Request, context: Context) async throws -> [User] {
|
||||
try await db.fetchAll()
|
||||
}
|
||||
|
||||
@Sendable
|
||||
func create(_ request: Request, context: Context) async throws -> User {
|
||||
let create = try await request.decode(as: User.Create.self, context: context)
|
||||
let user = try await db.create(create)
|
||||
return user
|
||||
}
|
||||
}
|
||||
|
||||
extension User.Create: ResponseCodable {}
|
||||
extension User: ResponseCodable {}
|
||||
Reference in New Issue
Block a user