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(user).await); } let mut buf = Vec::new(); write!(&mut buf, "{}", calendar).unwrap(); String::from_utf8(buf).unwrap() }