first commit
This commit is contained in:
0
Sources/App/Controllers/.gitkeep
Normal file
0
Sources/App/Controllers/.gitkeep
Normal file
29
Sources/App/Controllers/TodoController.swift
Normal file
29
Sources/App/Controllers/TodoController.swift
Normal file
@@ -0,0 +1,29 @@
|
||||
import Fluent
|
||||
import Vapor
|
||||
|
||||
struct TodoController: RouteCollection {
|
||||
func boot(routes: RoutesBuilder) throws {
|
||||
let todos = routes.grouped("todos")
|
||||
todos.get(use: index)
|
||||
todos.post(use: create)
|
||||
todos.group(":todoID") { todo in
|
||||
todo.delete(use: delete)
|
||||
}
|
||||
}
|
||||
|
||||
func index(req: Request) throws -> EventLoopFuture<[Todo]> {
|
||||
return Todo.query(on: req.db).all()
|
||||
}
|
||||
|
||||
func create(req: Request) throws -> EventLoopFuture<Todo> {
|
||||
let todo = try req.content.decode(Todo.self)
|
||||
return todo.save(on: req.db).map { todo }
|
||||
}
|
||||
|
||||
func delete(req: Request) throws -> EventLoopFuture<HTTPStatus> {
|
||||
return Todo.find(req.parameters.get("todoID"), on: req.db)
|
||||
.unwrap(or: Abort(.notFound))
|
||||
.flatMap { $0.delete(on: req.db) }
|
||||
.transform(to: .ok)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user