dev_scope/models/v1alpha/
report_definition.rs1use crate::models::core::ModelMetadata;
2
3use crate::models::v1alpha::V1AlphaApiVersion;
4use derive_builder::Builder;
5
6use crate::models::{HelpMetadata, InternalScopeModel, ScopeModel};
7use schemars::JsonSchema;
8use serde::{Deserialize, Serialize};
9use std::collections::BTreeMap;
10
11#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Builder, JsonSchema)]
13#[serde(rename_all = "camelCase")]
14#[schemars(deny_unknown_fields)]
15pub struct ReportDefinitionSpec {
16 #[serde(default)]
17 pub additional_data: BTreeMap<String, String>,
21
22 pub template: String,
25}
26
27#[derive(Serialize, Deserialize, Debug, strum::Display, Clone, PartialEq, JsonSchema)]
28pub enum ReportDefinitionKind {
29 #[strum(serialize = "ScopeReportDefinition")]
30 ScopeReportDefinition,
31}
32
33#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Builder, JsonSchema)]
36#[builder(setter(into))]
37#[serde(rename_all = "camelCase")]
38#[schemars(deny_unknown_fields)]
39pub struct V1AlphaReportDefinition {
40 pub api_version: V1AlphaApiVersion,
42 pub kind: ReportDefinitionKind,
44 pub metadata: ModelMetadata,
48 pub spec: ReportDefinitionSpec,
50}
51
52impl HelpMetadata for V1AlphaReportDefinition {
53 fn metadata(&self) -> &ModelMetadata {
54 &self.metadata
55 }
56
57 fn full_name(&self) -> String {
58 format!("{}/{}", self.kind(), self.name())
59 }
60}
61
62impl ScopeModel<ReportDefinitionSpec> for V1AlphaReportDefinition {
63 fn api_version(&self) -> String {
64 Self::int_api_version()
65 }
66
67 fn kind(&self) -> String {
68 Self::int_kind()
69 }
70
71 fn spec(&self) -> &ReportDefinitionSpec {
72 &self.spec
73 }
74}
75
76impl InternalScopeModel<ReportDefinitionSpec, V1AlphaReportDefinition> for V1AlphaReportDefinition {
77 fn int_api_version() -> String {
78 V1AlphaApiVersion::ScopeV1Alpha.to_string()
79 }
80
81 fn int_kind() -> String {
82 ReportDefinitionKind::ScopeReportDefinition.to_string()
83 }
84 #[cfg(test)]
85 fn examples() -> Vec<String> {
86 vec!["v1alpha/ReportDefinition.yaml".to_string()]
87 }
88}