summaryrefslogtreecommitdiffstats
path: root/models/attachment.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/attachment.go')
-rw-r--r--models/attachment.go31
1 files changed, 22 insertions, 9 deletions
diff --git a/models/attachment.go b/models/attachment.go
index 5fd90bef13..d800a47109 100644
--- a/models/attachment.go
+++ b/models/attachment.go
@@ -20,15 +20,15 @@ import (
// Attachment represent a attachment of issue/comment/release.
type Attachment struct {
- ID int64 `xorm:"pk autoincr"`
- UUID string `xorm:"uuid UNIQUE"`
- IssueID int64 `xorm:"INDEX"`
- CommentID int64
- ReleaseID int64 `xorm:"INDEX"`
- Name string
-
- Created time.Time `xorm:"-"`
- CreatedUnix int64
+ ID int64 `xorm:"pk autoincr"`
+ UUID string `xorm:"uuid UNIQUE"`
+ IssueID int64 `xorm:"INDEX"`
+ ReleaseID int64 `xorm:"INDEX"`
+ CommentID int64
+ Name string
+ DownloadCount int64 `xorm:"DEFAULT 0"`
+ Created time.Time `xorm:"-"`
+ CreatedUnix int64
}
// BeforeInsert is invoked from XORM before inserting an object of this type.
@@ -45,6 +45,19 @@ func (a *Attachment) AfterSet(colName string, _ xorm.Cell) {
}
}
+// IncreaseDownloadCount is update download count + 1
+func (a *Attachment) IncreaseDownloadCount() error {
+ sess := x.NewSession()
+ defer sessionRelease(sess)
+
+ // Update download count.
+ if _, err := sess.Exec("UPDATE `attachment` SET download_count=download_count+1 WHERE id=?", a.ID); err != nil {
+ return fmt.Errorf("increase attachment count: %v", err)
+ }
+
+ return nil
+}
+
// AttachmentLocalPath returns where attachment is stored in local file
// system based on given UUID.
func AttachmentLocalPath(uuid string) string {