dbctl-core 0.1.0

A CLI tool to manage Dockerized databases like PostgreSQL, Redis, and MariaDB
Documentation
use super::traits::Database;

#[derive(Clone)]
pub struct Redis {
    pub name: String,
    pub password: Option<String>,
    pub port: u16,
    pub host: String,
}

impl Database for Redis {
    fn name(&self) -> &str {
        &self.name
    }

    fn image(&self) -> &str {
        "redis:7"
    }

    fn port(&self) -> u16 {
        self.port
    }

    fn env_vars(&self) -> Vec<(String, String)> {
        let mut env_vars = Vec::new();
        
        if let Some(password) = &self.password {
            env_vars.push(("REDIS_PASSWORD".into(), password.clone()));
        }
        
        env_vars
    }

    fn connection_url(&self) -> String {
        match &self.password {
            Some(password) => format!(
                "redis://default:{}@{}:{}",
                password, self.host, self.port
            ),
            None => format!(
                "redis://{}:{}",
                self.host, self.port
            ),
        }
    }

    fn default() -> Self {
        Redis {
            name: "redis-default".to_string(),
            password: Some("redispassword".to_string()),
            port: 6379,
            host: "localhost".to_string(),
        }
    }
}