p2panda_auth/group/
action.rs1#[cfg(any(test, feature = "serde"))]
4use serde::{Deserialize, Serialize};
5
6use crate::Access;
7use crate::group::GroupMember;
8
9#[derive(Clone, Debug, PartialEq, Eq)]
11#[cfg_attr(any(test, feature = "serde"), derive(Deserialize, Serialize))]
12pub enum GroupAction<ID, C> {
13 Create {
14 initial_members: Vec<(GroupMember<ID>, Access<C>)>,
15 },
16 Add {
17 member: GroupMember<ID>,
18 access: Access<C>,
19 },
20 Remove {
21 member: GroupMember<ID>,
22 },
23 Promote {
24 member: GroupMember<ID>,
25 access: Access<C>,
26 },
27 Demote {
28 member: GroupMember<ID>,
29 access: Access<C>,
30 },
31}
32
33impl<ID, C> GroupAction<ID, C>
34where
35 ID: Copy,
36{
37 pub fn is_create(&self) -> bool {
39 matches!(self, GroupAction::Create { .. })
40 }
41}