pagetop/packages/pagetop-seaorm/src/config.rs

71 lines
1.9 KiB
Rust

//! Opciones de configuración.
//!
//! Example:
//!
//! ```toml
//! [database]
//! db_type = "mysql"
//! db_name = "db"
//! db_user = "user"
//! db_pass = "password"
//! db_host = "localhost"
//! db_port = 3306
//! max_pool_size = 5
//! ```
//!
//! Usage:
//!
//! ```rust
//! use pagetop_seaorm::config;
//!
//! assert_eq!(config::SETTINGS.database.db_host, "localhost");
//! ```
//! See [`pagetop::include_config`] to learn how `PageTop` read configuration files and use
//! settings.
use pagetop::prelude::*;
use serde::Deserialize;
include_config!(SETTINGS: Settings => [
// [database]
"database.db_type" => "",
"database.db_name" => "",
"database.db_user" => "",
"database.db_pass" => "",
"database.db_host" => "localhost",
"database.db_port" => 0,
"database.max_pool_size" => 5,
]);
#[derive(Debug, Deserialize)]
/// Represents configuration settings, specifically the [`[database]`](Database) section (used by
/// [`SETTINGS`]).
pub struct Settings {
pub database: Database,
}
#[derive(Debug, Deserialize)]
/// Represents the `[database]` section in the [`Settings`] type.
pub struct Database {
/// Type of database: *"mysql"*, *"postgres"*, or *"sqlite"*.
/// Default: *""*.
pub db_type: String,
/// Name (for MySQL/Postgres) or reference (for SQLite) of the database.
/// Default: *""*.
pub db_name: String,
/// Username for database connection (for MySQL/Postgres).
/// Default: *""*.
pub db_user: String,
/// Password for database connection (for MySQL/Postgres).
/// Default: *""*.
pub db_pass: String,
/// Hostname for database connection (for MySQL/Postgres).
/// Default: *"localhost"*.
pub db_host: String,
/// Port number for database connection, typically 3306 (MySQL) or 5432 (Postgres).
/// Default: *0*.
pub db_port: u16,
/// Maximum number of allowed connections.
/// Default: *5*.
pub max_pool_size: u32,
}