lenso-platform-core 0.1.1

Core runtime primitives for the Lenso backend framework.
Documentation
use crate::config::RedisConfig;
use crate::error::{AppError, AppResult, ErrorCode};

pub type RedisConnection = ::redis::aio::ConnectionManager;

pub async fn connect_redis(config: &RedisConfig) -> AppResult<Option<RedisConnection>> {
    let Some(url) = config.url.as_deref() else {
        return Ok(None);
    };

    let client = ::redis::Client::open(url).map_err(map_redis_error)?;
    let connection = ::redis::aio::ConnectionManager::new(client)
        .await
        .map_err(map_redis_error)?;
    Ok(Some(connection))
}

fn map_redis_error(source: ::redis::RedisError) -> AppError {
    AppError::new(ErrorCode::ExternalDependency, "Redis connection failed")
        .with_source(source)
        .retryable()
}