Skip to main content

ephemeris_forge_github/operation/
access.rs

1use std::fmt;
2
3use ephemeris_forge::{AccessOperation, UserName};
4
5use crate::Permission;
6
7/// One write to the repository's team and collaborator grants.
8#[derive(Clone, Debug, Eq, PartialEq)]
9pub enum Operation {
10    /// A write every forge has.
11    Grant(AccessOperation<Permission>),
12    /// Change the permission of a pending invitation.
13    SetInvitationPermission {
14        /// The invitation's identifier.
15        id: u64,
16        /// The invited user.
17        user: UserName,
18        /// The permission to set.
19        permission: Permission,
20    },
21    /// Cancel a pending invitation.
22    CancelInvitation {
23        /// The invitation's identifier.
24        id: u64,
25        /// The invited user.
26        user: UserName,
27    },
28}
29
30impl fmt::Display for Operation {
31    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32        match self {
33            Self::Grant(operation) => operation.fmt(f),
34            Self::SetInvitationPermission {
35                id: _,
36                user,
37                permission: _,
38            }
39            | Self::CancelInvitation { id: _, user } => write!(f, "invitation for {user}"),
40        }
41    }
42}