diff options
Diffstat (limited to 'src/db/mod.rs')
| -rw-r--r-- | src/db/mod.rs | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/db/mod.rs b/src/db/mod.rs index 5aa0541..336f1f9 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -1,6 +1,7 @@ use std::{ convert::AsRef, env, + str::FromStr, }; use anyhow::anyhow; @@ -40,28 +41,31 @@ use self::schema::*; mod models; mod schema; -const MIGRATIONS: diesel_async_migrations::EmbeddedMigrations = +static MIGRATIONS: diesel_async_migrations::EmbeddedMigrations = diesel_async_migrations::embed_migrations!(); -static MIGRATE: tokio::sync::OnceCell<()> = tokio::sync::OnceCell::new(); lazy_static::lazy_static! { + static ref MIGRATE: tokio::sync::OnceCell<()> = tokio::sync::OnceCell::new(); + static ref DB_URL: String = env::var("DATABASE_URL").expect("no database url in environment"); static ref POOL: Pool<AsyncPgConnection> = { + println!("{}", *DB_URL); let cfg = AsyncDieselConnectionManager::new(DB_URL.clone()); - - let pool = Pool::builder(cfg).build().unwrap(); - - pool + Pool::builder(cfg).build().unwrap() }; static ref RAW_CONN_MGR: RawPgConnMgr = { - deadpool_postgres::Config::new() - .builder(tokio_postgres::NoTls).expect("failed to init config") - .config(PoolConfig::new(8)) - .build().expect("failed to build pool") + let pg_conf = tokio_postgres::Config::from_str(&DB_URL).expect("parsing db url"); + let mgr_conf = deadpool_postgres::ManagerConfig { + recycling_method: deadpool_postgres::RecyclingMethod::Fast, + }; + + let mgr = deadpool_postgres::Manager::from_config(pg_conf, tokio_postgres::NoTls, mgr_conf); + + RawPgConnMgr::builder(mgr).config(PoolConfig::new(8)).build().expect("failed to build pool") }; } @@ -123,7 +127,7 @@ pub async fn query_meme<T: AsRef<str>>( user_id: Option<u64>, age_desc: bool, ) -> Result<Vec<(Meme, Metadata)>> { - let mut raw_conn = raw_connection().await?; + let raw_conn = raw_connection().await?; let search = format!("%{}%", search.as_ref()); @@ -277,8 +281,10 @@ pub async fn rare_meme(conn: &mut AsyncPgConnection, audio: bool) -> Result<Meme return Err(anyhow!("no rare memes found")); } - let mut rng = thread_rng(); - let target_prob = rng.gen_range(0..elems.last().unwrap().1); + let target_prob = { + let mut rng = thread_rng(); + rng.gen_range(0..elems.last().unwrap().1) + }; let meme_id = elems .into_iter() @@ -452,7 +458,7 @@ pub async fn stats(conn: &mut AsyncPgConnection) -> Result<Stats> { .await .map_err(Error::from)?; - let mut raw_conn = raw_connection().await?; + let raw_conn = raw_connection().await?; let row = raw_conn .query_one( |
