use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SearchRequest {
#[serde(rename = "table")]
pub table: String,
#[serde(rename = "query", skip_serializing_if = "Option::is_none")]
pub query: Option<Box<models::SearchQuery>>,
#[serde(rename = "join", skip_serializing_if = "Option::is_none")]
pub join: Option<Vec<models::Join>>,
#[serde(rename = "highlight", skip_serializing_if = "Option::is_none")]
pub highlight: Option<Box<models::Highlight>>,
#[serde(rename = "limit", skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(rename = "knn", skip_serializing_if = "Option::is_none")]
pub knn: Option<Box<models::Knn>>,
#[serde(rename = "aggs", skip_serializing_if = "Option::is_none")]
pub aggs: Option<std::collections::HashMap<String, models::Aggregation>>,
#[serde(rename = "expressions", skip_serializing_if = "Option::is_none")]
pub expressions: Option<std::collections::HashMap<String, String>>,
#[serde(rename = "max_matches", skip_serializing_if = "Option::is_none")]
pub max_matches: Option<i32>,
#[serde(rename = "offset", skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(rename = "options", skip_serializing_if = "Option::is_none")]
pub options: Option<serde_json::Value>,
#[serde(rename = "profile", skip_serializing_if = "Option::is_none")]
pub profile: Option<bool>,
#[serde(rename = "sort", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub sort: Option<Option<serde_json::Value>>,
#[serde(rename = "_source", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub _source: Option<Option<serde_json::Value>>,
#[serde(rename = "track_scores", skip_serializing_if = "Option::is_none")]
pub track_scores: Option<bool>,
}
impl SearchRequest {
pub fn new(table: String) -> SearchRequest {
SearchRequest {
table,
query: None,
join: None,
highlight: None,
limit: None,
knn: None,
aggs: None,
expressions: None,
max_matches: None,
offset: None,
options: None,
profile: None,
sort: None,
_source: None,
track_scores: None,
}
}
}