bubble_db/
config.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct DatabaseConfig {
5    pub database_type: DatabaseType,
6    pub host: String,
7    pub port: u16,
8    pub username: String,
9    pub password: String,
10    pub database: String,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub enum DatabaseType {
15    #[serde(rename = "mysql")]
16    MySql,
17    #[serde(rename = "postgres")]
18    Postgres,
19    #[serde(rename = "sqlite")]
20    Sqlite,
21    #[serde(rename = "redis")]
22    Redis,
23}
24
25impl DatabaseConfig {
26    pub fn connection_string(&self) -> String {
27        match self.database_type {
28            DatabaseType::MySql => format!(
29                "mysql://{}:{}@{}:{}/{}",
30                self.username, self.password, self.host, self.port, self.database
31            ),
32            DatabaseType::Postgres => format!(
33                "postgresql://{}:{}@{}:{}/{}",
34                self.username, self.password, self.host, self.port, self.database
35            ),
36            DatabaseType::Sqlite => self.database.clone(),
37            DatabaseType::Redis => format!(
38                "redis://{}:{}@{}:{}/{}",
39                self.username, self.password, self.host, self.port, self.database
40            ),
41        }
42    }
43}