[BugFix] Fix comment broken issue ref dependence (#12651)
* deleteIssuesByRepoID: delete related CommentTypeRemoveDependency & CommentTypeAddDependency comments too * Ignore ErrIssueNotExist on comment.LoadDepIssueDetails() * Add migration * Ignore 'dependent_issue_id = 0' case * exchange as per @lunny Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		
					parent
					
						
							
								42a5e39b3b
							
						
					
				
			
			
				commit
				
					
						6c5266c9ca
					
				
			
		
					 4 changed files with 25 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1978,6 +1978,11 @@ func deleteIssuesByRepoID(sess Engine, repoID int64) (attachmentPaths []string,
 | 
			
		|||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if _, err = sess.In("dependent_issue_id", deleteCond).
 | 
			
		||||
		Delete(&Comment{}); err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var attachments []*Attachment
 | 
			
		||||
	if err = sess.In("issue_id", deleteCond).
 | 
			
		||||
		Find(&attachments); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -228,6 +228,8 @@ var migrations = []Migration{
 | 
			
		|||
	NewMigration("Add projects info to repository table", addProjectsInfo),
 | 
			
		||||
	// v147 -> v148
 | 
			
		||||
	NewMigration("create review for 0 review id code comments", createReviewsForCodeComments),
 | 
			
		||||
	// v148 -> v149
 | 
			
		||||
	NewMigration("remove issue dependency comments who refer to non existing issues", purgeInvalidDependenciesComments),
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetCurrentDBVersion returns the current db version
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								models/migrations/v148.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								models/migrations/v148.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
// Copyright 2020 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package migrations
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"xorm.io/xorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func purgeInvalidDependenciesComments(x *xorm.Engine) error {
 | 
			
		||||
	_, err := x.Exec("DELETE FROM comment WHERE dependent_issue_id != 0 AND dependent_issue_id NOT IN (SELECT id FROM issue)")
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1079,8 +1079,10 @@ func ViewIssue(ctx *context.Context) {
 | 
			
		|||
			}
 | 
			
		||||
		} else if comment.Type == models.CommentTypeRemoveDependency || comment.Type == models.CommentTypeAddDependency {
 | 
			
		||||
			if err = comment.LoadDepIssueDetails(); err != nil {
 | 
			
		||||
				ctx.ServerError("LoadDepIssueDetails", err)
 | 
			
		||||
				return
 | 
			
		||||
				if !models.IsErrIssueNotExist(err) {
 | 
			
		||||
					ctx.ServerError("LoadDepIssueDetails", err)
 | 
			
		||||
					return
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else if comment.Type == models.CommentTypeCode || comment.Type == models.CommentTypeReview {
 | 
			
		||||
			comment.RenderedContent = string(markdown.Render([]byte(comment.Content), ctx.Repo.RepoLink,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue