Merge pull request 'Prevent duplicated posts in 'all' timeline' (#917) from dup-timeline into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/917
This commit is contained in:
commit
a419ef5319
@ -28,6 +28,7 @@
|
|||||||
- Upsert posts and media instead of trying to insert and fail (#912)
|
- Upsert posts and media instead of trying to insert and fail (#912)
|
||||||
- Update post's ActivityPub id when published by update (#915)
|
- Update post's ActivityPub id when published by update (#915)
|
||||||
- Calculate media URI properly even when MEDIA_UPLOAD_DIRECTORY configured (#916)
|
- Calculate media URI properly even when MEDIA_UPLOAD_DIRECTORY configured (#916)
|
||||||
|
- Prevent duplicated posts in 'all' timeline (#917)
|
||||||
|
|
||||||
## [[0.6.0]] - 2020-12-29
|
## [[0.6.0]] - 2020-12-29
|
||||||
|
|
||||||
|
@ -223,6 +223,9 @@ impl Timeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_post(&self, conn: &Connection, post: &Post) -> Result<()> {
|
pub fn add_post(&self, conn: &Connection, post: &Post) -> Result<()> {
|
||||||
|
if self.includes_post(conn, post)? {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
diesel::insert_into(timeline::table)
|
diesel::insert_into(timeline::table)
|
||||||
.values(TimelineEntry {
|
.values(TimelineEntry {
|
||||||
post_id: post.id,
|
post_id: post.id,
|
||||||
@ -236,6 +239,16 @@ impl Timeline {
|
|||||||
let query = TimelineQuery::parse(&self.query)?;
|
let query = TimelineQuery::parse(&self.query)?;
|
||||||
query.matches(conn, self, post, kind)
|
query.matches(conn, self, post, kind)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn includes_post(&self, conn: &Connection, post: &Post) -> Result<bool> {
|
||||||
|
diesel::dsl::select(diesel::dsl::exists(
|
||||||
|
timeline::table
|
||||||
|
.filter(timeline::timeline_id.eq(self.id))
|
||||||
|
.filter(timeline::post_id.eq(post.id)),
|
||||||
|
))
|
||||||
|
.get_result(conn)
|
||||||
|
.map_err(Error::from)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
Loading…
Reference in New Issue
Block a user