#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct Page {
#[serde(rename = "title")]
pub title: String,
#[serde(rename = "slug")]
pub slug: String,
#[serde(rename = "description")]
pub description: String,
#[serde(
rename = "body_markdown",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub body_markdown: Option<Option<String>>,
#[serde(
rename = "body_json",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub body_json: Option<Option<String>>,
#[serde(rename = "is_top_level_path", skip_serializing_if = "Option::is_none")]
pub is_top_level_path: Option<bool>,
#[serde(
rename = "social_image",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub social_image: Option<Option<serde_json::Value>>,
#[serde(rename = "template")]
pub template: Template,
}
impl Page {
pub fn new(title: String, slug: String, description: String, template: Template) -> Page {
Page {
title,
slug,
description,
body_markdown: None,
body_json: None,
is_top_level_path: None,
social_image: None,
template,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Template {
#[serde(rename = "contained")]
Contained,
#[serde(rename = "full_within_layout")]
FullWithinLayout,
#[serde(rename = "nav_bar_included")]
NavBarIncluded,
#[serde(rename = "json")]
Json,
}
impl Default for Template {
fn default() -> Template {
Self::Contained
}
}