Prevent dangling user redirects (#21856)
- It's possible that the `user_redirect` table contains a user id that no longer exists. - Delete a user redirect upon deleting the user. - Add a check for these dangling user redirects to check-db-consistency.
This commit is contained in:
		
							parent
							
								
									0b993a0d04
								
							
						
					
					
						commit
						20385b52a3
					
				@ -89,6 +89,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
 | 
				
			|||||||
		&user_model.UserBadge{UserID: u.ID},
 | 
							&user_model.UserBadge{UserID: u.ID},
 | 
				
			||||||
		&pull_model.AutoMerge{DoerID: u.ID},
 | 
							&pull_model.AutoMerge{DoerID: u.ID},
 | 
				
			||||||
		&pull_model.ReviewState{UserID: u.ID},
 | 
							&pull_model.ReviewState{UserID: u.ID},
 | 
				
			||||||
 | 
							&user_model.Redirect{RedirectUserID: u.ID},
 | 
				
			||||||
	); err != nil {
 | 
						); err != nil {
 | 
				
			||||||
		return fmt.Errorf("deleteBeans: %w", err)
 | 
							return fmt.Errorf("deleteBeans: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -205,6 +205,9 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er
 | 
				
			|||||||
		// find stopwatches without existing issue
 | 
							// find stopwatches without existing issue
 | 
				
			||||||
		genericOrphanCheck("Orphaned Stopwatches without existing Issue",
 | 
							genericOrphanCheck("Orphaned Stopwatches without existing Issue",
 | 
				
			||||||
			"stopwatch", "issue", "stopwatch.issue_id=`issue`.id"),
 | 
								"stopwatch", "issue", "stopwatch.issue_id=`issue`.id"),
 | 
				
			||||||
 | 
							// find redirects without existing user.
 | 
				
			||||||
 | 
							genericOrphanCheck("Orphaned Redirects without existing redirect user",
 | 
				
			||||||
 | 
								"user_redirect", "user", "user_redirect.redirect_user_id=`user`.id"),
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, c := range consistencyChecks {
 | 
						for _, c := range consistencyChecks {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user