dbctl_core/db/
postgres.rs1use 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}