seaplane/api/shared/v1/
models.rs1use serde::Serialize;
5use strum::{EnumString, EnumVariantNames};
6
7#[derive(
9 Clone,
10 Copy,
11 Debug,
12 Hash,
13 Serialize,
14 Eq,
15 PartialEq,
16 PartialOrd,
17 Ord,
18 strum::Display,
19 EnumString,
20 EnumVariantNames,
21)]
22#[allow(clippy::upper_case_acronyms)]
23#[strum(ascii_case_insensitive)]
24#[non_exhaustive]
25pub enum Provider {
26 AWS,
27 Azure,
28 DigitalOcean,
29 Equinix,
30 GCP,
31}
32
33impl_deser_from_str!(Provider);
34
35#[cfg(test)]
36mod test_provider {
37 use super::*;
38
39 #[test]
40 fn provider_case_insensitive() {
41 let provider: Provider = serde_json::from_str("\"aws\"").unwrap();
42 assert_eq!(provider, Provider::AWS);
43 let provider: Provider = serde_json::from_str("\"Aws\"").unwrap();
44 assert_eq!(provider, Provider::AWS);
45 let provider: Provider = serde_json::from_str("\"AWS\"").unwrap();
46 assert_eq!(provider, Provider::AWS);
47 }
48}
49
50#[derive(
52 strum::Display, EnumString, Debug, Serialize, Hash, Eq, PartialEq, PartialOrd, Ord, Copy, Clone,
53)]
54#[allow(clippy::upper_case_acronyms)]
55#[strum(ascii_case_insensitive)]
56#[non_exhaustive]
57pub enum Region {
58 XA,
60 XC,
62 XE,
64 XF,
66 XN,
68 XO,
70 XQ,
72 XS,
74 XU,
76}
77
78impl_deser_from_str!(Region);
79
80#[cfg(test)]
81mod test_region {
82 use super::*;
83
84 #[test]
85 fn region_case_insensitive() {
86 let region: Region = serde_json::from_str("\"xn\"").unwrap();
87 assert_eq!(region, Region::XN);
88 let region: Region = serde_json::from_str("\"Xn\"").unwrap();
89 assert_eq!(region, Region::XN);
90 let region: Region = serde_json::from_str("\"XN\"").unwrap();
91 assert_eq!(region, Region::XN);
92 }
93}