Created
December 15, 2016 17:20
-
-
Save willianpinho/5e4b5bca8c6ee2189c177df1bef4cf8d to your computer and use it in GitHub Desktop.
Error When I Try to Show Users From Database
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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") | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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