use crate::{
- schema::{community, community_follower, community_moderator, community_user_ban},
- Url,
+ newtypes::{CommunityId, DbUrl, PersonId},
+ schema::{community, community_follower, community_moderator, community_person_ban},
};
-use serde::Serialize;
+use serde::{Deserialize, Serialize};
-#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
+#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)]
#[table_name = "community"]
pub struct Community {
- pub id: i32,
+ pub id: CommunityId,
pub name: String,
pub title: String,
pub description: Option<String>,
- pub creator_id: i32,
pub removed: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>,
pub deleted: bool,
pub nsfw: bool,
- pub actor_id: Url,
+ pub actor_id: DbUrl,
pub local: bool,
pub private_key: Option<String>,
- pub public_key: Option<String>,
+ pub public_key: String,
pub last_refreshed_at: chrono::NaiveDateTime,
- pub icon: Option<String>,
- pub banner: Option<String>,
- pub followers_url: Url,
- pub inbox_url: Url,
- pub shared_inbox_url: Option<Url>,
+ pub icon: Option<DbUrl>,
+ pub banner: Option<DbUrl>,
+ pub followers_url: DbUrl,
+ pub inbox_url: DbUrl,
+ pub shared_inbox_url: Option<DbUrl>,
+ pub hidden: bool,
}
/// A safe representation of community, without the sensitive info
-#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
+#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)]
#[table_name = "community"]
pub struct CommunitySafe {
- pub id: i32,
+ pub id: CommunityId,
pub name: String,
pub title: String,
pub description: Option<String>,
- pub creator_id: i32,
pub removed: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>,
pub deleted: bool,
pub nsfw: bool,
- pub actor_id: Url,
+ pub actor_id: DbUrl,
pub local: bool,
- pub icon: Option<String>,
- pub banner: Option<String>,
+ pub icon: Option<DbUrl>,
+ pub banner: Option<DbUrl>,
+ pub hidden: bool,
}
-#[derive(Insertable, AsChangeset, Debug)]
+#[derive(Insertable, AsChangeset, Debug, Default)]
#[table_name = "community"]
pub struct CommunityForm {
pub name: String,
pub title: String,
pub description: Option<String>,
- pub creator_id: i32,
pub removed: Option<bool>,
pub published: Option<chrono::NaiveDateTime>,
pub updated: Option<chrono::NaiveDateTime>,
pub deleted: Option<bool>,
- pub nsfw: bool,
- pub actor_id: Option<Url>,
- pub local: bool,
- pub private_key: Option<String>,
- pub public_key: Option<String>,
+ pub nsfw: Option<bool>,
+ pub actor_id: Option<DbUrl>,
+ pub local: Option<bool>,
+ pub private_key: Option<Option<String>>,
+ pub public_key: String,
pub last_refreshed_at: Option<chrono::NaiveDateTime>,
- pub icon: Option<Option<String>>,
- pub banner: Option<Option<String>>,
- pub followers_url: Option<Url>,
- pub inbox_url: Option<Url>,
- pub shared_inbox_url: Option<Option<Url>>,
+ pub icon: Option<Option<DbUrl>>,
+ pub banner: Option<Option<DbUrl>>,
+ pub followers_url: Option<DbUrl>,
+ pub inbox_url: Option<DbUrl>,
+ pub shared_inbox_url: Option<Option<DbUrl>>,
+ pub hidden: Option<bool>,
}
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
#[table_name = "community_moderator"]
pub struct CommunityModerator {
pub id: i32,
- pub community_id: i32,
- pub user_id: i32,
+ pub community_id: CommunityId,
+ pub person_id: PersonId,
pub published: chrono::NaiveDateTime,
}
#[derive(Insertable, AsChangeset, Clone)]
#[table_name = "community_moderator"]
pub struct CommunityModeratorForm {
- pub community_id: i32,
- pub user_id: i32,
+ pub community_id: CommunityId,
+ pub person_id: PersonId,
}
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
#[belongs_to(Community)]
-#[table_name = "community_user_ban"]
-pub struct CommunityUserBan {
+#[table_name = "community_person_ban"]
+pub struct CommunityPersonBan {
pub id: i32,
- pub community_id: i32,
- pub user_id: i32,
+ pub community_id: CommunityId,
+ pub person_id: PersonId,
pub published: chrono::NaiveDateTime,
+ pub expires: Option<chrono::NaiveDateTime>,
}
#[derive(Insertable, AsChangeset, Clone)]
-#[table_name = "community_user_ban"]
-pub struct CommunityUserBanForm {
- pub community_id: i32,
- pub user_id: i32,
+#[table_name = "community_person_ban"]
+pub struct CommunityPersonBanForm {
+ pub community_id: CommunityId,
+ pub person_id: PersonId,
+ pub expires: Option<Option<chrono::NaiveDateTime>>,
}
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
#[table_name = "community_follower"]
pub struct CommunityFollower {
pub id: i32,
- pub community_id: i32,
- pub user_id: i32,
+ pub community_id: CommunityId,
+ pub person_id: PersonId,
pub published: chrono::NaiveDateTime,
pub pending: Option<bool>,
}
#[derive(Insertable, AsChangeset, Clone)]
#[table_name = "community_follower"]
pub struct CommunityFollowerForm {
- pub community_id: i32,
- pub user_id: i32,
+ pub community_id: CommunityId,
+ pub person_id: PersonId,
pub pending: bool,
}