]> Untitled Git - lemmy.git/blobdiff - crates/db_schema/src/source/community.rs
Hide community v2 (#2055)
[lemmy.git] / crates / db_schema / src / source / community.rs
index b8702ca97d8b8fa2a49fd4732d03c20f8817948d..35b695db0448b0453a43e11b034d3738eb9447c8 100644 (file)
@@ -1,76 +1,76 @@
 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)]
@@ -78,33 +78,35 @@ pub struct CommunityForm {
 #[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)]
@@ -112,8 +114,8 @@ pub struct CommunityUserBanForm {
 #[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>,
 }
@@ -121,7 +123,7 @@ pub struct CommunityFollower {
 #[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,
 }