diff --git a/src/model/notification.rs b/src/model/notification.rs index bf920cb..fedc3b3 100644 --- a/src/model/notification.rs +++ b/src/model/notification.rs @@ -154,4 +154,14 @@ ORDER BY read_at DESC, created_at DESC; } } } + + pub(crate) async fn delete_by_action(db: &sqlx::Pool, action: &str) { + sqlx::query!( + "DELETE FROM notification WHERE action_after_reading=? and read_at = null", + action + ) + .execute(db) + .await + .unwrap(); + } } diff --git a/src/model/trip.rs b/src/model/trip.rs index 2f95287..704c4b9 100644 --- a/src/model/trip.rs +++ b/src/model/trip.rs @@ -232,6 +232,12 @@ WHERE day=? .await; } } + } else { + Notification::delete_by_action( + db, + &format!("remove_user_trip_with_trip_details_id:{}", trip_details_id), + ) + .await; } let trip_details = TripDetails::find_by_id(db, trip_details_id).await.unwrap(); diff --git a/src/model/tripdetails.rs b/src/model/tripdetails.rs index d505dcb..df1238e 100644 --- a/src/model/tripdetails.rs +++ b/src/model/tripdetails.rs @@ -77,6 +77,12 @@ WHERE day = ? AND planned_starting_time = ? return; } + if self.max_people == 0 { + // Cox cancelled event, thus it's probably bad weather. Don't bother with sending + // notifications + return; + } + if Trip::find_by_trip_details(db, self.id).await.is_none() { // This trip_details belongs to a planned_event, no need to do anything return;