Files
advotracker_db/src/functions/config.rs
Ralf Zerres dffac8ead2 update functions
* introduce async handling
* use r2d2 as connection handler

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
2021-05-21 12:02:51 +02:00

72 lines
1.9 KiB
Rust

/*
* advotracker - Hotline tackingtool for Advocats
*
* Copyright 2021 Ralf Zerres <ralf.zerres@networkx.de>
* SPDX-License-Identifier: (0BSD or MIT)
*/
//use diesel::debug_query;
use diesel::{
prelude::*,
r2d2::{Builder, ConnectionManager, Pool},
};
use diesel::sqlite::SqliteConnection;
use diesel::sqlite::Sqlite;
use dotenv::dotenv;
use std::env;
/// establish a connection
pub fn establish_connection() -> SqliteConnection {
// load our .env file
dotenv().ok();
// set database_url to the given DATABASE_URL env variable
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
// establish a new SQLite connection (taking the reference from database_url)
SqliteConnection::establish(&database_url)
.unwrap_or_else(|_| panic!("Error connecting to {}", &database_url));
/*
* WIP: integrate tracing!
trace!(
target: "diesel",
type: "Sqlite3",
status: "connected"
);
*/
}
/// establish a connection to a db pool
pub fn build() -> Result<Pool<M>, Error> {
// TODO: consume database_url
// precedence in decreasing order:
// 1: commandline
// 2: env
// 3: user_config
// 4: system_config
// load .env file
dotenv().ok();
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
// establish a new SQLite connection (taking the reference from database_url)
// SqliteConnection::establish(&database_url)
// .unwrap_or_else(|_| panic!("Error connecting to {}", &database_url))
// establish a new connection
let manager = ConnectionManager::<SqliteConnection>::new(&database_url);
let pool = Pool::builder.build(manager)?;
Ok(pool)
}
/// show the sql query
pub fn show_query<T>(query: &T)
where
T: diesel::query_builder::QueryFragment<Sqlite>,
{
dbg!(diesel::debug_query::<Sqlite, _>(&query));
}