redis_cloud/models/
subscription.rs

1//! Subscription-related data models
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6/// Cloud subscription
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct CloudSubscription {
9    pub id: u32,
10    pub name: String,
11    pub status: String,
12    pub payment_method_id: Option<u32>,
13    pub memory_storage: Option<String>,
14    pub persistent_storage_encryption: Option<bool>,
15    pub cloud_provider: Option<CloudProvider>,
16    pub region: Option<String>,
17
18    #[serde(flatten)]
19    pub extra: Value,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct CloudProvider {
24    pub provider: String,
25    pub cloud_account_id: Option<u32>,
26    pub regions: Option<Vec<CloudRegion>>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct CloudRegion {
31    pub region: String,
32    pub networking_deployment_cidr: Option<String>,
33    pub preferred_availability_zones: Option<Vec<String>>,
34    pub multiple_availability_zones: Option<bool>,
35}
36
37/// Create subscription request
38#[derive(Debug, Serialize)]
39pub struct CreateSubscriptionRequest {
40    pub name: String,
41    pub payment_method_id: u32,
42    pub memory_storage: String,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub persistent_storage_encryption: Option<bool>,
45    pub cloud_provider: CloudProviderConfig,
46}
47
48#[derive(Debug, Serialize)]
49pub struct CloudProviderConfig {
50    pub provider: String,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub cloud_account_id: Option<u32>,
53    pub regions: Vec<CloudRegionConfig>,
54}
55
56#[derive(Debug, Serialize)]
57pub struct CloudRegionConfig {
58    pub region: String,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub networking_deployment_cidr: Option<String>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub preferred_availability_zones: Option<Vec<String>>,
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub multiple_availability_zones: Option<bool>,
65}
66
67/// Update subscription request
68#[derive(Debug, Serialize)]
69pub struct UpdateSubscriptionRequest {
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub name: Option<String>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub payment_method_id: Option<u32>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub memory_storage: Option<String>,
76}