2020-10-22 00:17:52 +02:00
|
|
|
mod models;
|
|
|
|
mod schema;
|
|
|
|
|
|
|
|
use diesel::prelude::*;
|
|
|
|
use diesel::sqlite::SqliteConnection;
|
|
|
|
use models::*;
|
|
|
|
|
|
|
|
fn establish_connection() -> SqliteConnection {
|
|
|
|
let db_path = "db.sqlite3";
|
|
|
|
SqliteConnection::establish(&db_path)
|
|
|
|
.unwrap_or_else(|_| panic!("Error connection to {}", &db_path))
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn get_posts() -> std::vec::Vec<Post> {
|
|
|
|
use crate::db::schema::posts::dsl::*;
|
|
|
|
let connection = establish_connection();
|
|
|
|
posts
|
|
|
|
.filter(published.eq(true))
|
2020-10-22 00:25:30 +02:00
|
|
|
.limit(5)
|
2020-10-22 00:17:52 +02:00
|
|
|
.load::<Post>(&connection)
|
|
|
|
.expect("Error loading posts")
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn get_post_by_id(id: i32) -> Post {
|
|
|
|
use crate::db::schema::posts::dsl::*;
|
|
|
|
let connection = establish_connection();
|
|
|
|
posts
|
|
|
|
.find(id)
|
|
|
|
.get_result(&connection)
|
|
|
|
.expect("Couldn't find post")
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn add_post(title: &str, body: &str) {
|
|
|
|
use chrono::prelude::*;
|
|
|
|
use schema::posts;
|
|
|
|
|
|
|
|
let connection = establish_connection();
|
|
|
|
|
|
|
|
let new_post = NewPost {
|
|
|
|
title,
|
|
|
|
body,
|
|
|
|
published: &true,
|
|
|
|
publish_date: &Utc::now().naive_utc(),
|
|
|
|
};
|
|
|
|
|
|
|
|
diesel::insert_into(posts::table)
|
|
|
|
.values(&new_post)
|
|
|
|
.execute(&connection)
|
|
|
|
.unwrap_or_else(|_| panic!("Error couldn't insert new Post!"));
|
|
|
|
}
|