use crate::entity::{DataForSeoLabsKeywordData, DataForSeoLabsMonthlySearch};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonRankedKeywordItem {
pub se_type: Option<String>,
pub ranked_serp_element: Option<DataForSeoLabsAmazonRankedSerpElement>,
pub keyword_data: Option<DataForSeoLabsKeywordData>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonRankedSerpElement {
pub se_type: Option<String>,
pub serp_item: Option<DataForSeoLabsAmazonSerpItem>,
pub check_url: Option<String>,
pub last_updated_time: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonSerpItem {
pub se_type: Option<String>,
#[serde(rename = "type")]
pub item_type: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub domain: Option<String>,
pub title: Option<String>,
pub url: Option<String>,
pub asin: Option<String>,
pub price_from: Option<f64>,
pub price_to: Option<f64>,
pub currency: Option<String>,
pub rating: Option<DataForSeoLabsAmazonRating>,
pub is_best_seller: Option<bool>,
pub is_amazon_choice: Option<bool>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonRating {
pub rating_type: Option<String>,
pub value: Option<f64>,
pub votes_count: Option<i64>,
pub rating_max: Option<i64>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonSearchVolumeItem {
pub se_type: Option<String>,
pub keyword: Option<String>,
pub keyword_info: Option<DataForSeoLabsAmazonKeywordInfo>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonKeywordInfo {
pub se_type: Option<String>,
pub last_updated_time: Option<String>,
pub search_volume: Option<i64>,
pub monthly_searches: Option<Vec<DataForSeoLabsMonthlySearch>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonRelatedKeywordItem {
pub se_type: Option<String>,
pub keyword_data: Option<DataForSeoLabsKeywordData>,
pub depth: Option<i64>,
pub related_keywords: Option<Vec<String>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonProductCompetitorItem {
pub se_type: Option<String>,
pub asin: Option<String>,
pub avg_position: Option<f64>,
pub sum_position: Option<i64>,
pub intersections: Option<i64>,
pub competitor_metrics: Option<DataForSeoLabsAmazonMetrics>,
pub full_metrics: Option<DataForSeoLabsAmazonMetrics>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonProductRankOverviewItem {
pub se_type: Option<String>,
pub location_code: Option<i32>,
pub language_code: Option<String>,
pub metrics: Option<DataForSeoLabsAmazonMetrics>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonMetrics {
pub amazon_serp: Option<DataForSeoLabsAmazonMetricsInfo>,
pub amazon_paid: Option<DataForSeoLabsAmazonMetricsInfo>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonMetricsInfo {
pub pos_1: Option<i64>,
pub pos_2_3: Option<i64>,
pub pos_4_10: Option<i64>,
pub pos_11_100: Option<i64>,
pub count: Option<i64>,
pub search_volume: Option<i64>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct DataForSeoLabsAmazonProductKeywordIntersectionItem {
pub se_type: Option<String>,
pub keyword_data: Option<DataForSeoLabsKeywordData>,
pub intersection_result: Option<HashMap<String, DataForSeoLabsAmazonSerpItem>>,
}