rs-basic/members/diesel-demo/src/lib.rs
2024-06-27 14:48:47 +00:00

34 lines
872 B
Rust

pub mod cli;
pub mod models;
pub mod schema;
use self::schema::posts::dsl::*;
use std::env;
use diesel::prelude::*;
use diesel::sqlite::SqliteConnection;
use dotenvy::dotenv;
use libpt::log::error;
pub fn establish_connection() -> anyhow::Result<SqliteConnection> {
dotenv()?;
let database_url = env::var("DATABASE_URL")?;
Ok(SqliteConnection::establish(&database_url)
.inspect_err(|e| error!("Error connecting to {}:\n{e:#?}", database_url))?)
}
pub fn load_all_posts(conn: &mut SqliteConnection) -> anyhow::Result<Vec<models::Post>> {
Ok(posts.select(models::Post::as_select()).load(conn)?)
}
pub fn load_relevant_posts(conn: &mut SqliteConnection) -> anyhow::Result<Vec<models::Post>> {
Ok(posts
.filter(schema::posts::published.eq(true))
.limit(5)
.select(models::Post::as_select())
.load(conn)?)
}