use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct BaseFieldDefinition {
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "label")]
pub label: String,
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "group", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub group: Option<Option<String>>,
#[serde(rename = "supported_operators")]
pub supported_operators: Vec<SupportedOperators>,
}
impl BaseFieldDefinition {
pub fn new(name: String, label: String, r#type: Type, supported_operators: Vec<SupportedOperators>) -> BaseFieldDefinition {
BaseFieldDefinition {
name,
label,
r#type,
group: None,
supported_operators,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "ENUM")]
Enum,
#[serde(rename = "TEXT")]
Text,
#[serde(rename = "INT")]
Int,
#[serde(rename = "FLOAT")]
Float,
#[serde(rename = "BOOL")]
Bool,
#[serde(rename = "TIMESTAMP")]
Timestamp,
#[serde(rename = "ARRAY")]
Array,
}
impl Default for Type {
fn default() -> Type {
Self::Enum
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum SupportedOperators {
#[serde(rename = "lt")]
Lt,
#[serde(rename = "lte")]
Lte,
#[serde(rename = "gt")]
Gt,
#[serde(rename = "gte")]
Gte,
#[serde(rename = "startswith")]
Startswith,
#[serde(rename = "istartswith")]
Istartswith,
#[serde(rename = "endswith")]
Endswith,
#[serde(rename = "iendswith")]
Iendswith,
#[serde(rename = "contains")]
Contains,
#[serde(rename = "icontains")]
Icontains,
#[serde(rename = "matches")]
Matches,
#[serde(rename = "notcontains")]
Notcontains,
#[serde(rename = "inotcontains")]
Inotcontains,
#[serde(rename = "eq")]
Eq,
#[serde(rename = "neq")]
Neq,
#[serde(rename = "isnull")]
Isnull,
#[serde(rename = "includes")]
Includes,
#[serde(rename = "excludes")]
Excludes,
#[serde(rename = "len_eq")]
LenEq,
}
impl Default for SupportedOperators {
fn default() -> SupportedOperators {
Self::Lt
}
}