add more details to the report views

This commit is contained in:
eiknat 2020-11-02 22:06:20 -05:00
parent 30d784c27c
commit 438414a64b
7 changed files with 101 additions and 13 deletions

View file

@ -775,7 +775,7 @@ impl Perform for ResolveCommentReport {
if resolved { if resolved {
CommentReport::resolve(conn, report_id.clone(), user_id) CommentReport::resolve(conn, report_id.clone(), user_id)
} else { } else {
CommentReport::unresolve(conn, report_id.clone()) CommentReport::unresolve(conn, report_id.clone(), user_id)
} }
}; };

View file

@ -885,7 +885,6 @@ impl Perform for CommunityJoin {
} }
} }
// is this the right place for this?
#[async_trait::async_trait(?Send)] #[async_trait::async_trait(?Send)]
impl Perform for ModJoin { impl Perform for ModJoin {
type Response = ModJoinResponse; type Response = ModJoinResponse;

View file

@ -841,7 +841,7 @@ impl Perform for ResolvePostReport {
if resolved { if resolved {
PostReport::resolve(conn, report_id.clone(), user_id) PostReport::resolve(conn, report_id.clone(), user_id)
} else { } else {
PostReport::unresolve(conn, report_id.clone()) PostReport::unresolve(conn, report_id.clone(), user_id)
} }
}; };

View file

@ -17,9 +17,22 @@ table! {
post_id -> Int4, post_id -> Int4,
current_comment_text -> Text, current_comment_text -> Text,
community_id -> Int4, community_id -> Int4,
creator_actor_id -> Text,
creator_name -> Varchar, creator_name -> Varchar,
creator_preferred_username -> Nullable<Varchar>,
creator_avatar -> Nullable<Text>,
creator_local -> Bool,
comment_creator_id -> Int4, comment_creator_id -> Int4,
comment_creator_actor_id -> Text,
comment_creator_name -> Varchar, comment_creator_name -> Varchar,
comment_creator_preferred_username -> Nullable<Varchar>,
comment_creator_avatar -> Nullable<Text>,
comment_creator_local -> Bool,
resolver_actor_id -> Nullable<Text>,
resolver_name -> Nullable<Varchar>,
resolver_preferred_username -> Nullable<Varchar>,
resolver_avatar -> Nullable<Text>,
resolver_local -> Nullable<Bool>,
} }
} }
@ -55,22 +68,23 @@ impl Reportable<CommentReportForm> for CommentReport {
.get_result::<Self>(conn) .get_result::<Self>(conn)
} }
fn resolve(conn: &PgConnection, report_id: i32, by_user_id: i32) -> Result<usize, Error> { fn resolve(conn: &PgConnection, report_id: i32, by_resolver_id: i32) -> Result<usize, Error> {
use crate::schema::comment_report::dsl::*; use crate::schema::comment_report::dsl::*;
update(comment_report.find(report_id)) update(comment_report.find(report_id))
.set(( .set((
resolved.eq(true), resolved.eq(true),
resolver_id.eq(by_user_id), resolver_id.eq(by_resolver_id),
updated.eq(naive_now()), updated.eq(naive_now()),
)) ))
.execute(conn) .execute(conn)
} }
fn unresolve(conn: &PgConnection, report_id: i32) -> Result<usize, Error> { fn unresolve(conn: &PgConnection, report_id: i32, by_resolver_id: i32) -> Result<usize, Error> {
use crate::schema::comment_report::dsl::*; use crate::schema::comment_report::dsl::*;
update(comment_report.find(report_id)) update(comment_report.find(report_id))
.set(( .set((
resolved.eq(false), resolved.eq(false),
resolver_id.eq(by_resolver_id),
updated.eq(naive_now()), updated.eq(naive_now()),
)) ))
.execute(conn) .execute(conn)
@ -94,9 +108,22 @@ pub struct CommentReportView {
pub post_id: i32, pub post_id: i32,
pub current_comment_text: String, pub current_comment_text: String,
pub community_id: i32, pub community_id: i32,
pub creator_actor_id: String,
pub creator_name: String, pub creator_name: String,
pub creator_preferred_username: Option<String>,
pub creator_avatar: Option<String>,
pub creator_local: bool,
pub comment_creator_id: i32, pub comment_creator_id: i32,
pub comment_creator_actor_id: String,
pub comment_creator_name: String, pub comment_creator_name: String,
pub comment_creator_preferred_username: Option<String>,
pub comment_creator_avatar: Option<String>,
pub comment_creator_local: bool,
pub resolver_actor_id: Option<String>,
pub resolver_name: Option<String>,
pub resolver_preferred_username: Option<String>,
pub resolver_avatar: Option<String>,
pub resolver_local: Option<bool>,
} }
pub struct CommentReportQueryBuilder<'a> { pub struct CommentReportQueryBuilder<'a> {

View file

@ -115,10 +115,10 @@ pub trait Reportable<T> {
fn report(conn: &PgConnection, form: &T) -> Result<Self, Error> fn report(conn: &PgConnection, form: &T) -> Result<Self, Error>
where where
Self: Sized; Self: Sized;
fn resolve(conn: &PgConnection, report_id: i32, user_id: i32) -> Result<usize, Error> fn resolve(conn: &PgConnection, report_id: i32, resolver_id: i32) -> Result<usize, Error>
where where
Self: Sized; Self: Sized;
fn unresolve(conn: &PgConnection, report_id: i32) -> Result<usize, Error> fn unresolve(conn: &PgConnection, report_id: i32, resolver_id: i32) -> Result<usize, Error>
where where
Self: Sized; Self: Sized;
} }

View file

@ -20,9 +20,22 @@ table! {
current_post_url -> Nullable<Text>, current_post_url -> Nullable<Text>,
current_post_body -> Nullable<Text>, current_post_body -> Nullable<Text>,
community_id -> Int4, community_id -> Int4,
creator_actor_id -> Text,
creator_name -> Varchar, creator_name -> Varchar,
creator_preferred_username -> Nullable<Varchar>,
creator_avatar -> Nullable<Text>,
creator_local -> Bool,
post_creator_id -> Int4, post_creator_id -> Int4,
post_creator_actor_id -> Text,
post_creator_name -> Varchar, post_creator_name -> Varchar,
post_creator_preferred_username -> Nullable<Varchar>,
post_creator_avatar -> Nullable<Text>,
post_creator_local -> Bool,
resolver_actor_id -> Nullable<Text>,
resolver_name -> Nullable<Varchar>,
resolver_preferred_username -> Nullable<Varchar>,
resolver_avatar -> Nullable<Text>,
resolver_local -> Nullable<Bool>,
} }
} }
@ -62,22 +75,23 @@ impl Reportable<PostReportForm> for PostReport {
.get_result::<Self>(conn) .get_result::<Self>(conn)
} }
fn resolve(conn: &PgConnection, report_id: i32, by_user_id: i32) -> Result<usize, Error> { fn resolve(conn: &PgConnection, report_id: i32, by_resolver_id: i32) -> Result<usize, Error> {
use crate::schema::post_report::dsl::*; use crate::schema::post_report::dsl::*;
update(post_report.find(report_id)) update(post_report.find(report_id))
.set(( .set((
resolved.eq(true), resolved.eq(true),
resolver_id.eq(by_user_id), resolver_id.eq(by_resolver_id),
updated.eq(naive_now()), updated.eq(naive_now()),
)) ))
.execute(conn) .execute(conn)
} }
fn unresolve(conn: &PgConnection, report_id: i32) -> Result<usize, Error> { fn unresolve(conn: &PgConnection, report_id: i32, by_resolver_id: i32) -> Result<usize, Error> {
use crate::schema::post_report::dsl::*; use crate::schema::post_report::dsl::*;
update(post_report.find(report_id)) update(post_report.find(report_id))
.set(( .set((
resolved.eq(false), resolved.eq(false),
resolver_id.eq(by_resolver_id),
updated.eq(naive_now()), updated.eq(naive_now()),
)) ))
.execute(conn) .execute(conn)
@ -104,9 +118,22 @@ pub struct PostReportView {
pub current_post_url: Option<String>, pub current_post_url: Option<String>,
pub current_post_body: Option<String>, pub current_post_body: Option<String>,
pub community_id: i32, pub community_id: i32,
pub creator_actor_id: String,
pub creator_name: String, pub creator_name: String,
pub creator_preferred_username: Option<String>,
pub creator_avatar: Option<String>,
pub creator_local: bool,
pub post_creator_id: i32, pub post_creator_id: i32,
pub post_creator_actor_id: String,
pub post_creator_name: String, pub post_creator_name: String,
pub post_creator_preferred_username: Option<String>,
pub post_creator_avatar: Option<String>,
pub post_creator_local: bool,
pub resolver_actor_id: Option<String>,
pub resolver_name: Option<String>,
pub resolver_preferred_username: Option<String>,
pub resolver_avatar: Option<String>,
pub resolver_local: Option<bool>,
} }
impl PostReportView { impl PostReportView {

View file

@ -31,14 +31,31 @@ select cr.*,
c.post_id, c.post_id,
c.content as current_comment_text, c.content as current_comment_text,
p.community_id, p.community_id,
-- report creator details
f.actor_id as creator_actor_id,
f.name as creator_name, f.name as creator_name,
f.preferred_username as creator_preferred_username,
f.avatar as creator_avatar,
f.local as creator_local,
-- comment creator details
u.id as comment_creator_id, u.id as comment_creator_id,
u.name as comment_creator_name u.actor_id as comment_creator_actor_id,
u.name as comment_creator_name,
u.preferred_username as comment_creator_preferred_username,
u.avatar as comment_creator_avatar,
u.local as comment_creator_local,
-- resolver details
r.actor_id as resolver_actor_id,
r.name as resolver_name,
r.preferred_username as resolver_preferred_username,
r.avatar as resolver_avatar,
r.local as resolver_local
from comment_report cr from comment_report cr
left join comment c on c.id = cr.comment_id left join comment c on c.id = cr.comment_id
left join post p on p.id = c.post_id left join post p on p.id = c.post_id
left join user_ u on u.id = c.creator_id left join user_ u on u.id = c.creator_id
left join user_ f on f.id = cr.creator_id; left join user_ f on f.id = cr.creator_id;
left join user_ r on r.id = cr.resolver_id;
create or replace view post_report_view as create or replace view post_report_view as
select pr.*, select pr.*,
@ -47,9 +64,27 @@ p.url as current_post_url,
p.body as current_post_body, p.body as current_post_body,
p.community_id, p.community_id,
f.name as creator_name, f.name as creator_name,
-- report creator details
f.actor_id as creator_actor_id,
f.name as creator_name,
f.preferred_username as creator_preferred_username,
f.avatar as creator_avatar,
f.local as creator_local,
-- post creator details
u.id as post_creator_id, u.id as post_creator_id,
u.name as post_creator_name u.actor_id as post_creator_actor_id,
u.name as post_creator_name,
u.preferred_username as post_creator_preferred_username,
u.avatar as post_creator_avatar,
u.local as post_creator_local,
-- resolver details
r.actor_id as resolver_actor_id,
r.name as resolver_name,
r.preferred_username as resolver_preferred_username,
r.avatar as resolver_avatar,
r.local as resolver_local
from post_report pr from post_report pr
left join post p on p.id = pr.post_id left join post p on p.id = pr.post_id
left join user_ u on u.id = p.creator_id left join user_ u on u.id = p.creator_id
left join user_ f on f.id = pr.creator_id; left join user_ f on f.id = pr.creator_id;
left join user_ r on r.id = pr.resolver_id;