summaryrefslogtreecommitdiffstats
path: root/models/attachment.go
diff options
context:
space:
mode:
authorBo-Yi Wu <appleboy.tw@gmail.com>2017-04-20 10:31:31 +0800
committerGitHub <noreply@github.com>2017-04-20 10:31:31 +0800
commitfa2a513c62910c133316472247121c5c562eaf60 (patch)
treedbcb79b8bf9f0ac89ac522f871a773b5addac4b8 /models/attachment.go
parenta2d365c81fc4eb35ac598bcef696eb1b775b8a9b (diff)
downloadgitea-fa2a513c62910c133316472247121c5c562eaf60.tar.gz
gitea-fa2a513c62910c133316472247121c5c562eaf60.zip
feat: add download count field and unit testing for attachment. (#1512)
* feat: add download count field and unit testing. * fix: unit testing * refactor: improve testing. * fix: update comment * add default value. Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
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 {