delete notification on user deletion (#658)
* delete notification on user deletion fix #651 * use the correct id for deletion * add regression test * push helpers too * revert CI changes
This commit is contained in:
		
							parent
							
								
									d4a1bd6de7
								
							
						
					
					
						commit
						12c80f9981
					
				| @ -1,5 +1,5 @@ | |||||||
| use chrono::NaiveDateTime; | use chrono::NaiveDateTime; | ||||||
| use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl}; | use diesel::{self, ExpressionMethods, JoinOnDsl, QueryDsl, RunQueryDsl}; | ||||||
| 
 | 
 | ||||||
| use comments::Comment; | use comments::Comment; | ||||||
| use follows::Follow; | use follows::Follow; | ||||||
| @ -7,7 +7,7 @@ use likes::Like; | |||||||
| use mentions::Mention; | use mentions::Mention; | ||||||
| use posts::Post; | use posts::Post; | ||||||
| use reshares::Reshare; | use reshares::Reshare; | ||||||
| use schema::notifications; | use schema::{follows, notifications}; | ||||||
| use users::User; | use users::User; | ||||||
| use {Connection, Error, Result}; | use {Connection, Error, Result}; | ||||||
| 
 | 
 | ||||||
| @ -64,6 +64,16 @@ impl Notification { | |||||||
|             .map_err(Error::from) |             .map_err(Error::from) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     pub fn find_followed_by(conn: &Connection, user: &User) -> Result<Vec<Notification>> { | ||||||
|  |         notifications::table | ||||||
|  |             .inner_join(follows::table.on(notifications::object_id.eq(follows::id))) | ||||||
|  |             .filter(notifications::kind.eq(notification_kind::FOLLOW)) | ||||||
|  |             .filter(follows::follower_id.eq(user.id)) | ||||||
|  |             .select(notifications::all_columns) | ||||||
|  |             .load::<Notification>(conn) | ||||||
|  |             .map_err(Error::from) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     pub fn count_for_user(conn: &Connection, user: &User) -> Result<i64> { |     pub fn count_for_user(conn: &Connection, user: &User) -> Result<i64> { | ||||||
|         notifications::table |         notifications::table | ||||||
|             .filter(notifications::user_id.eq(user.id)) |             .filter(notifications::user_id.eq(user.id)) | ||||||
|  | |||||||
| @ -42,6 +42,7 @@ use db_conn::DbConn; | |||||||
| use follows::Follow; | use follows::Follow; | ||||||
| use instance::*; | use instance::*; | ||||||
| use medias::Media; | use medias::Media; | ||||||
|  | use notifications::Notification; | ||||||
| use post_authors::PostAuthor; | use post_authors::PostAuthor; | ||||||
| use posts::Post; | use posts::Post; | ||||||
| use safe_string::SafeString; | use safe_string::SafeString; | ||||||
| @ -147,6 +148,10 @@ impl User { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         for notif in Notification::find_followed_by(conn, self)? { | ||||||
|  |             notif.delete(conn)? | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         diesel::delete(self) |         diesel::delete(self) | ||||||
|             .execute(conn) |             .execute(conn) | ||||||
|             .map(|_| ()) |             .map(|_| ()) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user