use super::RemindType;
use crate::models::{Snowflake, UserMember};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct Schedule {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub id: Snowflake,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub name: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub description: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub start_timestamp: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub end_timestamp: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub jump_channel_id: Snowflake,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub remind_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub creator: Option<UserMember>,
}
impl Schedule {
pub fn new(
name: impl Into<String>,
start_timestamp: impl Into<String>,
end_timestamp: impl Into<String>,
jump_channel_id: Option<String>,
remind_type: RemindType,
) -> Self {
Self {
id: String::new(),
name: name.into(),
description: String::new(),
start_timestamp: start_timestamp.into(),
end_timestamp: end_timestamp.into(),
jump_channel_id: jump_channel_id.unwrap_or_default(),
remind_type: remind_type.to_wire_string(),
creator: None,
}
}
}