#[macro_use] extern crate rocket; mod models; use std::collections::HashMap; use chrono::Duration; use chrono::Local; use rocket::{form::Form, fs::FileServer, State}; use rocket_dyn_templates::context; use rocket_dyn_templates::Template; use sea_orm::ColumnTrait; use sea_orm::QueryFilter; use sea_orm::{ ActiveModelTrait, Database, DatabaseConnection, EntityTrait, Order, QueryOrder, Set, }; use crate::models::day; #[get("/")] async fn index(db: &State) -> Template { let days: Vec = day::Entity::find() .filter(day::Column::Day.gte(format!("{}", Local::now().format("%Y-%m-%d")))) // don't show stuff from the past .order_by(day::Column::Day, Order::Asc) .all(db.inner()) .await .unwrap(); let days: HashMap = days.into_iter().map(|x| (x.day, x)).collect(); let mut next_days = Vec::new(); for i in 0..6 { next_days.push(Local::now() + Duration::days(i)); } println!("{:?}", next_days); Template::render("index", context! { days, next_days }) } #[derive(FromForm, Debug)] struct DayForm { day: String, planned_amount_cox: Option, planned_starting_time: Option, open_registration: bool, } #[put("/day", data = "")] async fn create(db: &State, day: Form) -> Template { let day = day::ActiveModel { day: Set(chrono::NaiveDate::parse_from_str(&day.day, "%Y-%m-%d").unwrap()), planned_amount_cox: Set(day.planned_amount_cox), planned_starting_time: Set(day.planned_starting_time.clone()), open_registration: Set(day.open_registration), }; day.insert(db.inner()).await.unwrap(); //TODO: fixme Template::render("index", context! {}) } #[launch] async fn rocket() -> _ { rocket::build() .attach(Template::fairing()) .manage(Database::connect("sqlite://db.sqlite").await.unwrap()) .mount("/public", FileServer::from("static/")) .mount("/", routes![index, create]) } //#[tokio::main] //async fn main() { // println!("Hello, world!"); // let db = Database::connect("sqlite://db.sqlite").await.unwrap(); // // let day = day::ActiveModel { // day: Set("2023-02-08".into()), // ..Default::default() // }; // // //day.insert(&db).await.unwrap(); // // let a: Vec = day::Entity::find().all(&db).await.unwrap(); // println!("{:?}", a); // // db.close().await.unwrap(); //}