]> Untitled Git - lemmy.git/blobdiff - crates/db_views_actor/src/person_view.rs
Adding temporary bans. Fixes #1423 (#1999)
[lemmy.git] / crates / db_views_actor / src / person_view.rs
index 861d333fe83272475f58df9fbba9611a0dff3bd0..d4be058544cbe727eed6cee6ba346500423bdf5b 100644 (file)
@@ -1,21 +1,17 @@
 use diesel::{dsl::*, result::Error, *};
-use lemmy_db_queries::{
+use lemmy_db_schema::{
   aggregates::person_aggregates::PersonAggregates,
   fuzzy_search,
   limit_and_offset,
-  MaybeOptional,
-  SortType,
-  ToSafe,
-  ViewToVec,
-};
-use lemmy_db_schema::{
+  newtypes::PersonId,
   schema::{person, person_aggregates},
   source::person::{Person, PersonSafe},
-  PersonId,
+  traits::{MaybeOptional, ToSafe, ViewToVec},
+  SortType,
 };
-use serde::Serialize;
+use serde::{Deserialize, Serialize};
 
-#[derive(Debug, Serialize, Clone)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
 pub struct PersonViewSafe {
   pub person: PersonSafe,
   pub counts: PersonAggregates,
@@ -48,7 +44,13 @@ impl PersonViewSafe {
     let banned = person::table
       .inner_join(person_aggregates::table)
       .select((Person::safe_columns_tuple(), person_aggregates::all_columns))
-      .filter(person::banned.eq(true))
+      .filter(
+        person::banned.eq(true).and(
+          person::ban_expires
+            .is_null()
+            .or(person::ban_expires.gt(now)),
+        ),
+      )
       .load::<PersonViewSafeTuple>(conn)?;
 
     Ok(Self::from_tuple_to_vec(banned))