aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Perry <np@nathanperry.dev>2024-05-11 18:08:05 -0400
committerNathan Perry <np@nathanperry.dev>2024-05-11 18:08:05 -0400
commit9bed5aab1239d9902e9282965dd2cdf58cea72b0 (patch)
treefb66aea308a142e605d2646727f74e545e7ba1e8
parent332eff26a0a358eef52c307b02b7e1ac080dd15f (diff)
db: fixup a few trailing issues
-rw-r--r--Cargo.lock1
-rw-r--r--Cargo.toml2
-rw-r--r--src/db/mod.rs34
3 files changed, 22 insertions, 15 deletions
diff --git a/Cargo.lock b/Cargo.lock
index b21c3be..a4e7e87 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1575,6 +1575,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c"
dependencies = [
"bytes",
+ "chrono",
"fallible-iterator",
"postgres-protocol",
]
diff --git a/Cargo.toml b/Cargo.toml
index 24a046c..fa9aac5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -48,7 +48,7 @@ symphonia = { version = "0.5", features = ["all"] }
diesel = { version = "2.1", features = ["chrono"], optional = true }
diesel-async = { version = "0.4", optional = true, features = ["deadpool", "postgres"] }
diesel_async_migrations = { version = "0.12", optional = true }
-tokio-postgres = { version = "0.7", optional = true }
+tokio-postgres = { version = "0.7", optional = true, features = ["with-chrono-0_4"] }
deadpool-postgres = { version = "0.13", optional = true }
[dependencies.serenity]
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(