kitchen-freezer/src/traits.rs

50 lines
1.2 KiB
Rust
Raw Normal View History

2021-02-22 00:13:29 +01:00
//! This module provides CalDAV data sources and utilities
2021-02-18 12:02:04 +01:00
2021-02-22 00:13:29 +01:00
/*
2021-02-20 00:10:05 +01:00
use std::error::Error;
2021-02-18 12:02:04 +01:00
/// 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
2021-02-20 00:10:05 +01:00
pub fn set_server(&mut self, url: String, username: String, password: String) -> Result<(), Box<dyn Error>> {
self.client = Some(Client::new(url, username, password)?);
Ok(())
2021-02-18 12:02:04 +01:00
}
/// Update the local database with info from the Client
2021-02-20 00:10:05 +01:00
pub fn fetch_from_server(&mut self) {
2021-02-22 00:13:29 +01:00
// TODO: how to handle conflicts?
2021-02-18 12:02:04 +01:00
}
2021-02-19 07:58:53 +01:00
pub fn update_changes_to_server(&self) {
}
2021-02-22 00:13:29 +01:00
// TODO: the API should force calling fetch_from_server before
2021-02-18 12:07:38 +01:00
pub fn calendars(&self) -> Vec<&Calendar> {
2021-02-22 00:13:29 +01:00
// TODO: what happens when a user has a reference, which is modified/updated from the server? Conflict mut/not mut?
// TODO: how can the user modify Tasks from a non-mut reference?
2021-02-18 12:02:04 +01:00
self.calendars
2021-02-18 12:07:38 +01:00
.iter()
.collect()
2021-02-18 12:02:04 +01:00
}
}
2021-02-22 00:13:29 +01:00
*/