marketlib/jsonb/
parameters_values.rsuse chrono::{NaiveDateTime};
use common::utils::serialize_option_naive_date;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::enums::parameter_type::ParameterType;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ParametersValues {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_i32: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_f32: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_string: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_bool: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_time: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_date: Option<i64>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
#[serde(skip_serializing_if = "Option::is_none")]
pub value_date_time: Option<NaiveDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_type: Option<ParameterType>,
}
impl ParametersValues {
pub fn normalize(&self) -> ParametersValues {
ParametersValues {
id: Option::from(if self.id.is_none() {
Uuid::new_v4()
} else {
self.id.unwrap()
}),
value_i32: self.value_i32,
value_f32: self.value_f32,
value_string: self.value_string.clone(),
value_bool: self.value_bool,
value_time: self.value_time,
value_date: self.value_date,
value_date_time: self.value_date_time,
group: self.group,
parameter_type: self.parameter_type.clone(),
}
}
}