use crate::format::KeyedValue;
use crate::models::authors::{AuthorReference, AuthorType};
use crate::models::{OpenLibraryModel, OpenLibraryResource};
use chrono::NaiveDate;
use serde::{Deserialize, Deserializer, Serialize};
#[derive(Deserialize, Debug, Eq, PartialEq, Serialize)]
pub struct Work {
pub title: String,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub covers: Vec<i32>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub subject_places: Vec<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub subjects: Vec<String>,
pub key: OpenLibraryResource,
pub authors: Vec<AuthorReference>,
pub latest_revision: u32,
pub revision: u32,
}
impl OpenLibraryModel for Work {}