eio_okta_sync/github/
team_membership.rs1use 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}