use serde::{Deserialize, Serialize};
use super::serde_helpers::{deserialize_i64, deserialize_optional_i32, deserialize_optional_i64};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Reference {
#[serde(deserialize_with = "deserialize_i64")]
pub ref_id: i64,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub ref_his_id: Option<i64>,
#[serde(default)]
pub ref_entrydate: Option<String>,
#[serde(default)]
pub ref_editdate: Option<String>,
#[serde(default)]
pub ref_rawtext: Option<String>,
#[serde(default)]
pub ref_htmltext: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_type: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_access: Option<i32>,
#[serde(default)]
pub ref_title: Option<String>,
#[serde(default)]
pub ref_journal: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_year: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_year_to: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_month: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_day: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_series: Option<i32>,
#[serde(default)]
pub ref_volume: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_volume_int: Option<i32>,
#[serde(default)]
pub ref_issue: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_issue_int: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_pagefrom: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_pageto: Option<i32>,
#[serde(default)]
pub ref_pagefrom_txt: Option<String>,
#[serde(default)]
pub ref_pageto_txt: Option<String>,
#[serde(default)]
pub ref_publisher: Option<String>,
#[serde(default)]
pub ref_place: Option<String>,
#[serde(default)]
pub ref_url: Option<String>,
#[serde(default)]
pub ref_file_url: Option<String>,
#[serde(default)]
pub ref_doi: Option<String>,
#[serde(default)]
pub ref_other_fields: Option<String>,
#[serde(default)]
pub ref_notes: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_deleted_by: Option<i32>,
#[serde(default)]
pub ref_issuetitle: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_edition: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub ref_parent: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_part: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub ref_replaced_by: Option<i64>,
#[serde(default)]
pub ref_isbn: Option<String>,
#[serde(default)]
pub ref_abstract: Option<String>,
#[serde(default)]
pub ref_lastautodl: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ref_toplevel: Option<i32>,
#[serde(default)]
pub ref_journal_t: Option<String>,
#[serde(default)]
pub ref_title_t: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceAuthor {
#[serde(deserialize_with = "deserialize_i64")]
pub ra_id: i64,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub ra_ref_id: Option<i64>,
#[serde(default)]
pub ra_name: Option<String>,
#[serde(default)]
pub ra_type: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceAuthorUnique {
#[serde(deserialize_with = "deserialize_i64")]
pub rau_id: i64,
#[serde(default)]
pub rau_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceCitation {
#[serde(deserialize_with = "deserialize_i64")]
pub rc_id: i64,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_his_id: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_ref_id: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_rp_id: Option<i64>,
#[serde(default)]
pub rc_date: Option<String>,
#[serde(default)]
pub rc_date_created: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_min: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_loc: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_article: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_photo: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_glossary: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_entryid: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub rc_pagefrom: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub rc_pageto: Option<i32>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub rc_citationno: Option<i32>,
#[serde(default)]
pub rc_comments: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub rc_deletedby: Option<i32>,
#[serde(default)]
pub rc_type: Option<serde_json::Value>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_ukey: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceType {
#[serde(deserialize_with = "deserialize_i64")]
pub rt_id: i64,
#[serde(default)]
pub rt_code: Option<String>,
#[serde(default)]
pub rt_name: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub rt_important: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceLanguage {
#[serde(deserialize_with = "deserialize_i64")]
pub rl_id: i64,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rl_ref_id: Option<i64>,
#[serde(default)]
pub rl_iso: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub rl_minor: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceClassify {
#[serde(deserialize_with = "deserialize_i64")]
pub rc_id: i64,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub rc_ref_id: Option<i64>,
#[serde(default)]
pub rc_type: Option<serde_json::Value>,
#[serde(default)]
pub rc_value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceDdc {
#[serde(default)]
pub ddc_code: String,
#[serde(default)]
pub ddc_title: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceLcc {
#[serde(default)]
pub lcc_code: String,
#[serde(default)]
pub lcc_title: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceIsbn {
#[serde(default)]
pub ri_isbn: String,
#[serde(default)]
pub ri_series: Option<String>,
#[serde(default)]
pub ri_publisher: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub ri_year: Option<i32>,
#[serde(default)]
pub ri_title: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReferenceExtra {
#[serde(deserialize_with = "deserialize_i64")]
pub re_id: i64,
#[serde(default)]
pub re_code: Option<String>,
#[serde(default)]
pub re_text: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ReferencesQuery {
pub q: Option<String>,
pub ref_type: Option<i32>,
pub ref_title: Option<String>,
pub ref_journal: Option<String>,
pub ref_publisher: Option<String>,
pub ref_doi: Option<String>,
pub ref_isbn: Option<String>,
pub id_in: Option<Vec<i64>>,
pub id_range_min: Option<i64>,
pub id_range_max: Option<i64>,
pub ordering: Option<String>,
pub fields: Option<String>,
pub omit: Option<String>,
pub page: Option<i32>,
pub page_size: Option<i32>,
}
impl ReferencesQuery {
pub fn new() -> Self {
Self::default()
}
pub fn search(mut self, q: impl Into<String>) -> Self {
self.q = Some(q.into());
self
}
pub fn title(mut self, title: impl Into<String>) -> Self {
self.ref_title = Some(title.into());
self
}
pub fn journal(mut self, journal: impl Into<String>) -> Self {
self.ref_journal = Some(journal.into());
self
}
pub fn doi(mut self, doi: impl Into<String>) -> Self {
self.ref_doi = Some(doi.into());
self
}
pub fn ref_type(mut self, ref_type: i32) -> Self {
self.ref_type = Some(ref_type);
self
}
pub fn page(mut self, page: i32) -> Self {
self.page = Some(page);
self
}
pub fn page_size(mut self, size: i32) -> Self {
self.page_size = Some(size);
self
}
}
#[derive(Debug, Clone, Default)]
pub struct ReferenceCitationsQuery {
pub rc_min: Option<i64>,
pub rc_loc: Option<i64>,
pub rc_photo: Option<i64>,
pub rc_article: Option<i64>,
pub rc_ref_id: Option<i64>,
pub rc_entryid: Option<i64>,
pub rc_type: Option<i32>,
pub ordering: Option<String>,
pub page: Option<i32>,
pub page_size: Option<i32>,
}
impl ReferenceCitationsQuery {
pub fn new() -> Self {
Self::default()
}
pub fn mineral(mut self, mineral_id: i64) -> Self {
self.rc_min = Some(mineral_id);
self
}
pub fn locality(mut self, locality_id: i64) -> Self {
self.rc_loc = Some(locality_id);
self
}
pub fn reference(mut self, ref_id: i64) -> Self {
self.rc_ref_id = Some(ref_id);
self
}
pub fn page(mut self, page: i32) -> Self {
self.page = Some(page);
self
}
pub fn page_size(mut self, size: i32) -> Self {
self.page_size = Some(size);
self
}
}