Delete the person rows also.

This commit is contained in:
Dessalines 2024-02-14 11:03:28 -05:00
parent 9bbbcc6e37
commit ed6874da0b

View File

@ -1,6 +1,6 @@
use crate::{
newtypes::{DbUrl, LocalUserId, PersonId},
schema::{local_user, registration_application},
schema::{local_user, person, registration_application},
source::{
actor_language::{LocalUserLanguage, SiteLanguage},
local_user::{LocalUser, LocalUserInsertForm, LocalUserUpdateForm},
@ -15,7 +15,7 @@ use crate::{
};
use bcrypt::{hash, DEFAULT_COST};
use diesel::{
dsl::{insert_into, IntervalDsl},
dsl::{insert_into, not, IntervalDsl},
result::Error,
ExpressionMethods,
JoinOnDsl,
@ -70,11 +70,15 @@ impl LocalUser {
// Delete based on join logic is here:
// https://stackoverflow.com/questions/60836040/how-do-i-perform-a-delete-with-sub-query-in-diesel-against-a-postgres-database
let users = local_user::table
let local_users = local_user::table
.filter(local_user::id.eq_any(old_denied_registrations))
.filter(local_user::accepted_application.eq(false));
.filter(not(local_user::accepted_application))
.select(local_user::person_id);
diesel::delete(users).execute(conn).await
// Delete the person rows, which should automatically clear the local_user ones
let persons = person::table.filter(person::id.eq_any(local_users));
diesel::delete(persons).execute(conn).await
}
pub async fn is_email_taken(pool: &mut DbPool<'_>, email: &str) -> Result<bool, Error> {
@ -100,7 +104,6 @@ impl LocalUser {
community_follower,
instance,
instance_block,
person,
person_block,
post,
post_saved,