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::{
|
||||
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 log::*;
|
||||
use tower_sessions_redis_store::fred;
|
||||
use tower_sessions_redis_store::{fred::prelude::*, RedisStore};
|
||||
use tower_sessions_redis_store::RedisStore;
|
||||
|
||||
flexi_logger::Logger::try_with_env_or_str("debug")
|
||||
.unwrap()
|
||||
@ -39,18 +39,7 @@ async fn main() {
|
||||
libretunes::util::database::migrate();
|
||||
|
||||
debug!("Connecting to Redis...");
|
||||
|
||||
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 redis_pool = get_redis_pool();
|
||||
let session_store = RedisStore::new(redis_pool);
|
||||
let session_layer = SessionManagerLayer::new(session_store);
|
||||
|
||||
|
@ -7,6 +7,7 @@ cfg_if! {
|
||||
pub mod fileserv;
|
||||
pub mod database;
|
||||
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