diff --git a/src/db/models/collection.rs b/src/db/models/collection.rs index 888523f..4b506a9 100644 --- a/src/db/models/collection.rs +++ b/src/db/models/collection.rs @@ -356,13 +356,20 @@ impl CollectionUser { }} } - pub fn delete_all_by_user(user_uuid: &str, conn: &DbConn) -> EmptyResult { - User::update_uuid_revision(&user_uuid, conn); + pub fn delete_all_by_user_and_org(user_uuid: &str, org_uuid: &str, conn: &DbConn) -> EmptyResult { + let collectionusers = Self::find_by_organization_and_user_uuid(org_uuid, user_uuid, conn); db_run! { conn: { - diesel::delete(users_collections::table.filter(users_collections::user_uuid.eq(user_uuid))) - .execute(conn) - .map_res("Error removing user from collections") + for user in collectionusers { + diesel::delete(users_collections::table.filter( + users_collections::user_uuid.eq(user_uuid) + .and(users_collections::collection_uuid.eq(user.collection_uuid)) + + )) + .execute(conn) + .map_res("Error removing user from collections")?; + } + Ok(()) }} } } diff --git a/src/db/models/organization.rs b/src/db/models/organization.rs index 5378ad2..5fb4f36 100644 --- a/src/db/models/organization.rs +++ b/src/db/models/organization.rs @@ -389,7 +389,7 @@ impl UserOrganization { pub fn delete(self, conn: &DbConn) -> EmptyResult { User::update_uuid_revision(&self.user_uuid, conn); - CollectionUser::delete_all_by_user(&self.user_uuid, &conn)?; + CollectionUser::delete_all_by_user_and_org(&self.user_uuid, &self.org_uuid, &conn)?; db_run! { conn: { diesel::delete(users_organizations::table.filter(users_organizations::uuid.eq(self.uuid)))