use crate::models;
use ::std::borrow::Cow;
use serde::{Deserialize, Serialize};
#[derive(bon::Builder)]
#[builder(on(Cow<'_, str>, into))]
#[builder(on(String, into))]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Field {
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "type")]
pub r#type: String,
#[serde(rename = "optional", skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
#[serde(rename = "facet", skip_serializing_if = "Option::is_none")]
pub facet: Option<bool>,
#[serde(rename = "index", skip_serializing_if = "Option::is_none")]
pub index: Option<bool>,
#[serde(rename = "locale", skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[serde(rename = "sort", skip_serializing_if = "Option::is_none")]
pub sort: Option<bool>,
#[serde(rename = "infix", skip_serializing_if = "Option::is_none")]
pub infix: Option<bool>,
#[serde(rename = "reference", skip_serializing_if = "Option::is_none")]
pub reference: Option<String>,
#[serde(rename = "async_reference", skip_serializing_if = "Option::is_none")]
pub async_reference: Option<bool>,
#[serde(rename = "num_dim", skip_serializing_if = "Option::is_none")]
pub num_dim: Option<i32>,
#[serde(rename = "drop", skip_serializing_if = "Option::is_none")]
pub drop: Option<bool>,
#[serde(rename = "store", skip_serializing_if = "Option::is_none")]
pub store: Option<bool>,
#[serde(rename = "vec_dist", skip_serializing_if = "Option::is_none")]
pub vec_dist: Option<String>,
#[serde(rename = "range_index", skip_serializing_if = "Option::is_none")]
pub range_index: Option<bool>,
#[serde(rename = "stem", skip_serializing_if = "Option::is_none")]
pub stem: Option<bool>,
#[serde(rename = "stem_dictionary", skip_serializing_if = "Option::is_none")]
pub stem_dictionary: Option<String>,
#[serde(rename = "token_separators", skip_serializing_if = "Option::is_none")]
pub token_separators: Option<Vec<String>>,
#[serde(rename = "symbols_to_index", skip_serializing_if = "Option::is_none")]
pub symbols_to_index: Option<Vec<String>>,
#[serde(rename = "embed", skip_serializing_if = "Option::is_none")]
pub embed: Option<Box<models::FieldEmbed>>,
}
impl Field {
pub fn new(name: String, r#type: String) -> Self {
Self {
name,
r#type,
optional: None,
facet: None,
index: None,
locale: None,
sort: None,
infix: None,
reference: None,
async_reference: None,
num_dim: None,
drop: None,
store: None,
vec_dist: None,
range_index: None,
stem: None,
stem_dictionary: None,
token_separators: None,
symbols_to_index: None,
embed: None,
}
}
}