From 6c83d00c2c02692363ecbcdb08684400f04769a8 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Tue, 15 Apr 2025 20:33:13 +0200 Subject: [PATCH 1/2] have unique uid's, fixes error in some clients (e.g. sogo) --- src/model/event.rs | 6 +++++- src/model/trip.rs | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/model/event.rs b/src/model/event.rs index 5a640d4..c01c6c9 100644 --- a/src/model/event.rs +++ b/src/model/event.rs @@ -427,7 +427,10 @@ WHERE trip_details.id=? } pub(crate) async fn get_vevent(self, db: &SqlitePool) -> ics::Event { - let mut vevent = ics::Event::new(format!("{}@rudernlinz.at", self.id), "19900101T180000"); + let mut vevent = ics::Event::new( + format!("event-{}@rudernlinz.at", self.id), + "19900101T180000", + ); vevent.push(DtStart::new(format!( "{}T{}00", self.day.replace('-', ""), @@ -451,6 +454,7 @@ WHERE trip_details.id=? name.push_str(&format!("• {} ", triptype.name)) } vevent.push(Summary::new(name)); + println!("{:?}", vevent); vevent } diff --git a/src/model/trip.rs b/src/model/trip.rs index dd817a4..c7043c8 100644 --- a/src/model/trip.rs +++ b/src/model/trip.rs @@ -138,7 +138,8 @@ WHERE trip_details.id=? } pub(crate) async fn get_vevent(self, user: &User) -> ics::Event { - let mut vevent = ics::Event::new(format!("{}@rudernlinz.at", self.id), "19900101T180000"); + let mut vevent = + ics::Event::new(format!("trip-{}@rudernlinz.at", self.id), "19900101T180000"); vevent.push(DtStart::new(format!( "{}T{}00", self.day.replace('-', ""), -- 2.47.2 From 9fcd5a1a8fe2341352cbd2f016d24eb7c17fa6a7 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Tue, 15 Apr 2025 20:52:06 +0200 Subject: [PATCH 2/2] also show cox_helps_at_event in cal --- src/model/event.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/model/event.rs b/src/model/event.rs index c01c6c9..381f3d8 100644 --- a/src/model/event.rs +++ b/src/model/event.rs @@ -191,7 +191,8 @@ INNER JOIN trip_details ON planned_event.trip_details_id = trip_details.id", let mut ret = Vec::new(); let events = Self::all(db).await; for event in events { - if event.is_rower_registered(db, user).await { + if event.is_rower_registered(db, user).await || event.is_cox_registered(db, user).await + { ret.push(event); } } @@ -215,6 +216,21 @@ INNER JOIN trip_details ON planned_event.trip_details_id = trip_details.id", is_rower.amount > 0 } + pub async fn is_cox_registered(&self, db: &SqlitePool, user: &User) -> bool { + let is_rower = sqlx::query!( + "SELECT count(*) as amount + FROM trip + WHERE planned_event_id = ? + AND cox_id = ?", + self.id, + user.id + ) + .fetch_one(db) + .await + .unwrap(); //Okay, bc planned_event can only be created with proper DB backing + is_rower.amount > 0 + } + pub async fn find_by_trip_details(db: &SqlitePool, tripdetails_id: i64) -> Option { sqlx::query_as!( Self, @@ -454,7 +470,6 @@ WHERE trip_details.id=? name.push_str(&format!("• {} ", triptype.name)) } vevent.push(Summary::new(name)); - println!("{:?}", vevent); vevent } -- 2.47.2