Structure files according to MVC

master
fernando 2024-02-13 11:30:46 -05:00
parent 7f42e04494
commit fc9d7059f4
8 changed files with 74 additions and 53 deletions

12
Cargo.lock generated
View File

@ -351,7 +351,6 @@ version = "0.1.0"
dependencies = [
"maud",
"rocket",
"rocket_session",
"serde",
"sqlx",
]
@ -1430,17 +1429,6 @@ dependencies = [
"uncased",
]
[[package]]
name = "rocket_session"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a1a0f6637aba596ac1975584479638b9350d54187f4c745584d046b3dd1ea6f"
dependencies = [
"parking_lot",
"rand",
"rocket",
]
[[package]]
name = "rsa"
version = "0.9.6"

View File

@ -8,6 +8,5 @@ edition = "2021"
[dependencies]
maud = { version = "0.26.0", features = ["rocket"] }
rocket = "0.5.0"
rocket_session = "0.3.0"
serde = "1.0.196"
sqlx = { version = "0.7.3", features = ["postgres"] }

View File

@ -1,3 +1,10 @@
use maud::Markup;
pub mod user;
pub mod register;
#[get("/")]
pub fn index() -> Markup {
crate::view::login::login()
}

View File

@ -0,0 +1,6 @@
use maud::Markup;
#[get("/register")]
pub fn get() -> Markup {
crate::view::register::register()
}

View File

@ -11,7 +11,8 @@ extern crate rocket;
fn rocket() -> _ {
rocket::build()
.mount("/", routes![
view::index,
controller::index,
])
.mount("/f", routes![
controller::user::create_user,

9
src/view/login.rs Normal file
View File

@ -0,0 +1,9 @@
use maud::{html, Markup};
use super::default_skeleton;
pub fn login() -> Markup {
default_skeleton(html! {
"TODO"
})
}

View File

@ -1,9 +1,10 @@
use maud::{html, Markup, DOCTYPE};
mod fragments;
pub mod fragments;
pub mod login;
pub mod register;
#[get("/")]
pub fn index() -> Markup {
pub fn default_skeleton(content: Markup) -> Markup {
html! {
(DOCTYPE)
html lang="es" {
@ -18,42 +19,7 @@ pub fn index() -> Markup {
script defer src="https://unpkg.com/htmx.org/dist/ext/loading-states.js" {}
}
body hx-ext="response-targets, class-tools, loading-states" {
h1 { "Registrar nuevo usuario" }
div
x-data="{user_name: '', user_surname: '', user_email: '', user_password: ''}"
{
form
hx-post="/f/user"
hx-target="#user_create_response"
hx-target-400="#user_create_response"
hx-swap="outerHTML"
{
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="text" name="user_name" placeholder="Nombres"
data-loading-disable x-model="user_name";
br;
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="text" name="user_surname" placeholder="Apellidos"
data-loading-disable x-model="user_surname";
br;
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="email" name="user_email" placeholder="Correo electrónico"
data-loading-disable x-model="user_email";
br;
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="password" name="user_password" placeholder="Contraseña"
data-loading-disable x-model="user_password";
br;
button
class="bg-pink-300 text-black py-2 px-4 rounded-full cursor-pointer inline-block my-2 disabled:opacity-50"
data-loading-class="animate-pulse" type="submit"
{
"Registrar"
}
}
br;
div id="user_create_response" {}
}
(content)
}
}
}

45
src/view/register.rs Normal file
View File

@ -0,0 +1,45 @@
use maud::{html, Markup};
use super::default_skeleton;
pub fn register() -> Markup {
default_skeleton(html! {
h1 { "Registrar nuevo usuario" }
div
x-data="{user_name: '', user_surname: '', user_email: '', user_password: ''}"
{
form
hx-post="/f/user"
hx-target="#user_create_response"
hx-target-400="#user_create_response"
hx-swap="outerHTML"
{
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="text" name="user_name" placeholder="Nombres"
data-loading-disable x-model="user_name";
br;
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="text" name="user_surname" placeholder="Apellidos"
data-loading-disable x-model="user_surname";
br;
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="email" name="user_email" placeholder="Correo electrónico"
data-loading-disable x-model="user_email";
br;
input class="bg-c-bg text-c-on-bg border border-c-on-bg disabled:opacity-50"
required type="password" name="user_password" placeholder="Contraseña"
data-loading-disable x-model="user_password";
br;
button
class="bg-pink-300 text-black py-2 px-4 rounded-full cursor-pointer inline-block my-2 disabled:opacity-50"
data-loading-class="animate-pulse" type="submit"
{
"Registrar"
}
}
br;
div id="user_create_response" {}
}
})
}