12345678910111213141516171819202122232425262728293031323334 |
- use diesel::result::Error;
- use rocket::http::Status;
- use rocket_contrib::json::Json;
- use rocket_contrib::templates::Template;
- use std::collections::HashMap;
-
- use crate::connection::DbConn;
- use crate::gists;
- use crate::gists::Gist;
-
- fn error_status(error: Error) -> Status {
- match error {
- Error::NotFound => Status::NotFound,
- _ => Status::InternalServerError,
- }
- }
-
- #[get("/")]
- pub fn index(connection: DbConn) -> Result<Json<Vec<Gist>>, Status> {
- gists::all(&connection)
- .map(|gists| Json(gists))
- .map_err(|error| error_status(error))
- }
-
- #[get("/gists/<id>")]
- pub fn show_gist(connection: DbConn, id: i32) -> Template {
- let gist = match gists::get(&connection, id) {
- Ok(gist) => Some(gist),
- Err(_) => None,
- };
- let mut context = HashMap::new();
- context.insert("gist", gist);
- Template::render("gists/show", &context)
- }
|