use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(test, derive(Default))]
pub struct BillingPlan {
#[serde(rename = "$id")]
pub id: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "desc")]
pub desc: String,
#[serde(rename = "order")]
pub order: i64,
#[serde(rename = "price")]
pub price: f64,
#[serde(rename = "trial")]
pub trial: i64,
#[serde(rename = "bandwidth")]
pub bandwidth: i64,
#[serde(rename = "storage")]
pub storage: i64,
#[serde(rename = "imageTransformations")]
pub image_transformations: i64,
#[serde(rename = "screenshotsGenerated")]
pub screenshots_generated: i64,
#[serde(rename = "members")]
pub members: i64,
#[serde(rename = "webhooks")]
pub webhooks: i64,
#[serde(rename = "projects")]
pub projects: i64,
#[serde(rename = "platforms")]
pub platforms: i64,
#[serde(rename = "users")]
pub users: i64,
#[serde(rename = "teams")]
pub teams: i64,
#[serde(rename = "databases")]
pub databases: i64,
#[serde(rename = "databasesReads")]
pub databases_reads: i64,
#[serde(rename = "databasesWrites")]
pub databases_writes: i64,
#[serde(rename = "databasesBatchSize")]
pub databases_batch_size: i64,
#[serde(rename = "buckets")]
pub buckets: i64,
#[serde(rename = "fileSize")]
pub file_size: i64,
#[serde(rename = "functions")]
pub functions: i64,
#[serde(rename = "sites")]
pub sites: i64,
#[serde(rename = "executions")]
pub executions: i64,
#[serde(rename = "executionsRetentionCount")]
pub executions_retention_count: i64,
#[serde(rename = "GBHours")]
pub gb_hours: i64,
#[serde(rename = "realtime")]
pub realtime: i64,
#[serde(rename = "realtimeMessages")]
pub realtime_messages: i64,
#[serde(rename = "messages")]
pub messages: i64,
#[serde(rename = "topics")]
pub topics: i64,
#[serde(rename = "authPhone")]
pub auth_phone: i64,
#[serde(rename = "domains")]
pub domains: i64,
#[serde(rename = "activityLogs")]
pub activity_logs: i64,
#[serde(rename = "usageLogs")]
pub usage_logs: i64,
#[serde(rename = "usageLogsIntervals")]
#[serde(skip_serializing_if = "Option::is_none")]
pub usage_logs_intervals: Option<Vec<String>>,
#[serde(rename = "projectInactivityDays")]
pub project_inactivity_days: i64,
#[serde(rename = "alertLimit")]
pub alert_limit: i64,
#[serde(rename = "usage")]
pub usage: crate::models::UsageBillingPlan,
#[serde(rename = "addons")]
pub addons: crate::models::BillingPlanAddon,
#[serde(rename = "budgetCapEnabled")]
pub budget_cap_enabled: bool,
#[serde(rename = "customSmtp")]
pub custom_smtp: bool,
#[serde(rename = "emailBranding")]
pub email_branding: bool,
#[serde(rename = "requiresPaymentMethod")]
pub requires_payment_method: bool,
#[serde(rename = "requiresBillingAddress")]
pub requires_billing_address: bool,
#[serde(rename = "isAvailable")]
pub is_available: bool,
#[serde(rename = "selfService")]
pub self_service: bool,
#[serde(rename = "premiumSupport")]
pub premium_support: bool,
#[serde(rename = "budgeting")]
pub budgeting: bool,
#[serde(rename = "supportsMockNumbers")]
pub supports_mock_numbers: bool,
#[serde(rename = "supportsOrganizationRoles")]
pub supports_organization_roles: bool,
#[serde(rename = "supportsCredits")]
pub supports_credits: bool,
#[serde(rename = "supportsDisposableEmailValidation")]
pub supports_disposable_email_validation: bool,
#[serde(rename = "supportsCanonicalEmailValidation")]
pub supports_canonical_email_validation: bool,
#[serde(rename = "supportsFreeEmailValidation")]
pub supports_free_email_validation: bool,
#[serde(rename = "supportsCorporateEmailValidation")]
pub supports_corporate_email_validation: bool,
#[serde(rename = "supportsProjectSpecificRoles")]
pub supports_project_specific_roles: bool,
#[serde(rename = "backupsEnabled")]
pub backups_enabled: bool,
#[serde(rename = "usagePerProject")]
pub usage_per_project: bool,
#[serde(rename = "supportedAddons")]
pub supported_addons: crate::models::BillingPlanSupportedAddons,
#[serde(rename = "backupPolicies")]
pub backup_policies: i64,
#[serde(rename = "deploymentSize")]
pub deployment_size: i64,
#[serde(rename = "buildSize")]
pub build_size: i64,
#[serde(rename = "databasesAllowEncrypt")]
pub databases_allow_encrypt: bool,
#[serde(rename = "limits")]
#[serde(skip_serializing_if = "Option::is_none")]
pub limits: Option<crate::models::BillingPlanLimits>,
#[serde(rename = "group")]
pub group: crate::enums::BillingPlanGroup,
#[serde(rename = "program")]
#[serde(skip_serializing_if = "Option::is_none")]
pub program: Option<crate::models::Program>,
#[serde(rename = "dedicatedDatabases")]
#[serde(skip_serializing_if = "Option::is_none")]
pub dedicated_databases: Option<crate::models::BillingPlanDedicatedDatabaseLimits>,
}
impl BillingPlan {
pub fn id(&self) -> &String {
&self.id
}
pub fn name(&self) -> &String {
&self.name
}
pub fn desc(&self) -> &String {
&self.desc
}
pub fn order(&self) -> &i64 {
&self.order
}
pub fn price(&self) -> &f64 {
&self.price
}
pub fn trial(&self) -> &i64 {
&self.trial
}
pub fn bandwidth(&self) -> &i64 {
&self.bandwidth
}
pub fn storage(&self) -> &i64 {
&self.storage
}
pub fn image_transformations(&self) -> &i64 {
&self.image_transformations
}
pub fn screenshots_generated(&self) -> &i64 {
&self.screenshots_generated
}
pub fn members(&self) -> &i64 {
&self.members
}
pub fn webhooks(&self) -> &i64 {
&self.webhooks
}
pub fn projects(&self) -> &i64 {
&self.projects
}
pub fn platforms(&self) -> &i64 {
&self.platforms
}
pub fn users(&self) -> &i64 {
&self.users
}
pub fn teams(&self) -> &i64 {
&self.teams
}
pub fn databases(&self) -> &i64 {
&self.databases
}
pub fn databases_reads(&self) -> &i64 {
&self.databases_reads
}
pub fn databases_writes(&self) -> &i64 {
&self.databases_writes
}
pub fn databases_batch_size(&self) -> &i64 {
&self.databases_batch_size
}
pub fn buckets(&self) -> &i64 {
&self.buckets
}
pub fn file_size(&self) -> &i64 {
&self.file_size
}
pub fn functions(&self) -> &i64 {
&self.functions
}
pub fn sites(&self) -> &i64 {
&self.sites
}
pub fn executions(&self) -> &i64 {
&self.executions
}
pub fn executions_retention_count(&self) -> &i64 {
&self.executions_retention_count
}
pub fn gb_hours(&self) -> &i64 {
&self.gb_hours
}
pub fn realtime(&self) -> &i64 {
&self.realtime
}
pub fn realtime_messages(&self) -> &i64 {
&self.realtime_messages
}
pub fn messages(&self) -> &i64 {
&self.messages
}
pub fn topics(&self) -> &i64 {
&self.topics
}
pub fn auth_phone(&self) -> &i64 {
&self.auth_phone
}
pub fn domains(&self) -> &i64 {
&self.domains
}
pub fn activity_logs(&self) -> &i64 {
&self.activity_logs
}
pub fn usage_logs(&self) -> &i64 {
&self.usage_logs
}
pub fn set_usage_logs_intervals(mut self, usage_logs_intervals: Vec<String>) -> Self {
self.usage_logs_intervals = Some(usage_logs_intervals);
self
}
pub fn usage_logs_intervals(&self) -> Option<&Vec<String>> {
self.usage_logs_intervals.as_ref()
}
pub fn project_inactivity_days(&self) -> &i64 {
&self.project_inactivity_days
}
pub fn alert_limit(&self) -> &i64 {
&self.alert_limit
}
pub fn usage(&self) -> &crate::models::UsageBillingPlan {
&self.usage
}
pub fn addons(&self) -> &crate::models::BillingPlanAddon {
&self.addons
}
pub fn budget_cap_enabled(&self) -> &bool {
&self.budget_cap_enabled
}
pub fn custom_smtp(&self) -> &bool {
&self.custom_smtp
}
pub fn email_branding(&self) -> &bool {
&self.email_branding
}
pub fn requires_payment_method(&self) -> &bool {
&self.requires_payment_method
}
pub fn requires_billing_address(&self) -> &bool {
&self.requires_billing_address
}
pub fn is_available(&self) -> &bool {
&self.is_available
}
pub fn self_service(&self) -> &bool {
&self.self_service
}
pub fn premium_support(&self) -> &bool {
&self.premium_support
}
pub fn budgeting(&self) -> &bool {
&self.budgeting
}
pub fn supports_mock_numbers(&self) -> &bool {
&self.supports_mock_numbers
}
pub fn supports_organization_roles(&self) -> &bool {
&self.supports_organization_roles
}
pub fn supports_credits(&self) -> &bool {
&self.supports_credits
}
pub fn supports_disposable_email_validation(&self) -> &bool {
&self.supports_disposable_email_validation
}
pub fn supports_canonical_email_validation(&self) -> &bool {
&self.supports_canonical_email_validation
}
pub fn supports_free_email_validation(&self) -> &bool {
&self.supports_free_email_validation
}
pub fn supports_corporate_email_validation(&self) -> &bool {
&self.supports_corporate_email_validation
}
pub fn supports_project_specific_roles(&self) -> &bool {
&self.supports_project_specific_roles
}
pub fn backups_enabled(&self) -> &bool {
&self.backups_enabled
}
pub fn usage_per_project(&self) -> &bool {
&self.usage_per_project
}
pub fn supported_addons(&self) -> &crate::models::BillingPlanSupportedAddons {
&self.supported_addons
}
pub fn backup_policies(&self) -> &i64 {
&self.backup_policies
}
pub fn deployment_size(&self) -> &i64 {
&self.deployment_size
}
pub fn build_size(&self) -> &i64 {
&self.build_size
}
pub fn databases_allow_encrypt(&self) -> &bool {
&self.databases_allow_encrypt
}
pub fn set_limits(mut self, limits: crate::models::BillingPlanLimits) -> Self {
self.limits = Some(limits);
self
}
pub fn limits(&self) -> Option<&crate::models::BillingPlanLimits> {
self.limits.as_ref()
}
pub fn group(&self) -> &crate::enums::BillingPlanGroup {
&self.group
}
pub fn set_program(mut self, program: crate::models::Program) -> Self {
self.program = Some(program);
self
}
pub fn program(&self) -> Option<&crate::models::Program> {
self.program.as_ref()
}
pub fn set_dedicated_databases(mut self, dedicated_databases: crate::models::BillingPlanDedicatedDatabaseLimits) -> Self {
self.dedicated_databases = Some(dedicated_databases);
self
}
pub fn dedicated_databases(&self) -> Option<&crate::models::BillingPlanDedicatedDatabaseLimits> {
self.dedicated_databases.as_ref()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_billing_plan_creation() {
let _model = <BillingPlan as Default>::default();
let _ = _model.id();
let _ = _model.name();
let _ = _model.desc();
let _ = _model.order();
let _ = _model.price();
let _ = _model.trial();
let _ = _model.bandwidth();
let _ = _model.storage();
let _ = _model.image_transformations();
let _ = _model.screenshots_generated();
let _ = _model.members();
let _ = _model.webhooks();
let _ = _model.projects();
let _ = _model.platforms();
let _ = _model.users();
let _ = _model.teams();
let _ = _model.databases();
let _ = _model.databases_reads();
let _ = _model.databases_writes();
let _ = _model.databases_batch_size();
let _ = _model.buckets();
let _ = _model.file_size();
let _ = _model.functions();
let _ = _model.sites();
let _ = _model.executions();
let _ = _model.executions_retention_count();
let _ = _model.gb_hours();
let _ = _model.realtime();
let _ = _model.realtime_messages();
let _ = _model.messages();
let _ = _model.topics();
let _ = _model.auth_phone();
let _ = _model.domains();
let _ = _model.activity_logs();
let _ = _model.usage_logs();
let _ = _model.project_inactivity_days();
let _ = _model.alert_limit();
let _ = _model.usage();
let _ = _model.addons();
let _ = _model.budget_cap_enabled();
let _ = _model.custom_smtp();
let _ = _model.email_branding();
let _ = _model.requires_payment_method();
let _ = _model.requires_billing_address();
let _ = _model.is_available();
let _ = _model.self_service();
let _ = _model.premium_support();
let _ = _model.budgeting();
let _ = _model.supports_mock_numbers();
let _ = _model.supports_organization_roles();
let _ = _model.supports_credits();
let _ = _model.supports_disposable_email_validation();
let _ = _model.supports_canonical_email_validation();
let _ = _model.supports_free_email_validation();
let _ = _model.supports_corporate_email_validation();
let _ = _model.supports_project_specific_roles();
let _ = _model.backups_enabled();
let _ = _model.usage_per_project();
let _ = _model.supported_addons();
let _ = _model.backup_policies();
let _ = _model.deployment_size();
let _ = _model.build_size();
let _ = _model.databases_allow_encrypt();
let _ = _model.group();
}
#[test]
fn test_billing_plan_serialization() {
let model = <BillingPlan as Default>::default();
let json = serde_json::to_string(&model);
assert!(json.is_ok());
let deserialized: Result<BillingPlan, _> = serde_json::from_str(&json.unwrap());
assert!(deserialized.is_ok());
}
}