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}