diff --git a/models/attachment.go b/models/attachment.go index a93082bf0..fdf930ecf 100755 --- a/models/attachment.go +++ b/models/attachment.go @@ -41,9 +41,9 @@ type Attachment struct { UploaderID int64 `xorm:"INDEX DEFAULT 0"` // Notice: will be zero before this column added CommentID int64 Name string - Description string `xorm:"TEXT"` - DownloadCount int64 `xorm:"DEFAULT 0"` - UseCount int64 + Description string `xorm:"TEXT"` + DownloadCount int64 `xorm:"DEFAULT 0"` + UseCount int64 `xorm:"DEFAULT 0"` Size int64 `xorm:"DEFAULT 0"` IsPrivate bool `xorm:"DEFAULT false"` DecompressState int32 `xorm:"DEFAULT 0"` @@ -108,6 +108,15 @@ func (a *Attachment) IncreaseDownloadCount() error { return nil } +func IncreaseAttachmentUseCount(uuid string) error { + // Update use count. + if _, err := x.Exec("UPDATE `attachment` SET use_count=use_count+1 WHERE uuid=?", uuid); err != nil { + return fmt.Errorf("increase attachment use count: %v", err) + } + + return nil +} + func (a *Attachment) UpdateDatasetUpdateUnix() error { // Update download count. if _, err := x.Exec("UPDATE `dataset` SET updated_unix="+fmt.Sprint(time.Now().Unix())+" WHERE id=?", a.DatasetID); err != nil { diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 810e68d30..451a36c81 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1395,6 +1395,8 @@ func CreateCloudbrain(cloudbrain *Cloudbrain) (err error) { if _, err = x.NoAutoTime().Insert(cloudbrain); err != nil { return err } + + go IncreaseDatasetUseCount(cloudbrain.Uuid) return nil } @@ -1629,6 +1631,8 @@ func RestartCloudbrain(old *Cloudbrain, new *Cloudbrain) (err error) { return err } + go IncreaseDatasetUseCount(new.Uuid) + return nil } func CloudbrainAll(opts *CloudbrainsOptions) ([]*CloudbrainInfo, int64, error) { diff --git a/models/dataset.go b/models/dataset.go index baf7731e4..aa29984f0 100755 --- a/models/dataset.go +++ b/models/dataset.go @@ -25,9 +25,9 @@ type Dataset struct { Category string Description string `xorm:"TEXT"` DownloadTimes int64 - UseCount int64 - NumStars int `xorm:"INDEX NOT NULL DEFAULT 0"` - Recommend bool `xorm:"INDEX NOT NULL DEFAULT false"` + UseCount int64 `xorm:"DEFAULT 0"` + NumStars int `xorm:"INDEX NOT NULL DEFAULT 0"` + Recommend bool `xorm:"INDEX NOT NULL DEFAULT false"` License string Task string ReleaseID int64 `xorm:"INDEX"` @@ -351,6 +351,17 @@ func UpdateDataset(ctx DBContext, rel *Dataset) error { return err } +func IncreaseDatasetUseCount(uuid string) { + + IncreaseAttachmentUseCount(uuid) + + attachment, _ := GetAttachmentByUUID(uuid) + if attachment != nil { + x.Exec("UPDATE `dataset` SET use_count=use_count+1 WHERE id=?", attachment.DatasetID) + } + +} + // GetDatasetByID returns Dataset with given ID. func GetDatasetByID(id int64) (*Dataset, error) { rel := new(Dataset) diff --git a/models/repo_list.go b/models/repo_list.go index 253cc968c..92654c11c 100755 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -218,6 +218,8 @@ const ( SearchOrderByForks SearchOrderBy = "num_forks ASC" SearchOrderByForksReverse SearchOrderBy = "num_forks DESC" SearchOrderByDownloadTimes SearchOrderBy = "download_times DESC" + SearchOrderByUseCount SearchOrderBy = "use_count ASC" + SearchOrderByUseCountReverse SearchOrderBy = "use_count DESC" SearchOrderByHot SearchOrderBy = "(num_watches + num_stars + num_forks + clone_cnt) DESC" SearchOrderByActive SearchOrderBy = "(num_issues + num_pulls + num_commit) DESC" SearchOrderByWatches SearchOrderBy = "num_watches DESC" diff --git a/routers/admin/dataset.go b/routers/admin/dataset.go index 6b29b06ff..d1a8f2780 100644 --- a/routers/admin/dataset.go +++ b/routers/admin/dataset.go @@ -61,6 +61,10 @@ func Datasets(ctx *context.Context) { orderBy = models.SearchOrderByForksReverse case "fewestforks": orderBy = models.SearchOrderByForks + case "mostusecount": + orderBy = models.SearchOrderByUseCountReverse + case "fewestusecount": + orderBy = models.SearchOrderByUseCount default: ctx.Data["SortType"] = "recentupdate" orderBy = models.SearchOrderByRecentUpdated diff --git a/routers/home.go b/routers/home.go index 38acffb2f..a34302876 100755 --- a/routers/home.go +++ b/routers/home.go @@ -322,6 +322,10 @@ func ExploreDatasets(ctx *context.Context) { orderBy = models.SearchOrderByStarsReverse case "feweststars": orderBy = models.SearchOrderByStars + case "mostusecount": + orderBy = models.SearchOrderByUseCountReverse + case "fewestusecount": + orderBy = models.SearchOrderByUseCount case "default": orderBy = models.SearchOrderByDefault default: