-use diesel::{result::Error, *};
-use lemmy_db_queries::ToSafe;
+use diesel::{dsl::*, result::Error, *};
use lemmy_db_schema::{
+ newtypes::{CommunityId, PersonId},
schema::{community, community_person_ban, person},
source::{
community::{Community, CommunitySafe},
person::{Person, PersonSafe},
},
+ traits::ToSafe,
};
-use serde::Serialize;
+use serde::{Deserialize, Serialize};
-#[derive(Debug, Serialize, Clone)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct CommunityPersonBanView {
pub community: CommunitySafe,
pub person: PersonSafe,
impl CommunityPersonBanView {
pub fn get(
conn: &PgConnection,
- from_person_id: i32,
- from_community_id: i32,
+ from_person_id: PersonId,
+ from_community_id: CommunityId,
) -> Result<Self, Error> {
let (community, person) = community_person_ban::table
.inner_join(community::table)
))
.filter(community_person_ban::community_id.eq(from_community_id))
.filter(community_person_ban::person_id.eq(from_person_id))
+ .filter(
+ community_person_ban::expires
+ .is_null()
+ .or(community_person_ban::expires.gt(now)),
+ )
.order_by(community_person_ban::published)
.first::<(CommunitySafe, PersonSafe)>(conn)?;