use crate::entity::{MerchantApiDeliveryInfo, MerchantApiPrice, MerchantApiRating};
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct MerchantApiGoogleProductInfo {
pub product_id: Option<String>,
#[serde(rename = "type")]
pub result_type: Option<String>,
pub se_domain: Option<String>,
pub location_code: Option<i32>,
pub language_code: Option<String>,
pub check_url: Option<String>,
pub datetime: Option<String>,
pub item_types: Option<Vec<String>>,
pub items_count: Option<i64>,
pub items: Option<Vec<MerchantApiGoogleProductInfoItem>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct MerchantApiGoogleProductInfoItem {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub position: Option<String>,
pub product_id: Option<String>,
pub title: Option<String>,
pub description: Option<String>,
pub url: Option<String>,
pub images: Option<Vec<String>>,
pub features: Option<Vec<Value>>,
pub rating: Option<MerchantApiRating>,
pub seller_reviews_count: Option<i64>,
pub data_docid: Option<String>,
pub gid: Option<String>,
pub specifications: Option<Vec<MerchantApiGoogleProductSpecification>>,
pub sellers: Option<Vec<MerchantApiGoogleProductSeller>>,
pub variations: Option<Vec<MerchantApiGoogleProductVariation>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct MerchantApiGoogleProductSeller {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub title: Option<String>,
pub url: Option<String>,
pub seller_rating: Option<MerchantApiRating>,
pub seller_reviews_count: Option<i64>,
pub price: Option<MerchantApiPrice>,
pub delivery_info: Option<MerchantApiDeliveryInfo>,
pub product_availability: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct MerchantApiGoogleProductSpecification {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub block_name: Option<String>,
pub specification_name: Option<String>,
pub specification_value: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct MerchantApiGoogleProductVariation {
#[serde(rename = "type")]
pub item_type: Option<String>,
pub product_id: Option<String>,
pub gid: Option<String>,
pub pvf: Option<String>,
pub title: Option<String>,
pub url: Option<String>,
pub variation_category: Option<String>,
}