soph_database/config/
mod.rsuse serde::Deserialize;
#[derive(Debug, Default, Deserialize)]
pub struct Database {
pub url: String,
#[serde(default = "default_migration_path")]
pub migration_path: String,
#[serde(default = "default_model_path")]
pub model_path: String,
#[serde(default = "default_max_connections")]
pub max_connections: u32,
#[serde(default = "default_min_connections")]
pub min_connections: u32,
#[serde(default = "default_connect_timeout")]
pub connect_timeout: u64,
#[serde(default = "default_idle_timeout")]
pub idle_timeout: u64,
#[serde(default = "default_acquire_timeout")]
pub acquire_timeout: u64,
#[serde(default = "default_max_lifetime")]
pub max_lifetime: u64,
#[serde(default)]
pub sqlx_logging: bool,
#[serde(default = "default_sqlx_logging_level")]
pub sqlx_logging_level: LevelFilter,
#[serde(default)]
pub sqlx_slow_statements_logging_level: LevelFilter,
#[serde(default = "default_sqlx_slow_statements_logging_threshold")]
pub sqlx_slow_statements_logging_threshold: u64,
#[serde(default = "default_test_before_acquire")]
pub test_before_acquire: bool,
}
#[derive(Clone, Debug, Default, Deserialize)]
pub enum LevelFilter {
#[serde(rename = "off")]
#[default]
Off,
#[serde(rename = "error")]
Error,
#[serde(rename = "warn")]
Warn,
#[serde(rename = "info")]
Info,
#[serde(rename = "debug")]
Debug,
#[serde(rename = "trace")]
Trace,
}
impl From<LevelFilter> for tracing::log::LevelFilter {
fn from(level: LevelFilter) -> Self {
match level {
LevelFilter::Off => tracing::log::LevelFilter::Off,
LevelFilter::Error => tracing::log::LevelFilter::Error,
LevelFilter::Warn => tracing::log::LevelFilter::Warn,
LevelFilter::Info => tracing::log::LevelFilter::Info,
LevelFilter::Debug => tracing::log::LevelFilter::Debug,
LevelFilter::Trace => tracing::log::LevelFilter::Trace,
}
}
}
fn default_migration_path() -> String {
"database/migrations".to_string()
}
fn default_model_path() -> String {
"app/src/models".to_string()
}
fn default_max_connections() -> u32 {
10
}
fn default_min_connections() -> u32 {
1
}
fn default_connect_timeout() -> u64 {
3 * 1000
}
fn default_idle_timeout() -> u64 {
8 * 1000
}
fn default_acquire_timeout() -> u64 {
3 * 1000
}
fn default_max_lifetime() -> u64 {
8 * 1000
}
fn default_sqlx_logging_level() -> LevelFilter {
LevelFilter::Info
}
fn default_sqlx_slow_statements_logging_threshold() -> u64 {
1000
}
fn default_test_before_acquire() -> bool {
true
}