use std::collections::HashMap;
use crate::json::{from_number, Value, NULL};
use crate::model::id::{ApplicationId, UserId};
use crate::model::invite::InviteTargetType;
#[derive(Clone, Debug)]
pub struct CreateInvite(pub HashMap<&'static str, Value>);
impl CreateInvite {
pub fn max_age(&mut self, max_age: u64) -> &mut Self {
self.0.insert("max_age", from_number(max_age));
self
}
pub fn max_uses(&mut self, max_uses: u64) -> &mut Self {
self.0.insert("max_uses", from_number(max_uses));
self
}
pub fn temporary(&mut self, temporary: bool) -> &mut Self {
self.0.insert("temporary", Value::from(temporary));
self
}
pub fn unique(&mut self, unique: bool) -> &mut Self {
self.0.insert("unique", Value::from(unique));
self
}
pub fn target_type(&mut self, target_type: InviteTargetType) -> &mut Self {
self.0.insert("target_type", from_number(target_type as u8));
self
}
pub fn target_user_id(&mut self, target_user_id: UserId) -> &mut Self {
self.0.insert("target_user_id", from_number(target_user_id.0));
self
}
pub fn target_application_id(&mut self, target_application_id: ApplicationId) -> &mut Self {
self.0.insert("target_application_id", from_number(target_application_id.0));
self
}
}
impl Default for CreateInvite {
fn default() -> CreateInvite {
let mut map = HashMap::new();
map.insert("validate", NULL);
CreateInvite(map)
}
}