use serde::{Deserialize, Serialize};
use super::common::{AxgfDate, BaseEntity, Extra};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct Employer {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub place_id: Option<String>,
#[serde(flatten)]
pub extra: Extra,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct OccupationBoundary {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<AxgfDate>,
#[serde(flatten)]
pub extra: Extra,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Occupation {
#[serde(flatten)]
pub base: BaseEntity,
pub person_id: String,
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title_latin: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title_normalized: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub employer: Option<Employer>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub place_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub valid_from: Option<OccupationBoundary>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub valid_until: Option<OccupationBoundary>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub note: Option<String>,
#[serde(flatten)]
pub extra: Extra,
}