use crate::newtypes::{DbUrl, InstanceId, SiteId}; #[cfg(feature = "full")] use crate::schema::site; use serde::{Deserialize, Serialize}; use typed_builder::TypedBuilder; #[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] #[cfg_attr(feature = "full", derive(Queryable, Identifiable))] #[cfg_attr(feature = "full", diesel(table_name = site))] pub struct Site { pub id: SiteId, pub name: String, pub sidebar: Option, pub published: chrono::NaiveDateTime, pub updated: Option, pub icon: Option, pub banner: Option, pub description: Option, pub actor_id: DbUrl, pub last_refreshed_at: chrono::NaiveDateTime, pub inbox_url: DbUrl, pub private_key: Option, pub public_key: String, pub instance_id: InstanceId, } #[derive(Clone, TypedBuilder)] #[builder(field_defaults(default))] #[cfg_attr(feature = "full", derive(Insertable, AsChangeset))] #[cfg_attr(feature = "full", diesel(table_name = site))] pub struct SiteInsertForm { #[builder(!default)] pub name: String, pub sidebar: Option, pub updated: Option, pub icon: Option, pub banner: Option, pub description: Option, pub actor_id: Option, pub last_refreshed_at: Option, pub inbox_url: Option, pub private_key: Option, pub public_key: Option, #[builder(!default)] pub instance_id: InstanceId, } #[derive(Clone, TypedBuilder)] #[builder(field_defaults(default))] #[cfg_attr(feature = "full", derive(AsChangeset))] #[cfg_attr(feature = "full", diesel(table_name = site))] pub struct SiteUpdateForm { pub name: Option, pub sidebar: Option>, pub updated: Option>, // when you want to null out a column, you have to send Some(None)), since sending None means you just don't want to update that column. pub icon: Option>, pub banner: Option>, pub description: Option>, pub actor_id: Option, pub last_refreshed_at: Option, pub inbox_url: Option, pub private_key: Option>, pub public_key: Option, }