From b6bfb5a62059c5d3893fc3cb6a70bb0ee140bc42 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Fri, 19 Sep 2025 14:47:44 +0200 Subject: [PATCH] ical: Remove abstraction structs around journal and todo --- crates/caldav/src/calendar/methods/get.rs | 10 +++---- crates/ical/src/icalendar/journal.rs | 11 ------- crates/ical/src/icalendar/mod.rs | 4 --- crates/ical/src/icalendar/object.rs | 35 ++++++++++------------- crates/ical/src/icalendar/todo.rs | 11 ------- 5 files changed, 20 insertions(+), 51 deletions(-) delete mode 100644 crates/ical/src/icalendar/journal.rs delete mode 100644 crates/ical/src/icalendar/todo.rs diff --git a/crates/caldav/src/calendar/methods/get.rs b/crates/caldav/src/calendar/methods/get.rs index 5a31c2f..73d4f32 100644 --- a/crates/caldav/src/calendar/methods/get.rs +++ b/crates/caldav/src/calendar/methods/get.rs @@ -8,7 +8,7 @@ use http::{HeaderValue, Method, StatusCode, header}; use ical::generator::{Emitter, IcalCalendarBuilder}; use ical::property::Property; use percent_encoding::{CONTROLS, utf8_percent_encode}; -use rustical_ical::{CalendarObjectComponent, EventObject, JournalObject, TodoObject}; +use rustical_ical::{CalendarObjectComponent, EventObject}; use rustical_store::{CalendarStore, SubscriptionStore, auth::Principal}; use std::collections::HashMap; use std::str::FromStr; @@ -83,16 +83,16 @@ pub async fn route_get( ical_calendar_builder.add_event(_override.event.clone()); } } - CalendarObjectComponent::Todo(TodoObject(todo), overrides) => { + CalendarObjectComponent::Todo(todo, overrides) => { ical_calendar_builder = ical_calendar_builder.add_todo(todo.clone()); for _override in overrides { - ical_calendar_builder = ical_calendar_builder.add_todo(_override.0.clone()); + ical_calendar_builder = ical_calendar_builder.add_todo(_override.clone()); } } - CalendarObjectComponent::Journal(JournalObject(journal), overrides) => { + CalendarObjectComponent::Journal(journal, overrides) => { ical_calendar_builder = ical_calendar_builder.add_journal(journal.clone()); for _override in overrides { - ical_calendar_builder = ical_calendar_builder.add_journal(_override.0.clone()); + ical_calendar_builder = ical_calendar_builder.add_journal(_override.clone()); } } } diff --git a/crates/ical/src/icalendar/journal.rs b/crates/ical/src/icalendar/journal.rs deleted file mode 100644 index 356caf6..0000000 --- a/crates/ical/src/icalendar/journal.rs +++ /dev/null @@ -1,11 +0,0 @@ -use derive_more::From; -use ical::parser::ical::component::IcalJournal; - -#[derive(Debug, Clone, From)] -pub struct JournalObject(pub IcalJournal); - -impl JournalObject { - pub fn get_uid(&self) -> &str { - self.0.get_uid() - } -} diff --git a/crates/ical/src/icalendar/mod.rs b/crates/ical/src/icalendar/mod.rs index 484aa2b..4883949 100644 --- a/crates/ical/src/icalendar/mod.rs +++ b/crates/ical/src/icalendar/mod.rs @@ -1,9 +1,5 @@ mod event; -mod journal; mod object; -mod todo; pub use event::*; -pub use journal::*; pub use object::*; -pub use todo::*; diff --git a/crates/ical/src/icalendar/object.rs b/crates/ical/src/icalendar/object.rs index 3e3d49e..7f7f2f9 100644 --- a/crates/ical/src/icalendar/object.rs +++ b/crates/ical/src/icalendar/object.rs @@ -1,11 +1,13 @@ -use super::{EventObject, JournalObject, TodoObject}; +use super::EventObject; use crate::CalDateTime; use crate::Error; use chrono::DateTime; use chrono::Utc; use derive_more::Display; use ical::generator::{Emitter, IcalCalendar}; +use ical::parser::ical::component::IcalJournal; use ical::parser::ical::component::IcalTimeZone; +use ical::parser::ical::component::IcalTodo; use ical::property::Property; use serde::Deserialize; use serde::Serialize; @@ -57,8 +59,8 @@ impl rustical_xml::ValueDeserialize for CalendarObjectType { #[derive(Debug, Clone)] pub enum CalendarObjectComponent { Event(EventObject, Vec), - Todo(TodoObject, Vec), - Journal(JournalObject, Vec), + Todo(IcalTodo, Vec), + Journal(IcalJournal, Vec), } impl CalendarObjectComponent { @@ -82,9 +84,9 @@ impl CalendarObjectComponent { } Ok(Self::Event(main_event, overrides)) } - fn from_todos(mut todos: Vec) -> Result { + fn from_todos(mut todos: Vec) -> Result { let main_todo = todos - .extract_if(.., |todo| todo.0.get_recurrence_id().is_none()) + .extract_if(.., |todo| todo.get_recurrence_id().is_none()) .next() .expect("there must be one main event"); let overrides = todos; @@ -94,7 +96,7 @@ impl CalendarObjectComponent { "Calendar object contains multiple UIDs".to_owned(), )); } - if todo.0.get_recurrence_id().is_none() { + if todo.get_recurrence_id().is_none() { return Err(Error::InvalidData( "Calendar object can only contain one main component".to_owned(), )); @@ -102,9 +104,9 @@ impl CalendarObjectComponent { } Ok(Self::Todo(main_todo, overrides)) } - fn from_journals(mut journals: Vec) -> Result { + fn from_journals(mut journals: Vec) -> Result { let main_journal = journals - .extract_if(.., |journal| journal.0.get_recurrence_id().is_none()) + .extract_if(.., |journal| journal.get_recurrence_id().is_none()) .next() .expect("there must be one main event"); let overrides = journals; @@ -114,7 +116,7 @@ impl CalendarObjectComponent { "Calendar object contains multiple UIDs".to_owned(), )); } - if journal.0.get_recurrence_id().is_none() { + if journal.get_recurrence_id().is_none() { return Err(Error::InvalidData( "Calendar object can only contain one main component".to_owned(), )); @@ -179,16 +181,9 @@ impl CalendarObject { .collect(), )? } else if !cal.todos.is_empty() { - CalendarObjectComponent::from_todos( - cal.todos.into_iter().map(|todo| todo.into()).collect(), - )? + CalendarObjectComponent::from_todos(cal.todos)? } else if !cal.journals.is_empty() { - CalendarObjectComponent::from_journals( - cal.journals - .into_iter() - .map(|journal| journal.into()) - .collect(), - )? + CalendarObjectComponent::from_journals(cal.journals)? } else { return Err(Error::InvalidData( "iCalendar component type not supported :(".to_owned(), @@ -215,9 +210,9 @@ impl CalendarObject { match &self.data { // We've made sure before that the first component exists and all components share the // same UID - CalendarObjectComponent::Todo(todo, _) => todo.0.get_uid(), + CalendarObjectComponent::Todo(todo, _) => todo.get_uid(), CalendarObjectComponent::Event(event, _) => event.event.get_uid(), - CalendarObjectComponent::Journal(journal, _) => journal.0.get_uid(), + CalendarObjectComponent::Journal(journal, _) => journal.get_uid(), } } diff --git a/crates/ical/src/icalendar/todo.rs b/crates/ical/src/icalendar/todo.rs deleted file mode 100644 index ea7f569..0000000 --- a/crates/ical/src/icalendar/todo.rs +++ /dev/null @@ -1,11 +0,0 @@ -use derive_more::From; -use ical::parser::ical::component::IcalTodo; - -#[derive(Debug, Clone, From)] -pub struct TodoObject(pub IcalTodo); - -impl TodoObject { - pub fn get_uid(&self) -> &str { - self.0.get_uid() - } -}