mirror of
https://github.com/wahyd4/harbor.git
synced 2026-08-21 02:36:24 +10:00
add api to list top 10 repos
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user