|
|
|
@ -7,6 +7,7 @@ use crate::{
|
|
|
|
|
};
|
|
|
|
|
use activitypub_federation::{core::object_id::ObjectId, traits::ApubObject};
|
|
|
|
|
use chrono::NaiveDateTime;
|
|
|
|
|
use deadpool::Runtime;
|
|
|
|
|
use diesel::{
|
|
|
|
|
backend::Backend,
|
|
|
|
|
deserialize::FromSql,
|
|
|
|
@ -27,12 +28,13 @@ use diesel_migrations::EmbeddedMigrations;
|
|
|
|
|
use lemmy_utils::{error::LemmyError, settings::structs::Settings};
|
|
|
|
|
use once_cell::sync::Lazy;
|
|
|
|
|
use regex::Regex;
|
|
|
|
|
use std::{env, env::VarError};
|
|
|
|
|
use std::{env, env::VarError, time::Duration};
|
|
|
|
|
use tracing::info;
|
|
|
|
|
use url::Url;
|
|
|
|
|
|
|
|
|
|
const FETCH_LIMIT_DEFAULT: i64 = 10;
|
|
|
|
|
pub const FETCH_LIMIT_MAX: i64 = 50;
|
|
|
|
|
const POOL_TIMEOUT: Option<Duration> = Some(Duration::from_secs(5));
|
|
|
|
|
|
|
|
|
|
pub type DbPool = Pool<AsyncPgConnection>;
|
|
|
|
|
|
|
|
|
@ -135,7 +137,13 @@ async fn build_db_pool_settings_opt(settings: Option<&Settings>) -> Result<DbPoo
|
|
|
|
|
let db_url = get_database_url(settings);
|
|
|
|
|
let pool_size = settings.map(|s| s.database.pool_size).unwrap_or(5);
|
|
|
|
|
let manager = AsyncDieselConnectionManager::<AsyncPgConnection>::new(&db_url);
|
|
|
|
|
let pool = Pool::builder(manager).max_size(pool_size).build()?;
|
|
|
|
|
let pool = Pool::builder(manager)
|
|
|
|
|
.max_size(pool_size)
|
|
|
|
|
.wait_timeout(POOL_TIMEOUT)
|
|
|
|
|
.create_timeout(POOL_TIMEOUT)
|
|
|
|
|
.recycle_timeout(POOL_TIMEOUT)
|
|
|
|
|
.runtime(Runtime::Tokio1)
|
|
|
|
|
.build()?;
|
|
|
|
|
|
|
|
|
|
// If there's no settings, that means its a unit test, and migrations need to be run
|
|
|
|
|
if settings.is_none() {
|
|
|
|
|