mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-31 05:41:13 +00:00 
			
		
		
		
	Update affected users revision when there are collection changes
This commit is contained in:
		
					parent
					
						
							
								6fdeeb56ce
							
						
					
				
			
			
				commit
				
					
						a5ef8aef0f
					
				
			
		
					 2 changed files with 20 additions and 0 deletions
				
			
		|  | @ -185,6 +185,8 @@ impl CollectionUser { | |||
|     } | ||||
| 
 | ||||
|     pub fn save(user_uuid: &str, collection_uuid: &str, read_only:bool, conn: &DbConn) -> QueryResult<()> { | ||||
|         User::update_uuid_revision(&user_uuid, conn); | ||||
| 
 | ||||
|         diesel::replace_into(users_collections::table) | ||||
|         .values(( | ||||
|             users_collections::user_uuid.eq(user_uuid), | ||||
|  | @ -194,6 +196,8 @@ impl CollectionUser { | |||
|     } | ||||
| 
 | ||||
|     pub fn delete(self, conn: &DbConn) -> QueryResult<()> { | ||||
|         User::update_uuid_revision(&self.user_uuid, conn); | ||||
| 
 | ||||
|         diesel::delete(users_collections::table | ||||
|         .filter(users_collections::user_uuid.eq(&self.user_uuid)) | ||||
|         .filter(users_collections::collection_uuid.eq(&self.collection_uuid))) | ||||
|  | @ -216,12 +220,20 @@ impl CollectionUser { | |||
|     } | ||||
| 
 | ||||
|     pub fn delete_all_by_collection(collection_uuid: &str, conn: &DbConn) -> QueryResult<()> { | ||||
|         CollectionUser::find_by_collection(&collection_uuid, conn) | ||||
|         .iter() | ||||
|         .for_each(|collection| { | ||||
|             User::update_uuid_revision(&collection.user_uuid, conn) | ||||
|         }); | ||||
| 
 | ||||
|         diesel::delete(users_collections::table | ||||
|             .filter(users_collections::collection_uuid.eq(collection_uuid)) | ||||
|         ).execute(&**conn).and(Ok(())) | ||||
|     } | ||||
| 
 | ||||
|     pub fn delete_all_by_user(user_uuid: &str, conn: &DbConn) -> QueryResult<()> { | ||||
|         User::update_uuid_revision(&user_uuid, conn); | ||||
| 
 | ||||
|         diesel::delete(users_collections::table | ||||
|             .filter(users_collections::user_uuid.eq(user_uuid)) | ||||
|         ).execute(&**conn).and(Ok(())) | ||||
|  |  | |||
|  | @ -154,6 +154,14 @@ impl User { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     pub fn update_uuid_revision(uuid: &str, conn: &DbConn) { | ||||
|         if let Some(mut user) = User::find_by_uuid(&uuid, conn) { | ||||
|             if user.update_revision(conn).is_err(){ | ||||
|                 println!("Warning: Failed to update revision for {}", user.email); | ||||
|             }; | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     pub fn update_revision(&mut self, conn: &DbConn) -> QueryResult<()> { | ||||
|         diesel::update( | ||||
|             users::table.filter( | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue