diff --git a/server/pkg/controller/user/user.go b/server/pkg/controller/user/user.go index afba09058f..ddd6cf2dec 100644 --- a/server/pkg/controller/user/user.go +++ b/server/pkg/controller/user/user.go @@ -368,7 +368,15 @@ func (c *UserController) HandleAccountRecovery(ctx *gin.Context, req ente.Recove return stacktrace.Propagate(err, "") } err = c.UserRepo.UpdateEmail(req.UserID, encryptedEmail, emailHash) - return stacktrace.Propagate(err, "failed to update email") + if err != nil { + return stacktrace.Propagate(err, "failed to update email") + } + err = c.DataCleanupRepo.RemoveScheduledDelete(ctx, req.UserID) + if err != nil { + logrus.WithError(err).Error("failed to remove scheduled delete") + return stacktrace.Propagate(err, "") + } + return stacktrace.Propagate(err, "") } func (c *UserController) attachFreeSubscription(userID int64) (ente.Subscription, error) { diff --git a/server/pkg/repo/datacleanup/repository.go b/server/pkg/repo/datacleanup/repository.go index 4870cecf51..fc1a1c08f6 100644 --- a/server/pkg/repo/datacleanup/repository.go +++ b/server/pkg/repo/datacleanup/repository.go @@ -3,7 +3,7 @@ package datacleanup import ( "context" "database/sql" - + "fmt" entity "github.com/ente-io/museum/ente/data_cleanup" "github.com/ente-io/museum/pkg/utils/time" "github.com/ente-io/stacktrace" @@ -19,6 +19,21 @@ func (r *Repository) Insert(ctx context.Context, userID int64) error { return stacktrace.Propagate(err, "failed to insert") } +func (r *Repository) RemoveScheduledDelete(ctx context.Context, userID int64) error { + res, execErr := r.DB.ExecContext(ctx, `DELETE from data_cleanup where user_id= $1 and stage = $2`, userID, entity.Scheduled) + if execErr != nil { + return execErr + } + affected, affErr := res.RowsAffected() + if affErr != nil { + return affErr + } + if affected != 1 { + return fmt.Errorf("only one row should have been affected, got %d", affected) + } + return nil +} + func (r *Repository) GetItemsPendingCompletion(ctx context.Context, limit int) ([]*entity.DataCleanup, error) { rows, err := r.DB.QueryContext(ctx, `SELECT user_id, stage, stage_schedule_time, stage_attempt_count, created_at, updated_at from data_cleanup where stage != $1 and stage_schedule_time < now_utc_micro_seconds()