use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Product {
#[serde(rename = "archived", skip_serializing_if = "Option::is_none")]
pub archived: Option<bool>,
#[serde(rename = "created", skip_serializing_if = "Option::is_none")]
pub created: Option<String>,
#[serde(rename = "description")]
pub description: String,
#[serde(rename = "displayName")]
pub display_name: String,
#[serde(rename = "groupAccess", skip_serializing_if = "Option::is_none")]
pub group_access: Option<bool>,
#[serde(rename = "groupAccessRemove", skip_serializing_if = "Option::is_none")]
pub group_access_remove: Option<bool>,
#[serde(rename = "groupId", skip_serializing_if = "Option::is_none")]
pub group_id: Option<String>,
#[serde(rename = "groupRoleId", skip_serializing_if = "Option::is_none")]
pub group_role_id: Option<String>,
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "imageId")]
pub image_id: String,
#[serde(
rename = "imageUrl",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub image_url: Option<Option<String>>,
#[serde(rename = "parentListings")]
pub parent_listings: Vec<String>,
#[serde(rename = "productType")]
pub product_type: models::ProductType,
#[serde(rename = "productTypeLabel", skip_serializing_if = "Option::is_none")]
pub product_type_label: Option<String>,
#[serde(rename = "purchaseCount", skip_serializing_if = "Option::is_none")]
pub purchase_count: Option<i32>,
#[serde(
rename = "purchaseCountQuantity",
skip_serializing_if = "Option::is_none"
)]
pub purchase_count_quantity: Option<i32>,
#[serde(rename = "sellerDisplayName")]
pub seller_display_name: String,
#[serde(rename = "sellerId")]
pub seller_id: String,
#[serde(rename = "tags")]
pub tags: Vec<String>,
#[serde(
rename = "updated",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub updated: Option<Option<String>>,
#[serde(
rename = "useForSubscriberList",
skip_serializing_if = "Option::is_none"
)]
pub use_for_subscriber_list: Option<bool>,
}
impl Product {
pub fn new(
description: String,
display_name: String,
id: String,
image_id: String,
parent_listings: Vec<String>,
product_type: models::ProductType,
seller_display_name: String,
seller_id: String,
tags: Vec<String>,
) -> Product {
Product {
archived: None,
created: None,
description,
display_name,
group_access: None,
group_access_remove: None,
group_id: None,
group_role_id: None,
id,
image_id,
image_url: None,
parent_listings,
product_type,
product_type_label: None,
purchase_count: None,
purchase_count_quantity: None,
seller_display_name,
seller_id,
tags,
updated: None,
use_for_subscriber_list: None,
}
}
}