1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct CreateInstance {
16 #[serde(
17 rename = "app_services",
18 default,
19 with = "::serde_with::rust::double_option",
20 skip_serializing_if = "Option::is_none"
21 )]
22 pub app_services: Option<Option<Vec<models::AppType>>>,
23 #[serde(
24 rename = "autoscaling",
25 default,
26 with = "::serde_with::rust::double_option",
27 skip_serializing_if = "Option::is_none"
28 )]
29 pub autoscaling: Option<Option<Box<models::PatchAutoscaling>>>,
30 #[serde(
31 rename = "connection_pooler",
32 default,
33 with = "::serde_with::rust::double_option",
34 skip_serializing_if = "Option::is_none"
35 )]
36 pub connection_pooler: Option<Option<Box<models::ConnectionPooler>>>,
37 #[serde(rename = "cpu")]
38 pub cpu: models::Cpu,
39 #[serde(
40 rename = "dedicated_networking",
41 default,
42 with = "::serde_with::rust::double_option",
43 skip_serializing_if = "Option::is_none"
44 )]
45 pub dedicated_networking: Option<Option<Box<models::DedicatedNetworking>>>,
46 #[serde(rename = "environment")]
47 pub environment: models::Environment,
48 #[serde(
49 rename = "experimental",
50 default,
51 with = "::serde_with::rust::double_option",
52 skip_serializing_if = "Option::is_none"
53 )]
54 pub experimental: Option<Option<Box<models::Experimental>>>,
55 #[serde(
56 rename = "extensions",
57 default,
58 with = "::serde_with::rust::double_option",
59 skip_serializing_if = "Option::is_none"
60 )]
61 pub extensions: Option<Option<Vec<models::Extension>>>,
62 #[serde(
63 rename = "extra_domains_rw",
64 default,
65 with = "::serde_with::rust::double_option",
66 skip_serializing_if = "Option::is_none"
67 )]
68 pub extra_domains_rw: Option<Option<Vec<String>>>,
69 #[serde(rename = "instance_name")]
70 pub instance_name: String,
71 #[serde(
72 rename = "ip_allow_list",
73 default,
74 with = "::serde_with::rust::double_option",
75 skip_serializing_if = "Option::is_none"
76 )]
77 pub ip_allow_list: Option<Option<Vec<String>>>,
78 #[serde(rename = "memory")]
79 pub memory: models::Memory,
80 #[serde(rename = "pg_version", skip_serializing_if = "Option::is_none")]
81 pub pg_version: Option<i32>,
82 #[serde(
83 rename = "postgres_configs",
84 default,
85 with = "::serde_with::rust::double_option",
86 skip_serializing_if = "Option::is_none"
87 )]
88 pub postgres_configs: Option<Option<Vec<models::PgConfig>>>,
89 #[serde(rename = "provider_id", skip_serializing_if = "Option::is_none")]
90 pub provider_id: Option<String>,
91 #[serde(rename = "region_id", skip_serializing_if = "Option::is_none")]
92 pub region_id: Option<String>,
93 #[serde(rename = "replicas", skip_serializing_if = "Option::is_none")]
94 pub replicas: Option<i32>,
95 #[serde(
96 rename = "spot",
97 default,
98 with = "::serde_with::rust::double_option",
99 skip_serializing_if = "Option::is_none"
100 )]
101 pub spot: Option<Option<bool>>,
102 #[serde(rename = "stack_type")]
103 pub stack_type: models::StackType,
104 #[serde(rename = "storage")]
105 pub storage: models::Storage,
106 #[serde(
107 rename = "trunk_installs",
108 default,
109 with = "::serde_with::rust::double_option",
110 skip_serializing_if = "Option::is_none"
111 )]
112 pub trunk_installs: Option<Option<Vec<models::TrunkInstall>>>,
113}
114
115impl CreateInstance {
116 pub fn new(
117 cpu: models::Cpu,
118 environment: models::Environment,
119 instance_name: String,
120 memory: models::Memory,
121 stack_type: models::StackType,
122 storage: models::Storage,
123 ) -> CreateInstance {
124 CreateInstance {
125 app_services: None,
126 autoscaling: None,
127 connection_pooler: None,
128 cpu,
129 dedicated_networking: None,
130 environment,
131 experimental: None,
132 extensions: None,
133 extra_domains_rw: None,
134 instance_name,
135 ip_allow_list: None,
136 memory,
137 pg_version: None,
138 postgres_configs: None,
139 provider_id: None,
140 region_id: None,
141 replicas: None,
142 spot: None,
143 stack_type,
144 storage,
145 trunk_installs: None,
146 }
147 }
148}