use serde::{Serialize, Deserialize}; use chrono::{DateTime, Utc}; #[derive(Serialize, Deserialize, PartialEq)] pub enum CorpPermission { Holder, // Implies all permissions. Hire, Fire, ChangeJobTitle, } pub struct CorpId(pub i64); #[derive(Serialize, Deserialize)] #[serde(default)] pub struct Corp { pub name: String, // If true, new members get allow_combat on, and members cannot turn // allow_combat off. This will allow duly authorised corp members to // consent to combat with other corps, and have it apply to members. pub allow_combat_required: bool, pub member_permissions: Vec, } impl Default for Corp { fn default() -> Self { Self { name: "Unset".to_owned(), allow_combat_required: false, member_permissions: vec!(), } } } #[derive(Serialize, Deserialize)] #[serde(default)] pub struct CorpMembership { pub invited_at: Option>, pub joined_at: Option>, pub permissions: Vec, pub allow_combat: bool, pub job_title: String, pub priority: i64, pub chat_on: bool } impl Default for CorpMembership { fn default() -> CorpMembership { CorpMembership { invited_at: None, joined_at: None, permissions: vec!(), allow_combat: false, job_title: "Employee".to_owned(), priority: 100, chat_on: true, } } }