29 lines
706 B
Swift
29 lines
706 B
Swift
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 {}
|