kitchen-freezer/src/data/mod.rs

48 lines
1.1 KiB
Rust
Raw Normal View History

2021-02-18 12:02:04 +01:00
//! This module is the data source of the Caldav items
//!
//! This gives access to data from both the server and a local database for quick retrieval when the app starts
use std::sync::Arc;
mod calendar;
mod tasks;
mod client;
pub use calendar::Calendar;
pub use tasks::Task;
use client::Client;
/// A Caldav data source
pub struct DataSource {
client: Option<Client>,
2021-02-18 12:07:38 +01:00
calendars: Vec<Calendar>
2021-02-18 12:02:04 +01:00
}
impl DataSource {
/// Create a new data source
pub fn new() -> Self {
Self{
client: None,
calendars: Vec::new(),
}
}
/// Tell this data source what the source server is
pub fn set_server(&mut self, url: String, username: String, password: String) {
self.client = Client::new(url, username, password);
}
/// Update the local database with info from the Client
pub fn fetch_from_server(&self) {
// TODO: how to handle conflicts?
}
2021-02-18 12:07:38 +01:00
pub fn calendars(&self) -> Vec<&Calendar> {
2021-02-18 12:02:04 +01:00
self.calendars
2021-02-18 12:07:38 +01:00
.iter()
.map(|c| &c)
.collect()
2021-02-18 12:02:04 +01:00
}
}