aboutsummaryrefslogtreecommitdiff
path: root/src/db/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/mod.rs')
-rw-r--r--src/db/mod.rs34
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(