-- Automatically resolve all reports for a given post once it is marked as removed
CREATE OR REPLACE FUNCTION post_removed_resolve_reports ()
    RETURNS TRIGGER
    LANGUAGE plpgsql
    AS $$
BEGIN
    UPDATE
        post_report
    SET
        resolved = TRUE,
        resolver_id = NEW.mod_person_id,
        updated = now()
    WHERE
        post_report.post_id = NEW.post_id;
    RETURN NULL;
END
$$;

CREATE OR REPLACE TRIGGER post_removed_resolve_reports
    AFTER INSERT ON mod_remove_post
    FOR EACH ROW
    WHEN (NEW.removed)
    EXECUTE PROCEDURE post_removed_resolve_reports ();

-- Same when comment is marked as removed
CREATE OR REPLACE FUNCTION comment_removed_resolve_reports ()
    RETURNS TRIGGER
    LANGUAGE plpgsql
    AS $$
BEGIN
    UPDATE
        comment_report
    SET
        resolved = TRUE,
        resolver_id = NEW.mod_person_id,
        updated = now()
    WHERE
        comment_report.comment_id = NEW.comment_id;
    RETURN NULL;
END
$$;

CREATE OR REPLACE TRIGGER comment_removed_resolve_reports
    AFTER INSERT ON mod_remove_comment
    FOR EACH ROW
    WHEN (NEW.removed)
    EXECUTE PROCEDURE comment_removed_resolve_reports ();