Skip to content

Instantly share code, notes, and snippets.

@willianpinho
Created December 15, 2016 17:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save willianpinho/5e4b5bca8c6ee2189c177df1bef4cf8d to your computer and use it in GitHub Desktop.
Save willianpinho/5e4b5bca8c6ee2189c177df1bef4cf8d to your computer and use it in GitHub Desktop.
Error When I Try to Show Users From Database
import Vapor
import VaporPostgreSQL
let drop = Droplet()
try drop.addProvider(VaporPostgreSQL.Provider)
drop.preparations += User.self
drop.get { req in
return try drop.view.make("welcome", [
"message": drop.localization[req.lang, "welcome", "title"]
])
}
let geral = GeralController()
geral.addRoutes(drop: drop)
let users = UsersController()
drop.resource("users", users)
let views = ViewsController()
views.addRoutes(drop: drop)
drop.get("test") { request in
return try JSON(node: User.all().makeNode())
}
drop.run()
import Vapor
final class User: Model {
var id: Node?
var exists: Bool = false
var name: String
var email: String
var role: String
var cpf: String
var rg: String
var bDay: String
init(name: String, email: String, role: String, cpf: String, rg: String, bDay: String) {
self.id = nil
self.name = name
self.email = email
self.role = role
self.cpf = cpf
self.rg = rg
self.bDay = bDay
}
init(node: Node, in context: Context) throws {
id = try node.extract("id")
name = try node.extract("name")
email = try node.extract("email")
role = try node.extract("role")
cpf = try node.extract("cpf")
rg = try node.extract("rg")
bDay = try node.extract("bDay")
}
func makeNode(context: Context) throws -> Node {
return try Node(node: [
"id": id,
"name": name,
"email": email,
"role": role,
"cpf": cpf,
"rg": rg,
"bDay": bDay
])
}
static func prepare(_ database: Database) throws {
try database.create("users") { users in
users.id()
users.string("name")
users.string("email")
users.string("role")
users.string("cpf")
users.string("rg")
users.string("bDay")
}
}
static func revert(_ database: Database) throws {
try database.delete("users")
}
}
import Vapor
import HTTP
final class UsersController: ResourceRepresentable {
func index(request: Request) throws -> ResponseRepresentable {
return try JSON(node: User.all().makeNode())
}
func create(request: Request) throws -> ResponseRepresentable {
var user = try request.user()
try user.save()
return user
}
func show(request: Request, user: User) throws -> ResponseRepresentable {
return user
}
func update(request: Request, user: User) throws -> ResponseRepresentable {
let new = try request.user()
var user = user
user.name = new.name
user.email = new.email
user.role = new.role
user.cpf = new.cpf
user.rg = new.rg
user.bDay = new.bDay
try user.save()
return user
}
func delete(reques: Request, user: User) throws -> ResponseRepresentable {
try user.delete()
return JSON([:])
}
func makeResource() -> Resource<User> {
return Resource(
index: index,
store: create,
show: show,
modify: update,
destroy: delete
)
}
}
extension Request {
func user() throws -> User {
guard let json = json else { throw Abort.badRequest }
return try User(node: json)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment