diff options
author | metamuffin <yvchraiqi@protonmail.com> | 2022-06-10 11:18:21 +0200 |
---|---|---|
committer | metamuffin <yvchraiqi@protonmail.com> | 2022-06-10 11:18:21 +0200 |
commit | 76db19f14c616e879f613b533ee5072c661f8a10 (patch) | |
tree | 3084bef7880da66e43c8cfc4c179155640d5c628 /karlcommon/src/protocol.rs | |
parent | 6f6db73a126057514912c5e6b372ef225a1065b7 (diff) | |
download | karlender-76db19f14c616e879f613b533ee5072c661f8a10.tar karlender-76db19f14c616e879f613b533ee5072c661f8a10.tar.bz2 karlender-76db19f14c616e879f613b533ee5072c661f8a10.tar.zst |
stuff
Diffstat (limited to 'karlcommon/src/protocol.rs')
-rw-r--r-- | karlcommon/src/protocol.rs | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/karlcommon/src/protocol.rs b/karlcommon/src/protocol.rs new file mode 100644 index 0000000..74559bf --- /dev/null +++ b/karlcommon/src/protocol.rs @@ -0,0 +1,71 @@ + +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "type", content = "data", rename_all = "snake_case")] +pub enum ClientboundPacket { + Handshake { version: String }, + Error(String), + DownloadResponse(Vec<Task>), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "type", content = "data", rename_all = "snake_case")] +pub enum ServerboundPacket { + Download, + UpdateTask(Task), + RemoveTask(u64), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Task { + pub id: u64, + pub name: String, + pub description: String, + + pub tags: Vec<String>, + pub priority: f64, + + pub completed: Option<u64>, + pub scheduled: Option<u64>, + + pub occurence: Option<Condition>, + pub deadline: Option<Condition>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum Condition { + From(Box<Condition>), + + Or(Vec<Condition>), + And(Vec<Condition>), + Invert(Box<Condition>), + + Equal { + prop: Property, + value: i64, + modulus: Option<i64>, + }, + Range { + prop: Property, + min: i64, + max: i64, + modulus: Option<i64>, + }, +} + +#[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum Property { + Year, + Monthofyear, + Weekofmonth, + Dayofyear, + Dayofmonth, + Dayofweek, + Hour, + Minute, + Second, + Unix, +} |