From dd93afebb3bc0f0a0715a748b9a2e6b3166300b2 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:06:45 +0200 Subject: [PATCH] Implement occurence getters for calendar object --- crates/store/src/model/event.rs | 8 ++++---- crates/store/src/model/object.rs | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/crates/store/src/model/event.rs b/crates/store/src/model/event.rs index df2def5..9cbdff3 100644 --- a/crates/store/src/model/event.rs +++ b/crates/store/src/model/event.rs @@ -25,7 +25,7 @@ impl EventObject { } else { return Ok(None); }; - Ok(Some(CalDateTime::from_str(&dtstart)?)) + Ok(Some(CalDateTime::from_str(dtstart)?)) } pub fn get_last_occurence(&self) -> Result, Error> { @@ -39,7 +39,7 @@ impl EventObject { value: Some(dtend), .. }) = self.event.get_property("DTEND") { - return Ok(Some(CalDateTime::from_str(&dtend)?)); + return Ok(Some(CalDateTime::from_str(dtend)?)); }; let duration = if let Some(Property { @@ -47,12 +47,12 @@ impl EventObject { .. }) = self.event.get_property("DURATION") { - parse_duration(&duration)? + parse_duration(duration)? } else { Duration::days(1) }; let first_occurence = self.get_first_occurence()?; - return Ok(first_occurence.map(|first_occurence| first_occurence + duration)); + Ok(first_occurence.map(|first_occurence| first_occurence + duration)) } } diff --git a/crates/store/src/model/object.rs b/crates/store/src/model/object.rs index 3a4a875..3c39d5d 100644 --- a/crates/store/src/model/object.rs +++ b/crates/store/src/model/object.rs @@ -1,5 +1,5 @@ use super::{event::EventObject, todo::TodoObject}; -use crate::Error; +use crate::{timestamp::CalDateTime, Error}; use anyhow::Result; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; @@ -126,4 +126,18 @@ impl CalendarObject { CalendarObjectComponent::Event(_) => "VEVENT", } } + + pub fn get_first_occurence(&self) -> Result, Error> { + match &self.data { + CalendarObjectComponent::Event(event) => event.get_first_occurence(), + _ => Ok(None), + } + } + + pub fn get_last_occurence(&self) -> Result, Error> { + match &self.data { + CalendarObjectComponent::Event(event) => event.get_last_occurence(), + _ => Ok(None), + } + } }