use std::time::Duration;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DatabaseKind {
Sqlite,
Postgres,
Mysql,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DatabaseConfig {
pub kind: DatabaseKind,
pub url: String,
pub max_connections: u32,
pub connect_timeout: Duration,
}
impl DatabaseConfig {
pub fn sqlite(url: impl Into<String>) -> Self {
Self {
kind: DatabaseKind::Sqlite,
url: url.into(),
max_connections: 5,
connect_timeout: Duration::from_secs(5),
}
}
pub fn postgres(url: impl Into<String>) -> Self {
Self {
kind: DatabaseKind::Postgres,
url: url.into(),
max_connections: 5,
connect_timeout: Duration::from_secs(5),
}
}
pub fn mysql(url: impl Into<String>) -> Self {
Self {
kind: DatabaseKind::Mysql,
url: url.into(),
max_connections: 5,
connect_timeout: Duration::from_secs(5),
}
}
}
impl Default for DatabaseConfig {
fn default() -> Self {
Self::sqlite("sqlite::memory:")
}
}