Skip to main content

ephemeris_forge_github/operation/
rulesets.rs

1use std::fmt;
2
3use facet_value::Value;
4
5use crate::Ruleset;
6
7/// One write to a ruleset.
8#[derive(Clone, Debug, Eq, PartialEq)]
9pub enum Operation {
10    /// Create a ruleset with its complete desired body.
11    Create {
12        /// The ruleset's name.
13        name: String,
14        /// The ruleset's complete desired configuration.
15        ruleset: Box<Ruleset>,
16    },
17    /// Replace an existing ruleset with its complete desired body.
18    Update {
19        /// The id GitHub gave the ruleset.
20        id: u64,
21        /// The ruleset's name.
22        name: String,
23        /// The ruleset's complete desired configuration.
24        ruleset: Box<Ruleset>,
25        /// The live rules of types the configuration cannot declare, which
26        /// the write sends back unchanged.
27        unmanaged_rules: Vec<Value>,
28    },
29    /// Delete a ruleset the configuration does not declare.
30    Delete {
31        /// The id GitHub gave the ruleset.
32        id: u64,
33        /// The ruleset's name.
34        name: String,
35    },
36}
37
38impl fmt::Display for Operation {
39    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40        match self {
41            Self::Create { name, ruleset: _ }
42            | Self::Update {
43                name,
44                id: _,
45                ruleset: _,
46                unmanaged_rules: _,
47            }
48            | Self::Delete { name, id: _ } => write!(f, "ruleset {name}"),
49        }
50    }
51}