#[cfg(any(test, feature = "serde"))]
use serde::{Deserialize, Serialize};
use crate::Access;
use crate::group::GroupMember;
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(any(test, feature = "serde"), derive(Deserialize, Serialize))]
pub enum GroupAction<ID, C = ()> {
Create {
initial_members: Vec<(GroupMember<ID>, Access<C>)>,
},
Add {
member: GroupMember<ID>,
access: Access<C>,
},
Remove {
member: GroupMember<ID>,
},
Promote {
member: GroupMember<ID>,
access: Access<C>,
},
Demote {
member: GroupMember<ID>,
access: Access<C>,
},
}
impl<ID, C> GroupAction<ID, C>
where
ID: Copy,
{
pub fn is_create(&self) -> bool {
matches!(self, GroupAction::Create { .. })
}
}