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}