Skip to main content

dbctl_core/db/
mariadb.rs

1use super::traits::Database;
2
3#[derive(Clone)]
4pub struct MariaDB {
5    pub name: String,
6    pub user: String,
7    pub password: String,
8    pub port: u16,
9    pub db_name: String,
10    pub host: String,
11    pub root_password: String,
12}
13
14impl Database for MariaDB {
15    fn name(&self) -> &str {
16        &self.name
17    }
18
19    fn image(&self) -> &str {
20        "mariadb:10.11"
21    }
22
23    fn port(&self) -> u16 {
24        self.port
25    }
26
27    fn env_vars(&self) -> Vec<(String, String)> {
28        vec![
29            ("MARIADB_USER".into(), self.user.clone()),
30            ("MARIADB_PASSWORD".into(), self.password.clone()),
31            ("MARIADB_DATABASE".into(), self.db_name.clone()),
32            ("MARIADB_ROOT_PASSWORD".into(), self.root_password.clone()),
33        ]
34    }
35
36    fn connection_url(&self) -> String {
37        format!(
38            "mysql://{}:{}@{}:{}/{}",
39            self.user, self.password, self.host, self.port, self.db_name
40        )
41    }
42
43    fn default() -> Self {
44        MariaDB {
45            name: "mariadb-default".to_string(),
46            user: "admin".to_string(),
47            password: "secret".to_string(),
48            port: 3306,
49            db_name: "mydb".to_string(),
50            host: "localhost".to_string(),
51            root_password: "rootsecret".to_string(),
52        }
53    }
54}