add first draft of cal
This commit is contained in:
parent
6b0c2059a4
commit
aa2d5bc7dd
@ -7,12 +7,12 @@ use super::{tripdetails::TripDetails, triptype::TripType, user::User};
|
|||||||
#[derive(Serialize, Clone, FromRow)]
|
#[derive(Serialize, Clone, FromRow)]
|
||||||
pub struct PlannedEvent {
|
pub struct PlannedEvent {
|
||||||
pub id: i64,
|
pub id: i64,
|
||||||
name: String,
|
pub name: String,
|
||||||
planned_amount_cox: i64,
|
planned_amount_cox: i64,
|
||||||
trip_details_id: i64,
|
trip_details_id: i64,
|
||||||
planned_starting_time: String,
|
pub planned_starting_time: String,
|
||||||
max_people: i64,
|
max_people: i64,
|
||||||
day: String,
|
pub day: String,
|
||||||
notes: Option<String>,
|
notes: Option<String>,
|
||||||
pub allow_guests: bool,
|
pub allow_guests: bool,
|
||||||
trip_type_id: Option<i64>,
|
trip_type_id: Option<i64>,
|
||||||
@ -89,6 +89,18 @@ WHERE day=?",
|
|||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn all(db: &SqlitePool) -> Vec<PlannedEvent> {
|
||||||
|
sqlx::query_as!(
|
||||||
|
PlannedEvent,
|
||||||
|
"SELECT planned_event.id, planned_event.name, planned_amount_cox, trip_details_id, planned_starting_time, max_people, day, notes, allow_guests, trip_type_id
|
||||||
|
FROM planned_event
|
||||||
|
INNER JOIN trip_details ON planned_event.trip_details_id = trip_details.id",
|
||||||
|
)
|
||||||
|
.fetch_all(db)
|
||||||
|
.await
|
||||||
|
.unwrap() //TODO: fixme
|
||||||
|
}
|
||||||
|
|
||||||
async fn get_all_cox(&self, db: &SqlitePool) -> Vec<Registration> {
|
async fn get_all_cox(&self, db: &SqlitePool) -> Vec<Registration> {
|
||||||
//TODO: switch to join
|
//TODO: switch to join
|
||||||
sqlx::query_as!(
|
sqlx::query_as!(
|
||||||
|
33
src/rest/cal.rs
Normal file
33
src/rest/cal.rs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
use rocket::{get, routes, Route, State};
|
||||||
|
use sqlx::SqlitePool;
|
||||||
|
|
||||||
|
use crate::model::planned_event::PlannedEvent;
|
||||||
|
|
||||||
|
#[get("/")]
|
||||||
|
async fn index(db: &State<SqlitePool>) -> String {
|
||||||
|
let mut res = String::from(
|
||||||
|
r#"BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//rudernlinz.at//Trips//DE"#,
|
||||||
|
);
|
||||||
|
|
||||||
|
let events = PlannedEvent::all(db).await;
|
||||||
|
for event in events {
|
||||||
|
res.push_str("\nBEGIN:VEVENT");
|
||||||
|
res.push_str(&format!("\nUID:{}@rudernlinz.at", event.id));
|
||||||
|
res.push_str(&format!(
|
||||||
|
"\nDTSTART:{}T{}Z",
|
||||||
|
event.day, event.planned_starting_time
|
||||||
|
));
|
||||||
|
res.push_str(&format!("\nSUMMARY:{}", event.name));
|
||||||
|
|
||||||
|
res.push_str("\nEND:VEVENT");
|
||||||
|
}
|
||||||
|
|
||||||
|
res.push_str("\nEND:VCALENDAR");
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn routes() -> Vec<Route> {
|
||||||
|
routes![index]
|
||||||
|
}
|
@ -21,6 +21,7 @@ use crate::model::{
|
|||||||
|
|
||||||
mod admin;
|
mod admin;
|
||||||
mod auth;
|
mod auth;
|
||||||
|
mod cal;
|
||||||
mod cox;
|
mod cox;
|
||||||
mod faq;
|
mod faq;
|
||||||
|
|
||||||
@ -143,6 +144,7 @@ pub fn start(db: SqlitePool) -> Rocket<Build> {
|
|||||||
.mount("/cox", cox::routes())
|
.mount("/cox", cox::routes())
|
||||||
.mount("/admin", admin::routes())
|
.mount("/admin", admin::routes())
|
||||||
.mount("/faq", faq::routes())
|
.mount("/faq", faq::routes())
|
||||||
|
.mount("/cal", cal::routes())
|
||||||
.mount("/public", FileServer::from("static/"))
|
.mount("/public", FileServer::from("static/"))
|
||||||
.register("/", catchers![unauthorized_error])
|
.register("/", catchers![unauthorized_error])
|
||||||
.attach(Template::fairing())
|
.attach(Template::fairing())
|
||||||
|
Loading…
Reference in New Issue
Block a user