🚧 Retoques en documentación y código
This commit is contained in:
parent
23d4fd8a80
commit
bd8a34341d
3 changed files with 119 additions and 21 deletions
|
|
@ -16,8 +16,7 @@
|
|||
//! Uso:
|
||||
//!
|
||||
//! ```rust
|
||||
//! use pagetop_seaorm::config;
|
||||
//!
|
||||
//! # use pagetop_seaorm::config;
|
||||
//! assert_eq!(config::SETTINGS.database.db_host, "localhost");
|
||||
//! ```
|
||||
//!
|
||||
|
|
@ -30,12 +29,12 @@ 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.db_type" => "",
|
||||
"database.db_name" => "",
|
||||
"database.db_user" => "",
|
||||
"database.db_pass" => "",
|
||||
"database.db_host" => "localhost",
|
||||
"database.db_port" => 0,
|
||||
"database.max_pool_size" => 5,
|
||||
]);
|
||||
|
||||
|
|
@ -49,24 +48,17 @@ pub struct Settings {
|
|||
/// Sección `[database]` de la configuración. Forma parte de [`Settings`].
|
||||
pub struct Database {
|
||||
/// Tipo de base de datos: *"mysql"*, *"postgres"* ó *"sqlite"*.
|
||||
/// Por defecto: *""*.
|
||||
pub db_type: String,
|
||||
/// Nombre (para mysql/postgres) o referencia (para sqlite) de la base de datos.
|
||||
/// Por defecto: *""*.
|
||||
pub db_name: String,
|
||||
/// Usuario de conexión a la base de datos (para mysql/postgres).
|
||||
/// Por defecto: *""*.
|
||||
pub db_user: String,
|
||||
/// Contraseña para la conexión a la base de datos (para mysql/postgres).
|
||||
/// Por defecto: *""*.
|
||||
pub db_pass: String,
|
||||
/// Servidor de conexión a la base de datos (para mysql/postgres).
|
||||
/// Por defecto: *"localhost"*.
|
||||
pub db_host: String,
|
||||
/// Puerto de conexión a la base de datos, normalmente 3306 (para mysql) ó 5432 (para postgres).
|
||||
/// Por defecto: *0*.
|
||||
pub db_port: u16,
|
||||
/// Número máximo de conexiones habilitadas.
|
||||
/// Por defecto: *5*.
|
||||
pub max_pool_size: u32,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,122 @@
|
|||
/*!
|
||||
<div align="center">
|
||||
|
||||
<h1>PageTop SeaORM</h1>
|
||||
|
||||
<p>Proporciona a <strong>PageTop</strong> acceso basado en <a href="https://www.sea-ql.org/SeaORM">SeaORM</a> a bases de datos relacionales.</p>
|
||||
|
||||
[](https://docs.rs/pagetop-seaorm)
|
||||
[](https://crates.io/crates/pagetop-seaorm)
|
||||
[](https://crates.io/crates/pagetop-seaorm)
|
||||
[](https://git.cillero.es/manuelcillero/pagetop/src/branch/main/extensions/pagetop-seaorm#licencia)
|
||||
|
||||
</div>
|
||||
|
||||
## 🧭 Sobre PageTop
|
||||
|
||||
[PageTop](https://docs.rs/pagetop) es un entorno de desarrollo que reivindica la esencia de la web
|
||||
clásica para crear soluciones web SSR (*renderizadas en el servidor*) modulares, extensibles y
|
||||
configurables, basadas en HTML, CSS y JavaScript.
|
||||
|
||||
|
||||
## ⚡️ Guía rápida
|
||||
|
||||
**Añade la dependencia** a tu `Cargo.toml` activando el motor de base de datos que necesites:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
pagetop-seaorm = { version = "...", features = ["sqlite"] }
|
||||
```
|
||||
|
||||
Las *features* disponibles son `mysql`, `postgres` y `sqlite`.
|
||||
|
||||
**Configura la conexión** en el archivo de configuración de la aplicación:
|
||||
|
||||
```toml
|
||||
[database]
|
||||
db_type = "sqlite"
|
||||
db_name = "my_app.db"
|
||||
max_pool_size = 5
|
||||
```
|
||||
|
||||
Para MySQL o PostgreSQL añade también `db_user`, `db_pass`, `db_host` y `db_port`.
|
||||
|
||||
**Declara la extensión** en tu aplicación o en la extensión que la requiera:
|
||||
|
||||
```rust,no_run
|
||||
use pagetop::prelude::*;
|
||||
|
||||
struct MyApp;
|
||||
|
||||
impl Extension for MyApp {
|
||||
fn dependencies(&self) -> Vec<ExtensionRef> {
|
||||
vec![
|
||||
&pagetop_seaorm::SeaORM,
|
||||
]
|
||||
}
|
||||
|
||||
fn initialize(&self) {
|
||||
install_migrations!(m20240101_000001_create_users_table);
|
||||
}
|
||||
}
|
||||
|
||||
#[pagetop::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
Application::prepare(&MyApp).run()?.await
|
||||
}
|
||||
```
|
||||
|
||||
**Escribe las migraciones** usando la API de SeaORM:
|
||||
|
||||
```rust,no_run
|
||||
use pagetop_seaorm::prelude::*;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.create_table(
|
||||
table_auto(Users::Table)
|
||||
.col(pk_auto(Users::Id))
|
||||
.col(string_uniq(Users::Email))
|
||||
.to_owned(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(DeriveIden)]
|
||||
enum Users {
|
||||
Table,
|
||||
Id,
|
||||
Email,
|
||||
}
|
||||
```
|
||||
*/
|
||||
|
||||
#![doc(
|
||||
html_favicon_url = "https://git.cillero.es/manuelcillero/pagetop/raw/branch/main/static/favicon.ico"
|
||||
)]
|
||||
|
||||
use pagetop::prelude::*;
|
||||
|
||||
include_locales!(LOCALES_SEAORM);
|
||||
|
||||
pub mod config;
|
||||
|
||||
pub mod db;
|
||||
|
||||
/// Preludio de la extensión.
|
||||
/// *Prelude* de la extensión.
|
||||
pub mod prelude {
|
||||
pub use crate::config::*;
|
||||
pub use crate::db::*;
|
||||
pub use crate::install_migrations;
|
||||
}
|
||||
|
||||
include_locales!(LOCALES_SEAORM);
|
||||
|
||||
/// Extensión que integra SeaORM como framework de base de datos para aplicaciones PageTop.
|
||||
/// Implementa la extensión.
|
||||
pub struct SeaORM;
|
||||
|
||||
impl Extension for SeaORM {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue