use serde::{Deserialize, Serialize};
use crate::{models::common::BaseParams, PDLError};
#[derive(Debug, Serialize, Deserialize)]
pub struct AutocompleteBaseParams {
#[serde(rename = "field", default)]
pub field: String,
#[serde(rename = "text", default)]
pub text: Option<String>,
#[serde(rename = "titlecase", skip_serializing_if = "Option::is_none")]
pub titlecase: Option<bool>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AutocompleteParams {
#[serde(flatten)]
pub base_params: Option<BaseParams>,
#[serde(flatten)]
pub autocomplete_base_params: AutocompleteBaseParams,
}
impl AutocompleteParams {
pub fn validate(&self) -> Result<(), PDLError> {
if self.autocomplete_base_params.field.is_empty() {
return Err(PDLError::ValidationError);
}
Ok(())
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AutocompleteResponse {
pub status: i32,
pub data: Option<Vec<AutocompleteResult>>,
pub fields: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Meta {
pub website: Option<String>,
pub location_name: Option<String>,
pub id: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AutocompleteResult {
pub name: Option<String>,
pub count: Option<i32>,
pub meta: Option<Meta>,
}