feat: Minimal user api controller on hummingbird app, not sure there's big wins over vapor.

This commit is contained in:
2025-01-14 09:19:04 -05:00
parent 4f47f1aed8
commit c8bcffa0b5
5 changed files with 105 additions and 30 deletions

View 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 {}