forked from Ruderverein-Donau-Linz/rowt
25 lines
762 B
Rust
25 lines
762 B
Rust
use std::io::Write;
|
|
|
|
use ics::{components::Property, ICalendar};
|
|
use sqlx::SqlitePool;
|
|
|
|
use crate::model::{event::Event, trip::Trip, user::User};
|
|
|
|
pub(crate) async fn get_personal_cal(db: &SqlitePool, user: &User) -> String {
|
|
let mut calendar = ICalendar::new("2.0", "ics-rs");
|
|
calendar.push(Property::new("X-WR-CALNAME", "ruad.at - Deine Ausfahrten"));
|
|
|
|
let events = Event::all_with_user(db, user).await;
|
|
for event in events {
|
|
calendar.add_event(event.get_vevent(db).await);
|
|
}
|
|
|
|
let trips = Trip::all_with_user(db, user).await;
|
|
for trip in trips {
|
|
calendar.add_event(trip.get_vevent(user).await);
|
|
}
|
|
let mut buf = Vec::new();
|
|
write!(&mut buf, "{}", calendar).unwrap();
|
|
String::from_utf8(buf).unwrap()
|
|
}
|