forked from Ruderverein-Donau-Linz/rowt
28 lines
786 B
Rust
28 lines
786 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",
|
|
"Donau Linz - 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(db).await);
|
|
}
|
|
let mut buf = Vec::new();
|
|
write!(&mut buf, "{}", calendar).unwrap();
|
|
String::from_utf8(buf).unwrap()
|
|
}
|