p2panda_auth/group/
action.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3use crate::Access;
4use crate::group::GroupMember;
5
6/// Actions for creating groups and modifying group membership.
7#[derive(Clone, Debug, PartialEq)]
8pub enum GroupAction<ID, C> {
9    Create {
10        initial_members: Vec<(GroupMember<ID>, Access<C>)>,
11    },
12    Add {
13        member: GroupMember<ID>,
14        access: Access<C>,
15    },
16    Remove {
17        member: GroupMember<ID>,
18    },
19    Promote {
20        member: GroupMember<ID>,
21        access: Access<C>,
22    },
23    Demote {
24        member: GroupMember<ID>,
25        access: Access<C>,
26    },
27}
28
29impl<ID, C> GroupAction<ID, C>
30where
31    ID: Copy,
32{
33    /// Return `true` if this is a create action.
34    pub fn is_create(&self) -> bool {
35        matches!(self, GroupAction::Create { .. })
36    }
37}