Calendar data model: Switch to only saving timezone id

This commit is contained in:
Lennart
2025-07-25 22:32:01 +02:00
parent 918f27e8c2
commit e1a10338e0
8 changed files with 87 additions and 46 deletions

View File

@@ -32,6 +32,7 @@ headers.workspace = true
tower.workspace = true
futures-core.workspace = true
tower-sessions.workspace = true
vtimezones-rs.workspace = true
[dev-dependencies]
rstest = { workspace = true }

View File

@@ -1,3 +1,5 @@
use std::str::FromStr;
use crate::synctoken::format_synctoken;
use chrono::NaiveDateTime;
use rustical_ical::CalendarObjectType;
@@ -11,7 +13,6 @@ pub struct Calendar {
pub order: i64,
pub description: Option<String>,
pub color: Option<String>,
pub timezone: Option<String>,
pub timezone_id: Option<String>,
pub deleted_at: Option<NaiveDateTime>,
pub synctoken: i64,
@@ -24,4 +25,16 @@ impl Calendar {
pub fn format_synctoken(&self) -> String {
format_synctoken(self.synctoken)
}
pub fn get_timezone(&self) -> Option<chrono_tz::Tz> {
self.timezone_id
.as_ref()
.and_then(|tzid| chrono_tz::Tz::from_str(tzid).ok())
}
pub fn get_vtimezone(&self) -> Option<&'static str> {
self.timezone_id
.as_ref()
.and_then(|tzid| vtimezones_rs::VTIMEZONES.get(tzid).cloned())
}
}

View File

@@ -20,7 +20,6 @@ fn birthday_calendar(addressbook: Addressbook) -> Calendar {
order: 0,
description: None,
color: None,
timezone: None,
timezone_id: None,
deleted_at: addressbook.deleted_at,
synctoken: addressbook.synctoken,