X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_schema%2Fsrc%2Fimpls%2Fpost.rs;h=9996734169ef5da41017954b2ce4a605854e4bd2;hb=4e12e25c59beef296c750fec640b0b80c4c11de9;hp=03a4b7192ba939fe351725d5245992c84ee669f9;hpb=5b7376512fbc99b69b56618a1cf78e6cb090b563;p=lemmy.git diff --git a/crates/db_schema/src/impls/post.rs b/crates/db_schema/src/impls/post.rs index 03a4b719..99967341 100644 --- a/crates/db_schema/src/impls/post.rs +++ b/crates/db_schema/src/impls/post.rs @@ -13,7 +13,7 @@ use crate::{ traits::{Crud, DeleteableOrRemoveable, Likeable, Readable, Saveable}, utils::naive_now, }; -use diesel::{dsl::*, result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl}; +use diesel::{dsl::*, result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl, *}; use url::Url; impl Crud for Post { @@ -174,6 +174,71 @@ impl Post { .map(Into::into), ) } + + pub fn fetch_pictrs_posts_for_creator( + conn: &PgConnection, + for_creator_id: PersonId, + ) -> Result, Error> { + use crate::schema::post::dsl::*; + let pictrs_search = "%pictrs/image%"; + + post + .filter(creator_id.eq(for_creator_id)) + .filter(url.like(pictrs_search)) + .load::(conn) + } + + /// Sets the url and thumbnails fields to None + pub fn remove_pictrs_post_images_and_thumbnails_for_creator( + conn: &PgConnection, + for_creator_id: PersonId, + ) -> Result, Error> { + use crate::schema::post::dsl::*; + let pictrs_search = "%pictrs/image%"; + + diesel::update( + post + .filter(creator_id.eq(for_creator_id)) + .filter(url.like(pictrs_search)), + ) + .set(( + url.eq::>(None), + thumbnail_url.eq::>(None), + )) + .get_results::(conn) + } + + pub fn fetch_pictrs_posts_for_community( + conn: &PgConnection, + for_community_id: CommunityId, + ) -> Result, Error> { + use crate::schema::post::dsl::*; + let pictrs_search = "%pictrs/image%"; + post + .filter(community_id.eq(for_community_id)) + .filter(url.like(pictrs_search)) + .load::(conn) + } + + /// Sets the url and thumbnails fields to None + pub fn remove_pictrs_post_images_and_thumbnails_for_community( + conn: &PgConnection, + for_community_id: CommunityId, + ) -> Result, Error> { + use crate::schema::post::dsl::*; + let pictrs_search = "%pictrs/image%"; + + diesel::update( + post + .filter(community_id.eq(for_community_id)) + .filter(url.like(pictrs_search)), + ) + .set(( + url.eq::>(None), + thumbnail_url.eq::>(None), + )) + .get_results::(conn) + } } impl Likeable for PostLike {