mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 13:28:25 +00:00 
			
		
		
		
	Small improve on deleting attachements (#3145)
* Small improve on deleting attachements * improve the sequence of deletion
This commit is contained in:
		@@ -135,19 +135,28 @@ func DeleteAttachment(a *Attachment, remove bool) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DeleteAttachments deletes the given attachments and optionally the associated files.
 | 
					// DeleteAttachments deletes the given attachments and optionally the associated files.
 | 
				
			||||||
func DeleteAttachments(attachments []*Attachment, remove bool) (int, error) {
 | 
					func DeleteAttachments(attachments []*Attachment, remove bool) (int, error) {
 | 
				
			||||||
	for i, a := range attachments {
 | 
						if len(attachments) == 0 {
 | 
				
			||||||
 | 
							return 0, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var ids = make([]int64, 0, len(attachments))
 | 
				
			||||||
 | 
						for _, a := range attachments {
 | 
				
			||||||
 | 
							ids = append(ids, a.ID)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cnt, err := x.In("id", ids).NoAutoCondition().Delete(attachments[0])
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return 0, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if remove {
 | 
						if remove {
 | 
				
			||||||
 | 
							for i, a := range attachments {
 | 
				
			||||||
			if err := os.Remove(a.LocalPath()); err != nil {
 | 
								if err := os.Remove(a.LocalPath()); err != nil {
 | 
				
			||||||
				return i, err
 | 
									return i, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		if _, err := x.Delete(a); err != nil {
 | 
					 | 
				
			||||||
			return i, err
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}
 | 
						return int(cnt), nil
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return len(attachments), nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DeleteAttachmentsByIssue deletes all attachments associated with the given issue.
 | 
					// DeleteAttachmentsByIssue deletes all attachments associated with the given issue.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user