Skip to main content

kellnr_settings/
postgresql.rs

1use provcfg::{ClapArgs, Configurable};
2use serde::{Deserialize, Serialize};
3
4fn default_pg_address() -> String {
5    "localhost".to_string()
6}
7
8fn default_pg_db() -> String {
9    "kellnr".to_string()
10}
11
12#[derive(Debug, Deserialize, Serialize, Eq, PartialEq, Clone, Configurable, ClapArgs)]
13#[serde(default)]
14#[configurable(clap_prefix = "postgresql")]
15pub struct Postgresql {
16    /// Use `PostgreSQL` instead of `SQLite`
17    pub enabled: bool,
18
19    /// `PostgreSQL` server address
20    pub address: String,
21
22    /// `PostgreSQL` port
23    pub port: u16,
24
25    /// Database name
26    pub db: String,
27
28    /// Database user
29    pub user: String,
30
31    /// Database password
32    #[serde(skip_serializing, default)]
33    #[configurable(secret)]
34    pub pwd: String,
35
36    /// Raw connection string ("postgres://..."); if present, used instead of the other fields.
37    #[serde(skip_serializing, default)]
38    #[configurable(secret)]
39    pub connection_string: Option<String>,
40}
41
42impl Default for Postgresql {
43    fn default() -> Self {
44        Self {
45            enabled: false,
46            address: default_pg_address(),
47            port: 5432,
48            db: default_pg_db(),
49            user: String::new(),
50            pwd: String::new(),
51            connection_string: None,
52        }
53    }
54}