openapi_github/models/
repository_ruleset.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct RepositoryRuleset {
17 #[serde(rename = "id")]
19 pub id: i32,
20 #[serde(rename = "name")]
22 pub name: String,
23 #[serde(rename = "target", skip_serializing_if = "Option::is_none")]
25 pub target: Option<Target>,
26 #[serde(rename = "source_type", skip_serializing_if = "Option::is_none")]
28 pub source_type: Option<SourceType>,
29 #[serde(rename = "source")]
31 pub source: String,
32 #[serde(rename = "enforcement")]
33 pub enforcement: models::RepositoryRuleEnforcement,
34 #[serde(rename = "bypass_actors", skip_serializing_if = "Option::is_none")]
36 pub bypass_actors: Option<Vec<models::RepositoryRulesetBypassActor>>,
37 #[serde(rename = "current_user_can_bypass", skip_serializing_if = "Option::is_none")]
39 pub current_user_can_bypass: Option<CurrentUserCanBypass>,
40 #[serde(rename = "node_id", skip_serializing_if = "Option::is_none")]
41 pub node_id: Option<String>,
42 #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
43 pub _links: Option<Box<models::RepositoryRulesetLinks>>,
44 #[serde(rename = "conditions", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45 pub conditions: Option<Option<Box<models::RepositoryRulesetConditions>>>,
46 #[serde(rename = "rules", skip_serializing_if = "Option::is_none")]
47 pub rules: Option<Vec<models::RepositoryRule>>,
48 #[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
49 pub created_at: Option<String>,
50 #[serde(rename = "updated_at", skip_serializing_if = "Option::is_none")]
51 pub updated_at: Option<String>,
52}
53
54impl RepositoryRuleset {
55 pub fn new(id: i32, name: String, source: String, enforcement: models::RepositoryRuleEnforcement) -> RepositoryRuleset {
57 RepositoryRuleset {
58 id,
59 name,
60 target: None,
61 source_type: None,
62 source,
63 enforcement,
64 bypass_actors: None,
65 current_user_can_bypass: None,
66 node_id: None,
67 _links: None,
68 conditions: None,
69 rules: None,
70 created_at: None,
71 updated_at: None,
72 }
73 }
74}
75#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
77pub enum Target {
78 #[serde(rename = "branch")]
79 Branch,
80 #[serde(rename = "tag")]
81 Tag,
82 #[serde(rename = "push")]
83 Push,
84}
85
86impl Default for Target {
87 fn default() -> Target {
88 Self::Branch
89 }
90}
91#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
93pub enum SourceType {
94 #[serde(rename = "Repository")]
95 Repository,
96 #[serde(rename = "Organization")]
97 Organization,
98}
99
100impl Default for SourceType {
101 fn default() -> SourceType {
102 Self::Repository
103 }
104}
105#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
107pub enum CurrentUserCanBypass {
108 #[serde(rename = "always")]
109 Always,
110 #[serde(rename = "pull_requests_only")]
111 PullRequestsOnly,
112 #[serde(rename = "never")]
113 Never,
114}
115
116impl Default for CurrentUserCanBypass {
117 fn default() -> CurrentUserCanBypass {
118 Self::Always
119 }
120}
121