hacky-ruadat/src/rest/restreg.rs

40 lines
1006 B
Rust
Raw Normal View History

2023-02-09 15:29:44 +01:00
use rocket::{form::Form, response::Redirect, Route, State};
use sea_orm::{ActiveModelTrait, DatabaseConnection, EntityTrait, Set};
use crate::models::{day, trip, user};
use super::NaiveDateForm;
#[derive(FromForm)]
struct RegisterForm {
day: NaiveDateForm,
#[field(validate = len(3..))]
name: String,
}
#[put("/", data = "<register>")]
async fn register(db: &State<DatabaseConnection>, register: Form<RegisterForm>) -> Redirect {
let day = day::Entity::find_by_id(*register.day)
.one(db.inner())
.await
.unwrap()
.expect("There's no trip on this date (yet)");
let user = user::Model::find_or_create_user(&register.name, db.inner()).await;
let day = format!("{}", day.day.format("%Y-%m-%d"));
let trip = trip::ActiveModel {
day: Set(day),
user_id: Set(user.id),
..Default::default()
};
trip.insert(db.inner()).await.unwrap();
Redirect::to("/")
}
pub fn routes() -> Vec<Route> {
routes![register]
}