91 lines
2.1 KiB
Rust
91 lines
2.1 KiB
Rust
use serde::Deserialize;
|
|
use serde::Serialize;
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
pub enum WebSocketMessageServerToApp {
|
|
/// State (server to app).
|
|
State(State),
|
|
|
|
/// Keep-alive message.
|
|
HeartBeat,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
pub enum WebSocketMessageAppToServer {
|
|
/// Keep-alive message.
|
|
HeartBeat,
|
|
}
|
|
|
|
pub type RestResponse<T> = Result<T, RestError>;
|
|
|
|
#[derive(thiserror::Error, Default, Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
#[error("{error}")]
|
|
pub struct RestError {
|
|
pub error: String,
|
|
}
|
|
impl RestError {
|
|
pub fn new(err: impl Into<String>) -> Self {
|
|
Self { error: err.into() }
|
|
}
|
|
}
|
|
impl<T> From<T> for RestError
|
|
where
|
|
T: Into<String>,
|
|
{
|
|
fn from(value: T) -> Self {
|
|
RestError::new(value)
|
|
}
|
|
}
|
|
|
|
#[derive(Default, Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
pub struct State {
|
|
pub achievements: Vec<Achievement>,
|
|
pub milestones: Vec<Milestone>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
|
pub struct Achievement {
|
|
pub goal: String,
|
|
pub completed: bool,
|
|
pub uuid: uuid::Uuid,
|
|
pub time_of_reveal: Option<chrono::NaiveTime>,
|
|
}
|
|
|
|
#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
|
|
pub struct CreateAchievement {
|
|
pub goal: String,
|
|
pub time_of_reveal: Option<chrono::NaiveTime>,
|
|
}
|
|
|
|
#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ToggleAchievement {
|
|
pub uuid: uuid::Uuid,
|
|
}
|
|
|
|
#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
|
|
pub struct UpdateAchievementTimeOfReveal {
|
|
pub uuid: uuid::Uuid,
|
|
pub time_of_reveal: Option<chrono::NaiveTime>,
|
|
}
|
|
|
|
#[derive(PartialEq, Eq, Debug, Serialize, Clone, Deserialize)]
|
|
pub struct DeleteAchievement {
|
|
pub uuid: uuid::Uuid,
|
|
}
|
|
|
|
#[derive(Debug, PartialEq, Eq, Serialize, Clone, Deserialize)]
|
|
pub struct Milestone {
|
|
pub goal: usize,
|
|
pub uuid: uuid::Uuid,
|
|
}
|
|
|
|
#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
|
|
pub struct CreateMilestone {
|
|
pub goal: usize,
|
|
}
|
|
|
|
#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)]
|
|
pub struct DeleteMilestone {
|
|
pub uuid: uuid::Uuid,
|
|
}
|