added 404 response if a post is not found

pull/1/head
kirbylife 2019-11-23 22:44:11 -06:00
parent ac70178423
commit 0203b88900
1 changed files with 19 additions and 7 deletions

View File

@ -17,6 +17,7 @@ use self::diesel::prelude::*;
use self::models::*; use self::models::*;
use comrak::{markdown_to_html, ComrakOptions}; use comrak::{markdown_to_html, ComrakOptions};
use diesel::pg::PgConnection; use diesel::pg::PgConnection;
use diesel::result::Error;
use dotenv::dotenv; use dotenv::dotenv;
use rand::Rng; use rand::Rng;
use rocket::Request; use rocket::Request;
@ -87,13 +88,13 @@ fn index(page: Option<i8>) -> Template {
Template::render("index", context) Template::render("index", context)
} }
fn get_post(id_number: i32) -> Post { fn get_post(id_number: i32) -> Result<Post, Error> {
use schema::posts::dsl::*; use schema::posts::dsl::*;
let connection = establish_connection(); let connection = establish_connection();
let post = posts.find(id_number).first(&connection); let post = posts.find(id_number).first(&connection);
post.unwrap() post
} }
#[get("/post/<title>")] #[get("/post/<title>")]
@ -107,13 +108,24 @@ fn show_post(title: String) -> Template {
let title_fmt = TITLES[rng.gen_range(0, TITLES.len())]; let title_fmt = TITLES[rng.gen_range(0, TITLES.len())];
let title = str::replace(title_fmt, "{}", "CódigoComentado"); let title = str::replace(title_fmt, "{}", "CódigoComentado");
let mut post = get_post(id); let post = get_post(id);
let content = markdown_to_html(&post.content, &ComrakOptions::default());
post.content = content;
context.insert("title", &title); context.insert("title", &title);
context.insert("post", &post);
Template::render("post", context) match post {
Ok(mut p) => {
let content = markdown_to_html(&p.content, &ComrakOptions::default());
p.content = content;
context.insert("post", &p);
Template::render("post", context)
}
Err(_e) => {
let uri = format!("/post/{}", title_splited.join("-"));
context.insert("url", &uri);
Template::render("404", context)
}
}
} }
#[catch(404)] #[catch(404)]