Skip to main content

kellnr_settings/
postgresql.rs

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