Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove redundant field CommentLike.post_id #4749

Closed
wants to merge 22 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion crates/api/src/comment/like.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ pub async fn like_comment(

let like_form = CommentLikeForm {
comment_id: data.comment_id,
post_id: orig_comment.post.id,
person_id: local_user_view.person.id,
score: data.score,
};
Expand Down
1 change: 0 additions & 1 deletion crates/api_common/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,6 @@ pub async fn update_read_comments(
person_id,
post_id,
read_comments,
..PersonPostAggregatesForm::default()
};

PersonPostAggregates::upsert(pool, &person_post_agg_form)
Expand Down
1 change: 0 additions & 1 deletion crates/api_crud/src/comment/create.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ pub async fn create_comment(
// You like your own comment by default
let like_form = CommentLikeForm {
comment_id: inserted_comment.id,
post_id: post.id,
person_id: local_user_view.person.id,
score: 1,
};
Expand Down
1 change: 0 additions & 1 deletion crates/apub/src/activities/create_or_update/comment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ impl ActivityHandler for CreateOrUpdateNote {
// author likes their own comment by default
let like_form = CommentLikeForm {
comment_id: comment.id,
post_id: comment.post_id,
person_id: comment.creator_id,
score: 1,
};
Expand Down
1 change: 0 additions & 1 deletion crates/apub/src/activities/voting/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ async fn vote_comment(
let comment_id = comment.id;
let like_form = CommentLikeForm {
comment_id,
post_id: comment.post_id,
person_id: actor.id,
score: vote_type.into(),
};
Expand Down
2 changes: 0 additions & 2 deletions crates/db_schema/src/aggregates/comment_aggregates.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ mod tests {

let comment_like = CommentLikeForm {
comment_id: inserted_comment.id,
post_id: inserted_post.id,
person_id: inserted_person.id,
score: 1,
};
Expand All @@ -129,7 +128,6 @@ mod tests {
// Add a post dislike from the other person
let comment_dislike = CommentLikeForm {
comment_id: inserted_comment.id,
post_id: inserted_post.id,
person_id: another_inserted_person.id,
score: -1,
};
Expand Down
2 changes: 0 additions & 2 deletions crates/db_schema/src/aggregates/person_aggregates.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ mod tests {
let mut comment_like = CommentLikeForm {
comment_id: inserted_comment.id,
person_id: inserted_person.id,
post_id: inserted_post.id,
score: 1,
};

Expand All @@ -113,7 +112,6 @@ mod tests {
let child_comment_like = CommentLikeForm {
comment_id: inserted_child_comment.id,
person_id: another_inserted_person.id,
post_id: inserted_post.id,
score: 1,
};

Expand Down
1 change: 0 additions & 1 deletion crates/db_schema/src/aggregates/structs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ pub struct PersonPostAggregatesForm {
pub person_id: PersonId,
pub post_id: PostId,
pub read_comments: i64,
pub published: Option<DateTime<Utc>>,
}

#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Clone, Copy, Hash)]
Expand Down
2 changes: 0 additions & 2 deletions crates/db_schema/src/impls/comment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,6 @@ mod tests {
// Comment Like
let comment_like_form = CommentLikeForm {
comment_id: inserted_comment.id,
post_id: inserted_post.id,
person_id: inserted_person.id,
score: 1,
};
Expand All @@ -308,7 +307,6 @@ mod tests {

let expected_comment_like = CommentLike {
comment_id: inserted_comment.id,
post_id: inserted_post.id,
person_id: inserted_person.id,
published: inserted_comment_like.published,
score: 1,
Expand Down
2 changes: 0 additions & 2 deletions crates/db_schema/src/source/comment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ pub struct CommentUpdateForm {
pub struct CommentLike {
pub person_id: PersonId,
pub comment_id: CommentId,
pub post_id: PostId, // TODO this is redundant
pub score: i16,
pub published: DateTime<Utc>,
}
Expand All @@ -110,7 +109,6 @@ pub struct CommentLike {
pub struct CommentLikeForm {
pub person_id: PersonId,
pub comment_id: CommentId,
pub post_id: PostId, // TODO this is redundant
pub score: i16,
}

Expand Down
2 changes: 0 additions & 2 deletions crates/db_views/src/comment_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,6 @@ mod tests {

let comment_like_form = CommentLikeForm {
comment_id: inserted_comment_0.id,
post_id: inserted_post.id,
person_id: inserted_timmy_person.id,
score: 1,
};
Expand Down Expand Up @@ -695,7 +694,6 @@ mod tests {
// Like a new comment
let comment_like_form = CommentLikeForm {
comment_id: data.inserted_comment_1.id,
post_id: data.inserted_post.id,
person_id: data.timmy_local_user_view.person.id,
score: 1,
};
Expand Down
6 changes: 2 additions & 4 deletions crates/db_views/src/vote_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use diesel::{
use diesel_async::RunQueryDsl;
use lemmy_db_schema::{
newtypes::{CommentId, PostId},
schema::{comment_like, community_person_ban, person, post, post_like},
schema::{comment, comment_like, community_person_ban, person, post, post_like},
utils::{get_conn, limit_and_offset, DbPool},
};

Expand Down Expand Up @@ -59,7 +59,7 @@ impl VoteView {

comment_like::table
.inner_join(person::table)
.inner_join(post::table)
.inner_join(comment::table.inner_join(post::table))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a difference in logic or performance if we put each of these individually on the top level chain? i.e.

comment_like::table
    .inner_join(person::table)
    .inner_join(comment::table)
    .inner_join(post::table)
    // etc.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be no difference because only 5 tables are joined, and the join collapse limit is set to 11, which means the database ignores the given join order

// Join to community_person_ban to get creator_banned_from_community
.left_join(
community_person_ban::table.on(
Expand Down Expand Up @@ -181,7 +181,6 @@ mod tests {

// Timothy votes down his own comment
let timmy_comment_vote_form = CommentLikeForm {
post_id: inserted_post.id,
comment_id: inserted_comment.id,
person_id: inserted_timmy.id,
score: -1,
Expand All @@ -192,7 +191,6 @@ mod tests {

// Sara upvotes timmy's comment
let sara_comment_vote_form = CommentLikeForm {
post_id: inserted_post.id,
comment_id: inserted_comment.id,
person_id: inserted_sara.id,
score: 1,
Expand Down
16 changes: 16 additions & 0 deletions migrations/2024-06-05-134311_remove_redundant_post_id/down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
ALTER TABLE comment_actions
ADD COLUMN post_id int REFERENCES post ON UPDATE CASCADE ON DELETE CASCADE;

UPDATE
comment_actions
SET
post_id = (
SELECT
post_id
FROM
comment
WHERE
comment.id = comment_actions.comment_id)
WHERE
liked IS NOT NULL;

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE comment_actions
DROP COLUMN post_id;