(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

@ -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,
}