use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct CitationAuthor {
#[serde(default, alias = "family-names")]
pub family_names: Option<String>,
#[serde(default, alias = "given-names")]
pub given_names: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub email: Option<String>,
#[serde(default)]
pub orcid: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct CitationConfig {
pub title: String,
#[serde(rename = "abstract")]
pub abstract_: String,
pub authors: Vec<CitationAuthor>,
#[serde(default = "default_citation_message")]
pub message: String,
#[serde(rename = "repository-code", alias = "repository_code")]
pub repository_code: String,
#[serde(default)]
pub url: Option<String>,
#[serde(default)]
pub license: Option<String>,
#[serde(default, rename = "date-released", alias = "date_released")]
pub date_released: Option<String>,
#[serde(default)]
pub doi: Option<String>,
}
fn default_citation_message() -> String {
"If you use this software, please cite it using the metadata below.".to_string()
}