add api to list top 10 repos

This commit is contained in:
wemeya
2016-06-01 17:01:43 +08:00
parent 498d2e629a
commit ffd58c0f2d
3 changed files with 27 additions and 0 deletions
+11
View File
@@ -288,3 +288,14 @@ func (ra *RepositoryAPI) getUsername() (string, error) {
return "", nil
}
//getTopTenRepos handles request GET /api/repositories/toprepos
func (ra *RepositoryAPI) GetTopTenRepos() {
repos, err := dao.GetTop10Repos()
if err != nil {
log.Errorf("error occured in get top 10 repos: v%", err)
ra.CustomAbort(http.StatusInternalServerError, "internal server error")
}
ra.Data["json"] = repos
ra.ServeJSON()
}
+15
View File
@@ -18,6 +18,8 @@ package dao
import (
"strings"
"github.com/astaxie/beego/orm"
"github.com/vmware/harbor/models"
"github.com/vmware/harbor/utils/log"
)
@@ -145,3 +147,16 @@ func GetRecentLogs(userID, linesNum int, startTime, endTime string) ([]models.Ac
}
return recentLogList, nil
}
//GetTop10Repos return top 10 accessed public repos
func GetTop10Repos() ([]orm.ParamsList, error) {
o := GetOrmer()
sql := "select log_id, access_log.user_id, access_log.project_id, repo_name, repo_tag, GUID, operation, op_time, COUNT(repo_name) as access_count from access_log left join project on access_log.project_id=project.project_id where project.public=1 and access_log.operation<>'create' group by repo_name order by access_count desc limit 10"
var lists []orm.ParamsList
_, err := o.Raw(sql).ValuesList(&lists)
if err != nil {
return nil, err
}
return lists, nil
}
+1
View File
@@ -64,6 +64,7 @@ func initRouters() {
beego.Router("/api/repositories", &api.RepositoryAPI{})
beego.Router("/api/repositories/tags", &api.RepositoryAPI{}, "get:GetTags")
beego.Router("/api/repositories/manifests", &api.RepositoryAPI{}, "get:GetManifests")
beego.Router("/api/repositories/toprepos", &api.RepositoryAPI{}, "get:GetTopTenRepos")
beego.Router("api/logs", &api.LogAPI{})
//external service that hosted on harbor process: