use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateInstance {
#[serde(
rename = "app_services",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub app_services: Option<Option<Vec<models::AppType>>>,
#[serde(
rename = "autoscaling",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub autoscaling: Option<Option<Box<models::PatchAutoscaling>>>,
#[serde(
rename = "connection_pooler",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub connection_pooler: Option<Option<Box<models::ConnectionPooler>>>,
#[serde(rename = "cpu")]
pub cpu: models::Cpu,
#[serde(
rename = "dedicated_networking",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub dedicated_networking: Option<Option<Box<models::DedicatedNetworking>>>,
#[serde(rename = "environment")]
pub environment: models::Environment,
#[serde(
rename = "experimental",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub experimental: Option<Option<Box<models::Experimental>>>,
#[serde(
rename = "extensions",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub extensions: Option<Option<Vec<models::Extension>>>,
#[serde(
rename = "extra_domains_rw",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub extra_domains_rw: Option<Option<Vec<String>>>,
#[serde(rename = "instance_name")]
pub instance_name: String,
#[serde(
rename = "ip_allow_list",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub ip_allow_list: Option<Option<Vec<String>>>,
#[serde(rename = "memory")]
pub memory: models::Memory,
#[serde(rename = "pg_version", skip_serializing_if = "Option::is_none")]
pub pg_version: Option<i32>,
#[serde(
rename = "postgres_configs",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub postgres_configs: Option<Option<Vec<models::PgConfig>>>,
#[serde(rename = "provider_id", skip_serializing_if = "Option::is_none")]
pub provider_id: Option<String>,
#[serde(rename = "region_id", skip_serializing_if = "Option::is_none")]
pub region_id: Option<String>,
#[serde(rename = "replicas", skip_serializing_if = "Option::is_none")]
pub replicas: Option<i32>,
#[serde(
rename = "spot",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub spot: Option<Option<bool>>,
#[serde(rename = "stack_type")]
pub stack_type: models::StackType,
#[serde(rename = "storage")]
pub storage: models::Storage,
#[serde(
rename = "trunk_installs",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub trunk_installs: Option<Option<Vec<models::TrunkInstall>>>,
}
impl CreateInstance {
pub fn new(
cpu: models::Cpu,
environment: models::Environment,
instance_name: String,
memory: models::Memory,
stack_type: models::StackType,
storage: models::Storage,
) -> CreateInstance {
CreateInstance {
app_services: None,
autoscaling: None,
connection_pooler: None,
cpu,
dedicated_networking: None,
environment,
experimental: None,
extensions: None,
extra_domains_rw: None,
instance_name,
ip_allow_list: None,
memory,
pg_version: None,
postgres_configs: None,
provider_id: None,
region_id: None,
replicas: None,
spot: None,
stack_type,
storage,
trunk_installs: None,
}
}
}