use serde::{Serialize, Deserialize}; use tetratto_shared::{snow::Snowflake, unix_epoch_timestamp}; #[derive(Debug, Serialize, Deserialize, PartialEq, Eq)] pub enum StackPrivacy { /// Can be viewed by anyone. Public, /// Can only be viewed by the stack's owner (and users with `MANAGE_STACKS`). Private, } impl Default for StackPrivacy { fn default() -> Self { Self::Private } } #[derive(Serialize, Deserialize)] pub struct UserStack { pub id: usize, pub created: usize, pub owner: usize, pub name: String, pub users: Vec, pub privacy: StackPrivacy, } impl UserStack { /// Create a new [`UserStack`]. pub fn new(name: String, owner: usize, users: Vec) -> Self { Self { id: Snowflake::new().to_string().parse::().unwrap(), created: unix_epoch_timestamp() as usize, owner, name, users, privacy: StackPrivacy::default(), } } }