Bläddra i källkod

[server] Remove entry from data cleanup on account recovery

Neeraj Gupta 1 år sedan
förälder
incheckning
02e8861e96
2 ändrade filer med 25 tillägg och 2 borttagningar
  1. 9 1
      server/pkg/controller/user/user.go
  2. 16 1
      server/pkg/repo/datacleanup/repository.go

+ 9 - 1
server/pkg/controller/user/user.go

@@ -368,7 +368,15 @@ func (c *UserController) HandleAccountRecovery(ctx *gin.Context, req ente.Recove
 		return stacktrace.Propagate(err, "")
 		return stacktrace.Propagate(err, "")
 	}
 	}
 	err = c.UserRepo.UpdateEmail(req.UserID, encryptedEmail, emailHash)
 	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) {
 func (c *UserController) attachFreeSubscription(userID int64) (ente.Subscription, error) {

+ 16 - 1
server/pkg/repo/datacleanup/repository.go

@@ -3,7 +3,7 @@ package datacleanup
 import (
 import (
 	"context"
 	"context"
 	"database/sql"
 	"database/sql"
-
+	"fmt"
 	entity "github.com/ente-io/museum/ente/data_cleanup"
 	entity "github.com/ente-io/museum/ente/data_cleanup"
 	"github.com/ente-io/museum/pkg/utils/time"
 	"github.com/ente-io/museum/pkg/utils/time"
 	"github.com/ente-io/stacktrace"
 	"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")
 	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) {
 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 
 	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() 
          where stage != $1 and stage_schedule_time < now_utc_micro_seconds()