diff --git a/extensions/pagetop-bootsier/src/config.rs b/extensions/pagetop-bootsier/src/config.rs index 0875d022..14ee27e1 100644 --- a/extensions/pagetop-bootsier/src/config.rs +++ b/extensions/pagetop-bootsier/src/config.rs @@ -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". diff --git a/extensions/pagetop-seaorm/src/config.rs b/extensions/pagetop-seaorm/src/config.rs index b1276c50..e8b119fa 100644 --- a/extensions/pagetop-seaorm/src/config.rs +++ b/extensions/pagetop-seaorm/src/config.rs @@ -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, /// 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, +} diff --git a/src/config.rs b/src/config.rs index 9c687a0f..6faedfeb 100644 --- a/src/config.rs +++ b/src/config.rs @@ -234,8 +234,8 @@ pub static CONFIG_VALUES: LazyLock> = 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:"] diff --git a/src/global.rs b/src/global.rs index 82c89394..2d7b1b60 100644 --- a/src/global.rs +++ b/src/global.rs @@ -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.