]> 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 98c302dc709f5055627b4021735b7f8a3766870b..35b695db0448b0453a43e11b034d3738eb9447c8 100644 (file)
@@ -1,17 +1,16 @@
 use crate::{
+  newtypes::{CommunityId, DbUrl, PersonId},
   schema::{community, community_follower, community_moderator, community_person_ban},
-  DbUrl,
 };
-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>,
@@ -20,24 +19,24 @@ pub struct Community {
   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<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>,
@@ -47,30 +46,31 @@ pub struct CommunitySafe {
   pub local: bool,
   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 nsfw: Option<bool>,
   pub actor_id: Option<DbUrl>,
-  pub local: bool,
-  pub private_key: Option<String>,
-  pub public_key: Option<String>,
+  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<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,16 +78,16 @@ pub struct CommunityForm {
 #[table_name = "community_moderator"]
 pub struct CommunityModerator {
   pub id: i32,
-  pub community_id: i32,
-  pub person_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 person_id: i32,
+  pub community_id: CommunityId,
+  pub person_id: PersonId,
 }
 
 #[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
@@ -95,16 +95,18 @@ pub struct CommunityModeratorForm {
 #[table_name = "community_person_ban"]
 pub struct CommunityPersonBan {
   pub id: i32,
-  pub community_id: i32,
-  pub person_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_person_ban"]
 pub struct CommunityPersonBanForm {
-  pub community_id: i32,
-  pub person_id: i32,
+  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 CommunityPersonBanForm {
 #[table_name = "community_follower"]
 pub struct CommunityFollower {
   pub id: i32,
-  pub community_id: i32,
-  pub person_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 person_id: i32,
+  pub community_id: CommunityId,
+  pub person_id: PersonId,
   pub pending: bool,
 }