use rocket; use rocket::request::Form; use rocket::response::{Flash, Redirect}; use utils; #[derive(BartDisplay)] #[template = "templates/users.html"] pub struct UsersTemplate { users: Vec<::models::User> } implement_responder_for!(UsersTemplate); #[get("/", format = "text/html")] fn index(conn: utils::DbConn) -> utils::Page { utils::Page { title: String::from("Users"), flash: None, content: UsersTemplate { users: ::models::User::all(conn).unwrap() } } } #[derive(BartDisplay)] #[template = "templates/new_user.html"] pub struct NewUserTemplate { user: ::models::NewUser } implement_responder_for!(NewUserTemplate); #[get("/new", format = "text/html")] fn new() -> utils::Page { utils::Page { title: String::from("New user"), flash: None, content: NewUserTemplate { user: Default::default() } } } #[post("/create", data="")] fn create(user: Form<::models::NewUser>, conn: utils::DbConn) -> Flash { match ::models::User::create(user.get(), conn) { Ok(_) => Flash::success(Redirect::to("/"), "User successfully created!"), Err(_) => Flash::error(Redirect::to("/"), "Could not create user!") } } pub fn routes() -> Vec { routes![index, new, create] }