use serde::{Deserialize, Serialize};
use super::common::Key;
use super::work::DateValue;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Edition {
pub key: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub subtitle: Option<String>,
#[serde(default)]
pub full_title: Option<String>,
#[serde(default)]
pub authors: Option<Vec<Key>>,
#[serde(default)]
pub works: Option<Vec<Key>>,
#[serde(default)]
pub publishers: Option<Vec<String>>,
#[serde(default)]
pub publish_date: Option<String>,
#[serde(default)]
pub publish_places: Option<Vec<String>>,
#[serde(default)]
pub publish_country: Option<String>,
#[serde(default)]
pub languages: Option<Vec<Key>>,
#[serde(default)]
pub isbn_10: Option<Vec<String>>,
#[serde(default)]
pub isbn_13: Option<Vec<String>>,
#[serde(default)]
pub lccn: Option<Vec<String>>,
#[serde(default)]
pub oclc_numbers: Option<Vec<String>>,
#[serde(default)]
pub goodreads: Option<Vec<String>>,
#[serde(default)]
pub covers: Option<Vec<i64>>,
#[serde(default)]
pub number_of_pages: Option<u32>,
#[serde(default)]
pub edition_name: Option<String>,
#[serde(default)]
pub by_statement: Option<String>,
#[serde(default)]
pub description: Option<super::common::TextOrValue>,
#[serde(default)]
pub notes: Option<super::common::TextOrValue>,
#[serde(default)]
pub series: Option<Vec<String>>,
#[serde(default)]
pub subjects: Option<Vec<String>>,
#[serde(default)]
pub source_records: Option<Vec<String>>,
#[serde(default)]
pub created: Option<DateValue>,
#[serde(default)]
pub last_modified: Option<DateValue>,
#[serde(default)]
pub latest_revision: Option<i64>,
#[serde(default)]
pub revision: Option<i64>,
#[serde(default)]
pub physical_format: Option<String>,
#[serde(default)]
pub weight: Option<String>,
#[serde(default)]
pub physical_dimensions: Option<String>,
}