get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
let person_id = local_user_view.person.id;
+ let admin = local_user_view.person.admin;
let community_id = data.community_id;
let unresolved_only = data.unresolved_only;
let page = data.page;
let limit = data.limit;
let comment_reports = blocking(context.pool(), move |conn| {
- CommentReportQueryBuilder::create(conn, person_id)
+ CommentReportQueryBuilder::create(conn, person_id, admin)
.community_id(community_id)
.unresolved_only(unresolved_only)
.page(page)
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
let person_id = local_user_view.person.id;
+ let admin = local_user_view.person.admin;
let community_id = data.community_id;
let comment_reports = blocking(context.pool(), move |conn| {
- CommentReportView::get_report_count(conn, person_id, community_id)
+ CommentReportView::get_report_count(conn, person_id, admin, community_id)
})
.await??;
let post_reports = blocking(context.pool(), move |conn| {
- PostReportView::get_report_count(conn, person_id, community_id)
+ PostReportView::get_report_count(conn, person_id, admin, community_id)
})
.await??;
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
let person_id = local_user_view.person.id;
+ let admin = local_user_view.person.admin;
let community_id = data.community_id;
let unresolved_only = data.unresolved_only;
let page = data.page;
let limit = data.limit;
let post_reports = blocking(context.pool(), move |conn| {
- PostReportQueryBuilder::create(conn, person_id)
+ PostReportQueryBuilder::create(conn, person_id, admin)
.community_id(community_id)
.unresolved_only(unresolved_only)
.page(page)
})
}
- /// returns the current unresolved post report count for the supplied community ids
- ///
- /// * `community_ids` - a Vec<i32> of community_ids to get a count for
- /// TODO this eq_any is a bad way to do this, would be better to join to communitymoderator
- /// TODO FIX THIS NOW
- /// for a person id
+ /// Returns the current unresolved post report count for the communities you mod
pub fn get_report_count(
conn: &PgConnection,
my_person_id: PersonId,
+ admin: bool,
community_id: Option<CommunityId>,
) -> Result<i64, Error> {
use diesel::dsl::*;
let mut query = comment_report::table
.inner_join(comment::table)
.inner_join(post::table.on(comment::post_id.eq(post::id)))
- // Test this join
.inner_join(
- community_moderator::table.on(
- community_moderator::community_id
- .eq(post::community_id)
- .and(community_moderator::person_id.eq(my_person_id)),
- ),
+ community_moderator::table.on(community_moderator::community_id.eq(post::community_id)),
)
.filter(comment_report::resolved.eq(false))
.into_boxed();
+ // If its not an admin, get only the ones you mod
+ if !admin {
+ query = query.filter(community_moderator::person_id.eq(my_person_id));
+ }
+
if let Some(community_id) = community_id {
query = query.filter(post::community_id.eq(community_id))
}
pub struct CommentReportQueryBuilder<'a> {
conn: &'a PgConnection,
my_person_id: PersonId,
+ admin: bool,
community_id: Option<CommunityId>,
page: Option<i64>,
limit: Option<i64>,
}
impl<'a> CommentReportQueryBuilder<'a> {
- pub fn create(conn: &'a PgConnection, my_person_id: PersonId) -> Self {
+ pub fn create(conn: &'a PgConnection, my_person_id: PersonId, admin: bool) -> Self {
CommentReportQueryBuilder {
conn,
my_person_id,
+ admin,
community_id: None,
page: None,
limit: None,
.inner_join(person_alias_1::table.on(post::creator_id.eq(person_alias_1::id)))
// Test this join
.inner_join(
- community_moderator::table.on(
- community_moderator::community_id
- .eq(post::community_id)
- .and(community_moderator::person_id.eq(self.my_person_id)),
- ),
+ community_moderator::table.on(community_moderator::community_id.eq(post::community_id)),
)
.inner_join(
comment_aggregates::table.on(comment_report::comment_id.eq(comment_aggregates::comment_id)),
))
.into_boxed();
+ // If its not an admin, get only the ones you mod
+ if !self.admin {
+ query = query.filter(community_moderator::person_id.eq(self.my_person_id));
+ }
+
if let Some(community_id) = self.community_id {
query = query.filter(post::community_id.eq(community_id));
}
};
// Do a batch read of timmys reports
- let reports = CommentReportQueryBuilder::create(&conn, inserted_timmy.id)
+ let reports = CommentReportQueryBuilder::create(&conn, inserted_timmy.id, false)
.list()
.unwrap();
);
// Make sure the counts are correct
- let report_count = CommentReportView::get_report_count(&conn, inserted_timmy.id, None).unwrap();
+ let report_count =
+ CommentReportView::get_report_count(&conn, inserted_timmy.id, false, None).unwrap();
assert_eq!(2, report_count);
// Try to resolve the report
// Do a batch read of timmys reports
// It should only show saras, which is unresolved
- let reports_after_resolve = CommentReportQueryBuilder::create(&conn, inserted_timmy.id)
+ let reports_after_resolve = CommentReportQueryBuilder::create(&conn, inserted_timmy.id, false)
.list()
.unwrap();
assert_eq!(reports_after_resolve[0], expected_sara_report_view);
// Make sure the counts are correct
let report_count_after_resolved =
- CommentReportView::get_report_count(&conn, inserted_timmy.id, None).unwrap();
+ CommentReportView::get_report_count(&conn, inserted_timmy.id, false, None).unwrap();
assert_eq!(1, report_count_after_resolved);
Person::delete(&conn, inserted_timmy.id).unwrap();
})
}
- /// returns the current unresolved post report count for the supplied community ids
- ///
- /// * `community_ids` - a Vec<i32> of community_ids to get a count for
- /// TODO this eq_any is a bad way to do this, would be better to join to communitymoderator
- /// for a person id
+ /// returns the current unresolved post report count for the communities you mod
pub fn get_report_count(
conn: &PgConnection,
my_person_id: PersonId,
+ admin: bool,
community_id: Option<CommunityId>,
) -> Result<i64, Error> {
use diesel::dsl::*;
.inner_join(post::table)
// Test this join
.inner_join(
- community_moderator::table.on(
- community_moderator::community_id
- .eq(post::community_id)
- .and(community_moderator::person_id.eq(my_person_id)),
- ),
+ community_moderator::table.on(community_moderator::community_id.eq(post::community_id)),
)
.filter(post_report::resolved.eq(false))
.into_boxed();
+ // If its not an admin, get only the ones you mod
+ if !admin {
+ query = query.filter(community_moderator::person_id.eq(my_person_id));
+ }
+
if let Some(community_id) = community_id {
query = query.filter(post::community_id.eq(community_id))
}
pub struct PostReportQueryBuilder<'a> {
conn: &'a PgConnection,
my_person_id: PersonId,
+ admin: bool,
community_id: Option<CommunityId>,
page: Option<i64>,
limit: Option<i64>,
}
impl<'a> PostReportQueryBuilder<'a> {
- pub fn create(conn: &'a PgConnection, my_person_id: PersonId) -> Self {
+ pub fn create(conn: &'a PgConnection, my_person_id: PersonId, admin: bool) -> Self {
PostReportQueryBuilder {
conn,
my_person_id,
+ admin,
community_id: None,
page: None,
limit: None,
.inner_join(community::table.on(post::community_id.eq(community::id)))
.inner_join(person::table.on(post_report::creator_id.eq(person::id)))
.inner_join(person_alias_1::table.on(post::creator_id.eq(person_alias_1::id)))
- // Test this join
.inner_join(
- community_moderator::table.on(
- community_moderator::community_id
- .eq(post::community_id)
- .and(community_moderator::person_id.eq(self.my_person_id)),
- ),
+ community_moderator::table.on(community_moderator::community_id.eq(post::community_id)),
)
.left_join(
community_person_ban::table.on(
))
.into_boxed();
+ // If its not an admin, get only the ones you mod
+ if !self.admin {
+ query = query.filter(community_moderator::person_id.eq(self.my_person_id));
+ }
+
if let Some(community_id) = self.community_id {
query = query.filter(post::community_id.eq(community_id));
}
};
// Do a batch read of timmys reports
- let reports = PostReportQueryBuilder::create(&conn, inserted_timmy.id)
+ let reports = PostReportQueryBuilder::create(&conn, inserted_timmy.id, false)
.list()
.unwrap();
);
// Make sure the counts are correct
- let report_count = PostReportView::get_report_count(&conn, inserted_timmy.id, None).unwrap();
+ let report_count =
+ PostReportView::get_report_count(&conn, inserted_timmy.id, false, None).unwrap();
assert_eq!(2, report_count);
// Try to resolve the report
// Do a batch read of timmys reports
// It should only show saras, which is unresolved
- let reports_after_resolve = PostReportQueryBuilder::create(&conn, inserted_timmy.id)
+ let reports_after_resolve = PostReportQueryBuilder::create(&conn, inserted_timmy.id, false)
.list()
.unwrap();
assert_eq!(reports_after_resolve[0], expected_sara_report_view);
// Make sure the counts are correct
let report_count_after_resolved =
- PostReportView::get_report_count(&conn, inserted_timmy.id, None).unwrap();
+ PostReportView::get_report_count(&conn, inserted_timmy.id, false, None).unwrap();
assert_eq!(1, report_count_after_resolved);
Person::delete(&conn, inserted_timmy.id).unwrap();