(seaorm): Incluye DbType y retoca docs de config

This commit is contained in:
Manuel Cillero 2026-06-02 00:24:45 +02:00
parent 3951f1da1a
commit dfc1bdbc4c
4 changed files with 42 additions and 22 deletions

View file

@ -28,13 +28,13 @@ include_config!(SETTINGS: Settings => [
"bootsier.max_width" => "1440px",
]);
/// Tipos para la sección [`[bootsier]`](Bootsier) de [`SETTINGS`].
/// Ajustes para la sección [`Bootsier`] de [`SETTINGS`].
#[derive(Debug, Deserialize)]
pub struct Settings {
pub bootsier: Bootsier,
}
/// Sección `[bootsier]` de la configuración. Forma parte de [`Settings`].
/// Sección **`[bootsier]`** de la configuración. Forma parte de [`Settings`].
#[derive(Debug, Deserialize)]
pub struct Bootsier {
/// Ancho máximo predeterminado para la página, por ejemplo "100%" o "90rem".

View file

@ -4,12 +4,12 @@
//!
//! ```toml
//! [database]
//! db_type = "mysql"
//! db_type = "postgres"
//! db_name = "db"
//! db_user = "user"
//! db_pass = "password"
//! db_host = "localhost"
//! db_port = 3306
//! db_port = 5432
//! max_pool_size = 5
//! ```
//!
@ -29,25 +29,28 @@ 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_type" => "",
"database.db_name" => "",
"database.db_user" => "",
"database.db_pass" => "",
"database.db_host" => "localhost",
"database.max_pool_size" => 5,
]);
/// Ajustes para la sección [`Database`] de [`SETTINGS`].
#[derive(Debug, Deserialize)]
/// Tipos para la sección [`[database]`](Database) de [`SETTINGS`].
pub struct Settings {
pub database: Database,
}
/// Sección **`[database]`** de la configuración. Forma parte de [`Settings`].
#[derive(Debug, Deserialize)]
/// Sección `[database]` de la configuración. Forma parte de [`Settings`].
pub struct Database {
/// Tipo de base de datos: *"mysql"*, *"postgres"* ó *"sqlite"*.
pub db_type: String,
/// Motor de base de datos.
///
/// Valores aceptados: `"mysql"` (también `"mariadb"`), `"postgres"` (también `"postgresql"`) y
/// `"sqlite"`. Si se omite, la aplicación terminará con un error al arrancar.
pub db_type: DbType,
/// Nombre (para mysql/postgres) o referencia (para sqlite) de la base de datos.
pub db_name: String,
/// Usuario de conexión a la base de datos (para mysql/postgres).
@ -56,9 +59,27 @@ pub struct Database {
pub db_pass: String,
/// Servidor de conexión a la base de datos (para mysql/postgres).
pub db_host: String,
/// Puerto de conexión a la base de datos (para mysql/postgres). Si es `None` se usa el puerto
/// Puerto de conexión a la base de datos (para mysql/postgres). Si se omite, se usa el puerto
/// predeterminado para el motor: 3306 para MySQL y 5432 para PostgreSQL.
pub db_port: Option<u16>,
/// Número máximo de conexiones habilitadas.
pub max_pool_size: u32,
}
/// Motor de base de datos. Usado en el campo [`Database::db_type`] de [`SETTINGS`].
#[derive(Clone, Copy, Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum DbType {
/// Valor por defecto cuando `db_type` no está configurado. En este caso la aplicación terminará
/// con un error al arrancar.
#[serde(rename = "")]
Unset,
/// Usa el motor MySQL. Acepta también el alias `"mariadb"`.
#[serde(alias = "mariadb")]
Mysql,
/// Usa el motor PostgreSQL. Acepta también el alias `"postgresql"`.
#[serde(alias = "postgresql")]
Postgres,
/// Usa el motor SQLite.
Sqlite,
}

View file

@ -234,8 +234,8 @@ pub static CONFIG_VALUES: LazyLock<ConfigBuilder<DefaultState>> = LazyLock::new(
macro_rules! include_config {
( $SETTINGS_NAME:ident : $settings_type:ty => [ $( $k:literal => $v:expr ),* $(,)? ] ) => {
#[doc = concat!(
"Ajustes de configuración y **valores por defecto** para ",
"[`", stringify!($settings_type), "`]."
"Carga [`", stringify!($settings_type), "`] ",
"(y aplica **valores por defecto** en claves no definidas)."
)]
#[doc = ""]
#[doc = "Valores predeterminados que se aplican en ausencia de configuración:"]

View file

@ -44,8 +44,7 @@ include_config!(SETTINGS: Settings => [
// **< Settings >***********************************************************************************
/// Tipos para las secciones globales [`[app]`](App), [`[dev]`](Dev), [`[log]`](Log) y
/// [`[server]`](Server) de [`SETTINGS`].
/// Ajustes para las secciones globales [`App`], [`Dev`], [`Log`] y [`Server`] de [`SETTINGS`].
#[derive(Debug, Deserialize)]
pub struct Settings {
pub app: App,
@ -54,7 +53,7 @@ pub struct Settings {
pub server: Server,
}
/// Sección `[app]` de la configuración. Forma parte de [`Settings`].
/// Sección **`[app]`** de la configuración. Forma parte de [`Settings`].
#[derive(Debug, Deserialize)]
pub struct App {
/// Nombre de la aplicación.
@ -88,7 +87,7 @@ pub struct App {
pub run_mode: String,
}
/// Sección `[dev]` de la configuración. Forma parte de [`Settings`].
/// Sección **`[dev]`** de la configuración. Forma parte de [`Settings`].
#[derive(Debug, Deserialize)]
pub struct Dev {
/// Directorio desde el que servir los archivos estáticos de PageTop.
@ -102,7 +101,7 @@ pub struct Dev {
pub pagetop_static_dir: String,
}
/// Sección `[log]` de la configuración. Forma parte de [`Settings`].
/// Sección **`[log]`** de la configuración. Forma parte de [`Settings`].
#[derive(Debug, Deserialize)]
pub struct Log {
/// Gestión de trazas y registro de eventos activada (*true*) o desactivada (*false*).
@ -122,7 +121,7 @@ pub struct Log {
pub format: LogFormat,
}
/// Sección `[server]` de la configuración. Forma parte de [`Settings`].
/// Sección **`[server]`** de la configuración. Forma parte de [`Settings`].
#[derive(Debug, Deserialize)]
pub struct Server {
/// Dirección de enlace para el servidor web.