Skip to main content

dbctl_core/db/
postgres.rs

1use super::traits::Database;
2
3#[derive(Clone)]
4pub struct Postgres {
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}
12
13impl Database for Postgres {
14    fn name(&self) -> &str {
15        &self.name
16    }
17
18    fn image(&self) -> &str {
19        "postgres:15"
20    }
21
22    fn port(&self) -> u16 {
23        self.port
24    }
25
26    fn env_vars(&self) -> Vec<(String, String)> {
27        vec![
28            ("POSTGRES_USER".into(), self.user.clone()),
29            ("POSTGRES_PASSWORD".into(), self.password.clone()),
30            ("POSTGRES_DB".into(), self.db_name.clone()),
31        ]
32    }
33
34    fn connection_url(&self) -> String {
35        format!(
36            "postgres://{}:{}@{}:{}/{}",
37            self.user, self.password, self.host, self.port, self.db_name
38        )
39    }
40
41    fn default() -> Self {
42        Postgres {
43            name: "pg-default".to_string(),
44            user: "admin".to_string(),
45            password: "secret".to_string(),
46
47            port: 5432,
48            db_name: "mypg".to_string(),
49            host: "localhost".to_string(),
50        }
51    }
52}