Move redis connection to util/redis.rs
This commit is contained in:
17
src/main.rs
17
src/main.rs
@ -16,10 +16,10 @@ async fn main() {
|
|||||||
use libretunes::util::fileserv::{
|
use libretunes::util::fileserv::{
|
||||||
file_and_error_handler, get_asset_file, get_static_file, AssetType,
|
file_and_error_handler, get_asset_file, get_static_file, AssetType,
|
||||||
};
|
};
|
||||||
|
use libretunes::util::redis::get_redis_pool;
|
||||||
use libretunes::util::require_auth::require_auth_middleware;
|
use libretunes::util::require_auth::require_auth_middleware;
|
||||||
use log::*;
|
use log::*;
|
||||||
use tower_sessions_redis_store::fred;
|
use tower_sessions_redis_store::RedisStore;
|
||||||
use tower_sessions_redis_store::{fred::prelude::*, RedisStore};
|
|
||||||
|
|
||||||
flexi_logger::Logger::try_with_env_or_str("debug")
|
flexi_logger::Logger::try_with_env_or_str("debug")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@ -39,18 +39,7 @@ async fn main() {
|
|||||||
libretunes::util::database::migrate();
|
libretunes::util::database::migrate();
|
||||||
|
|
||||||
debug!("Connecting to Redis...");
|
debug!("Connecting to Redis...");
|
||||||
|
let redis_pool = get_redis_pool();
|
||||||
let redis_url = std::env::var("REDIS_URL").expect("REDIS_URL must be set");
|
|
||||||
let redis_config = fred::types::config::Config::from_url(&redis_url)
|
|
||||||
.unwrap_or_else(|_| panic!("Unable to parse Redis URL: {redis_url}"));
|
|
||||||
let redis_pool = fred::clients::Pool::new(redis_config, None, None, None, 1)
|
|
||||||
.expect("Unable to create Redis pool");
|
|
||||||
redis_pool.connect();
|
|
||||||
redis_pool
|
|
||||||
.wait_for_connect()
|
|
||||||
.await
|
|
||||||
.expect("Unable to connect to Redis");
|
|
||||||
|
|
||||||
let session_store = RedisStore::new(redis_pool);
|
let session_store = RedisStore::new(redis_pool);
|
||||||
let session_layer = SessionManagerLayer::new(session_store);
|
let session_layer = SessionManagerLayer::new(session_store);
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ cfg_if! {
|
|||||||
pub mod fileserv;
|
pub mod fileserv;
|
||||||
pub mod database;
|
pub mod database;
|
||||||
pub mod auth_backend;
|
pub mod auth_backend;
|
||||||
|
pub mod redis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
33
src/util/redis.rs
Normal file
33
src/util/redis.rs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
use leptos::logging::log;
|
||||||
|
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
use std::env;
|
||||||
|
use tower_sessions_redis_store::fred;
|
||||||
|
use tower_sessions_redis_store::fred::prelude::*;
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref REDIS_POOL: fred::clients::Pool = init_redis_pool();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn init_redis_pool() -> fred::clients::Pool {
|
||||||
|
let redis_url = env::var("REDIS_URL").expect("REDIS_URL must be set");
|
||||||
|
|
||||||
|
let redis_config = fred::types::config::Config::from_url(&redis_url)
|
||||||
|
.unwrap_or_else(|_| panic!("Unable to parse Redis URL: {redis_url}"));
|
||||||
|
|
||||||
|
let redis_pool = fred::clients::Pool::new(redis_config, None, None, None, 1)
|
||||||
|
.expect("Unable to create Redis pool");
|
||||||
|
|
||||||
|
log!("Connecting to Redis: {redis_url}");
|
||||||
|
|
||||||
|
redis_pool.connect();
|
||||||
|
redis_pool
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_redis_pool() -> fred::clients::Pool {
|
||||||
|
REDIS_POOL.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_redis_conn() -> fred::clients::Client {
|
||||||
|
REDIS_POOL.next().clone()
|
||||||
|
}
|
Reference in New Issue
Block a user