eio_okta_sync/github/
team_membership.rs

1use indexmap::IndexMap;
2use serde_json::Value;
3
4#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
5#[serde(rename_all = "camelCase")]
6#[remain::sorted]
7pub struct TeamMembership {
8  pub role: Role,
9  #[serde(flatten)]
10  pub team_id: TeamId,
11  pub username: String,
12}
13
14impl TeamMembership {
15  pub const API_GROUP_VERSION: &str = "team.github.upbound.io/v1alpha1";
16  pub const KIND: &str = "TeamMembership";
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
20#[serde(rename_all = "camelCase")]
21#[remain::sorted]
22pub enum TeamId {
23  TeamId(String),
24  TeamIdRef(TeamIdRef),
25  TeamIdSelector(TeamIdSelector),
26}
27
28#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
29#[remain::sorted]
30pub struct TeamIdRef {
31  pub name: String,
32  pub policy: Option<crate::crossplane::Policy>,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
36#[serde(rename_all = "camelCase")]
37#[remain::sorted]
38pub struct TeamIdSelector {
39  pub match_controller_ref: bool,
40  pub match_labels: IndexMap<String, Value>,
41  pub policy: Option<crate::crossplane::Policy>,
42}
43
44#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
45#[remain::sorted]
46pub enum Role {
47  Maintainer,
48  #[default]
49  Member,
50}
51
52impl From<String> for TeamId {
53  fn from(value: String) -> Self {
54    Self::TeamId(value)
55  }
56}
57
58impl From<TeamIdRef> for TeamId {
59  fn from(value: TeamIdRef) -> Self {
60    Self::TeamIdRef(value)
61  }
62}
63
64impl From<TeamIdSelector> for TeamId {
65  fn from(value: TeamIdSelector) -> Self {
66    Self::TeamIdSelector(value)
67  }
68}