mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-30 06:18:02 +02:00
change code for statistics and project api
This commit is contained in:
parent
89fce7ed22
commit
3e1bf8c862
@ -114,16 +114,12 @@ func (p *ProjectAPI) Head() {
|
||||
// Get ...
|
||||
func (p *ProjectAPI) Get() {
|
||||
var projectList []models.Project
|
||||
isAdmin, err := dao.IsAdminRole(p.userID)
|
||||
if err != nil {
|
||||
log.Errorf("Error occured in check admin, error: %v", err)
|
||||
p.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
||||
}
|
||||
projectName := p.GetString("project_name")
|
||||
if len(projectName) > 0 {
|
||||
projectName = "%" + projectName + "%"
|
||||
}
|
||||
var public int
|
||||
var err error
|
||||
isPublic := p.GetString("is_public")
|
||||
if len(isPublic) > 0 {
|
||||
public, err = strconv.Atoi(isPublic)
|
||||
@ -132,30 +128,34 @@ func (p *ProjectAPI) Get() {
|
||||
p.CustomAbort(http.StatusBadRequest, "invalid project Id")
|
||||
}
|
||||
}
|
||||
isAdmin := false
|
||||
if public == 1 {
|
||||
projectList, err = dao.GetPublicProjects(projectName)
|
||||
} else {
|
||||
isAdmin, err = dao.IsAdminRole(p.userID)
|
||||
if err != nil {
|
||||
log.Errorf("Error occured in GetPulicProjects, error: %v", err)
|
||||
log.Errorf("Error occured in check admin, error: %v", err)
|
||||
p.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
||||
}
|
||||
} else {
|
||||
if isAdmin {
|
||||
projectList, err = dao.GetAllProjects(projectName)
|
||||
} else {
|
||||
projectList, err = dao.GetUserRelevantProjects(p.userID, projectName)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
log.Errorf("Error occured in GetUserRelevantProjects, error: %v", err)
|
||||
p.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
||||
}
|
||||
}
|
||||
for i := 0; i < len(projectList); i++ {
|
||||
if public != 1 {
|
||||
if isAdmin {
|
||||
projectList[i].Role = models.PROJECTADMIN
|
||||
}
|
||||
if projectList[i].Role == models.PROJECTADMIN {
|
||||
projectList[i].Togglable = true
|
||||
}
|
||||
}
|
||||
projectList[i].RepoCount = getRepoCountByProject(projectList[i].Name)
|
||||
}
|
||||
p.Data["json"] = projectList
|
||||
|
@ -58,6 +58,16 @@ func (s *StatisticAPI) Get() {
|
||||
proMap["my_repo_count"] = 0
|
||||
proMap["public_project_count"] = 0
|
||||
proMap["public_repo_count"] = 0
|
||||
var publicProjects []models.Project
|
||||
publicProjects, err = dao.GetPublicProjects("")
|
||||
if err != nil {
|
||||
log.Errorf("Error occured in QueryPublicProject, error: %v", err)
|
||||
s.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
||||
}
|
||||
proMap["public_project_count"] = len(publicProjects)
|
||||
for i := 0; i < len(publicProjects); i++ {
|
||||
proMap["public_repo_count"] += getRepoCountByProject(publicProjects[i].Name)
|
||||
}
|
||||
if isAdmin {
|
||||
proMap["total_project_count"] = len(projectList)
|
||||
proMap["total_repo_count"] = getTotalRepoCount()
|
||||
@ -71,10 +81,6 @@ func (s *StatisticAPI) Get() {
|
||||
proMap["my_project_count"]++
|
||||
proMap["my_repo_count"] += getRepoCountByProject(projectList[i].Name)
|
||||
}
|
||||
if projectList[i].Public == 1 {
|
||||
proMap["public_project_count"]++
|
||||
proMap["public_repo_count"] += getRepoCountByProject(projectList[i].Name)
|
||||
}
|
||||
}
|
||||
s.Data["json"] = proMap
|
||||
s.ServeJSON()
|
||||
|
@ -195,7 +195,6 @@ func SearchProjects(userID int) ([]models.Project, error) {
|
||||
// GetUserRelevantProjects returns the projects of the user which are not deleted and name like projectName
|
||||
func GetUserRelevantProjects(userID int, projectName string) ([]models.Project, error) {
|
||||
o := orm.NewOrm()
|
||||
|
||||
sql := `select distinct
|
||||
p.project_id, p.owner_id, p.name,p.creation_time, p.update_time, p.public, pm.role role
|
||||
from project p
|
||||
@ -208,9 +207,7 @@ func GetUserRelevantProjects(userID int, projectName string) ([]models.Project,
|
||||
sql += " and p.name like ? "
|
||||
queryParam = append(queryParam, projectName)
|
||||
}
|
||||
|
||||
sql += " order by p.name "
|
||||
|
||||
var r []models.Project
|
||||
_, err := o.Raw(sql, queryParam).QueryRows(&r)
|
||||
if err != nil {
|
||||
@ -226,11 +223,13 @@ func GetPublicProjects(projectName string) ([]models.Project, error) {
|
||||
sql := `select project_id, owner_id, creation_time, update_time, name, public
|
||||
from project
|
||||
where deleted = 0 and public=1`
|
||||
queryParam := make([]interface{}, 1)
|
||||
if len(projectName) > 0 {
|
||||
sql += " and name like '" + projectName + "'"
|
||||
sql += " and name like ? "
|
||||
queryParam = append(queryParam, projectName)
|
||||
}
|
||||
sql += " order by name "
|
||||
_, err := o.Raw(sql).QueryRows(&publicProjects)
|
||||
_, err := o.Raw(sql, queryParam).QueryRows(&publicProjects)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -243,12 +242,14 @@ func GetAllProjects(projectName string) ([]models.Project, error) {
|
||||
sql := `select project_id, owner_id, creation_time, update_time, name, public
|
||||
from project
|
||||
where deleted = 0`
|
||||
queryParam := make([]interface{}, 1)
|
||||
if len(projectName) > 0 {
|
||||
sql += " and name like '" + projectName + "'"
|
||||
sql += " and name like ? "
|
||||
queryParam = append(queryParam, projectName)
|
||||
}
|
||||
sql += " order by name "
|
||||
var projects []models.Project
|
||||
if _, err := o.Raw(sql).QueryRows(&projects); err != nil {
|
||||
if _, err := o.Raw(sql, queryParam).QueryRows(&projects); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projects, nil
|
||||
|
Loading…
Reference in New Issue
Block a user