use crate::newtypes::{DbUrl, InstanceId, PersonId}; #[cfg(feature = "full")] use crate::schema::person; use serde::{Deserialize, Serialize}; use typed_builder::TypedBuilder; #[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "full", derive(Queryable, Identifiable))] #[cfg_attr(feature = "full", diesel(table_name = person))] pub struct Person { pub id: PersonId, pub name: String, pub display_name: Option, pub avatar: Option, pub banned: bool, pub published: chrono::NaiveDateTime, pub updated: Option, pub actor_id: DbUrl, pub bio: Option, pub local: bool, pub private_key: Option, pub public_key: String, pub last_refreshed_at: chrono::NaiveDateTime, pub banner: Option, pub deleted: bool, pub inbox_url: DbUrl, pub shared_inbox_url: Option, pub matrix_user_id: Option, pub admin: bool, pub bot_account: bool, pub ban_expires: Option, pub instance_id: InstanceId, } /// A safe representation of person, without the sensitive info #[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "full", derive(Queryable, Identifiable))] #[cfg_attr(feature = "full", diesel(table_name = person))] pub struct PersonSafe { pub id: PersonId, pub name: String, pub display_name: Option, pub avatar: Option, pub banned: bool, pub published: chrono::NaiveDateTime, pub updated: Option, pub actor_id: DbUrl, pub bio: Option, pub local: bool, pub banner: Option, pub deleted: bool, pub inbox_url: DbUrl, pub shared_inbox_url: Option, pub matrix_user_id: Option, pub admin: bool, pub bot_account: bool, pub ban_expires: Option, 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 = person))] pub struct PersonInsertForm { #[builder(!default)] pub name: String, #[builder(!default)] pub public_key: String, #[builder(!default)] pub instance_id: InstanceId, pub display_name: Option, pub avatar: Option, pub banned: Option, pub published: Option, pub updated: Option, pub actor_id: Option, pub bio: Option, pub local: Option, pub private_key: Option, pub last_refreshed_at: Option, pub banner: Option, pub deleted: Option, pub inbox_url: Option, pub shared_inbox_url: Option, pub matrix_user_id: Option, pub admin: Option, pub bot_account: Option, pub ban_expires: Option, } #[derive(Clone, TypedBuilder)] #[cfg_attr(feature = "full", derive(AsChangeset))] #[cfg_attr(feature = "full", diesel(table_name = person))] #[builder(field_defaults(default))] pub struct PersonUpdateForm { pub display_name: Option>, pub avatar: Option>, pub banned: Option, pub updated: Option>, pub actor_id: Option, pub bio: Option>, pub local: Option, pub public_key: Option, pub private_key: Option>, pub last_refreshed_at: Option, pub banner: Option>, pub deleted: Option, pub inbox_url: Option, pub shared_inbox_url: Option>, pub matrix_user_id: Option>, pub admin: Option, pub bot_account: Option, pub ban_expires: Option>, }