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 comrak::{markdown_to_html, ComrakOptions};
use diesel::pg::PgConnection;
use diesel::result::Error;
use dotenv::dotenv;
use rand::Rng;
use rocket::Request;
@ -87,13 +88,13 @@ fn index(page: Option<i8>) -> Template {
Template::render("index", context)
}
fn get_post(id_number: i32) -> Post {
fn get_post(id_number: i32) -> Result<Post, Error> {
use schema::posts::dsl::*;
let connection = establish_connection();
let post = posts.find(id_number).first(&connection);
post.unwrap()
post
}
#[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 = str::replace(title_fmt, "{}", "CódigoComentado");
let mut post = get_post(id);
let content = markdown_to_html(&post.content, &ComrakOptions::default());
post.content = content;
let post = get_post(id);
context.insert("title", &title);
context.insert("post", &post);
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)]