use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PostSearchAggregateRequest {
#[serde(rename = "query")]
pub query: String,
#[serde(rename = "site", skip_serializing_if = "Option::is_none")]
pub site: Option<String>,
#[serde(rename = "filetype", skip_serializing_if = "Option::is_none")]
pub filetype: Option<String>,
#[serde(rename = "fetch_full", skip_serializing_if = "Option::is_none")]
pub fetch_full: Option<bool>,
#[serde(rename = "timeout_ms", skip_serializing_if = "Option::is_none")]
pub timeout_ms: Option<i32>,
#[serde(rename = "sort", skip_serializing_if = "Option::is_none")]
pub sort: Option<Sort>,
#[serde(rename = "time_range", skip_serializing_if = "Option::is_none")]
pub time_range: Option<TimeRange>,
}
impl PostSearchAggregateRequest {
pub fn new(query: String) -> PostSearchAggregateRequest {
PostSearchAggregateRequest {
query,
site: None,
filetype: None,
fetch_full: None,
timeout_ms: None,
sort: None,
time_range: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Sort {
#[serde(rename = "relevance")]
Relevance,
#[serde(rename = "date")]
Date,
}
impl Default for Sort {
fn default() -> Sort {
Self::Relevance
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TimeRange {
#[serde(rename = "day")]
Day,
#[serde(rename = "week")]
Week,
#[serde(rename = "month")]
Month,
#[serde(rename = "year")]
Year,
}
impl Default for TimeRange {
fn default() -> TimeRange {
Self::Day
}
}