Small improve on deleting attachements (#3145)

* Small improve on deleting attachements

* improve the sequence of deletion
This commit is contained in:
Lunny Xiao 2017-12-24 15:04:22 -06:00 committed by Lauris BH
parent cc7b8e3379
commit f5155b9913

View File

@ -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.