forked from Ruderverein-Donau-Linz/rowt
		
	add first draft of cal
This commit is contained in:
		@@ -7,12 +7,12 @@ use super::{tripdetails::TripDetails, triptype::TripType, user::User};
 | 
			
		||||
#[derive(Serialize, Clone, FromRow)]
 | 
			
		||||
pub struct PlannedEvent {
 | 
			
		||||
    pub id: i64,
 | 
			
		||||
    name: String,
 | 
			
		||||
    pub name: String,
 | 
			
		||||
    planned_amount_cox: i64,
 | 
			
		||||
    trip_details_id: i64,
 | 
			
		||||
    planned_starting_time: String,
 | 
			
		||||
    pub planned_starting_time: String,
 | 
			
		||||
    max_people: i64,
 | 
			
		||||
    day: String,
 | 
			
		||||
    pub day: String,
 | 
			
		||||
    notes: Option<String>,
 | 
			
		||||
    pub allow_guests: bool,
 | 
			
		||||
    trip_type_id: Option<i64>,
 | 
			
		||||
@@ -89,6 +89,18 @@ WHERE day=?",
 | 
			
		||||
        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> {
 | 
			
		||||
        //TODO: switch to join
 | 
			
		||||
        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 auth;
 | 
			
		||||
mod cal;
 | 
			
		||||
mod cox;
 | 
			
		||||
mod faq;
 | 
			
		||||
 | 
			
		||||
@@ -143,6 +144,7 @@ pub fn start(db: SqlitePool) -> Rocket<Build> {
 | 
			
		||||
        .mount("/cox", cox::routes())
 | 
			
		||||
        .mount("/admin", admin::routes())
 | 
			
		||||
        .mount("/faq", faq::routes())
 | 
			
		||||
        .mount("/cal", cal::routes())
 | 
			
		||||
        .mount("/public", FileServer::from("static/"))
 | 
			
		||||
        .register("/", catchers![unauthorized_error])
 | 
			
		||||
        .attach(Template::fairing())
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user