mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-29 22:07:32 +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 ...
|
// Get ...
|
||||||
func (p *ProjectAPI) Get() {
|
func (p *ProjectAPI) Get() {
|
||||||
var projectList []models.Project
|
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")
|
projectName := p.GetString("project_name")
|
||||||
if len(projectName) > 0 {
|
if len(projectName) > 0 {
|
||||||
projectName = "%" + projectName + "%"
|
projectName = "%" + projectName + "%"
|
||||||
}
|
}
|
||||||
var public int
|
var public int
|
||||||
|
var err error
|
||||||
isPublic := p.GetString("is_public")
|
isPublic := p.GetString("is_public")
|
||||||
if len(isPublic) > 0 {
|
if len(isPublic) > 0 {
|
||||||
public, err = strconv.Atoi(isPublic)
|
public, err = strconv.Atoi(isPublic)
|
||||||
@ -132,29 +128,33 @@ func (p *ProjectAPI) Get() {
|
|||||||
p.CustomAbort(http.StatusBadRequest, "invalid project Id")
|
p.CustomAbort(http.StatusBadRequest, "invalid project Id")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
isAdmin := false
|
||||||
if public == 1 {
|
if public == 1 {
|
||||||
projectList, err = dao.GetPublicProjects(projectName)
|
projectList, err = dao.GetPublicProjects(projectName)
|
||||||
|
} else {
|
||||||
|
isAdmin, err = dao.IsAdminRole(p.userID)
|
||||||
if err != nil {
|
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.")
|
p.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if isAdmin {
|
if isAdmin {
|
||||||
projectList, err = dao.GetAllProjects(projectName)
|
projectList, err = dao.GetAllProjects(projectName)
|
||||||
} else {
|
} else {
|
||||||
projectList, err = dao.GetUserRelevantProjects(p.userID, projectName)
|
projectList, err = dao.GetUserRelevantProjects(p.userID, projectName)
|
||||||
}
|
}
|
||||||
if err != nil {
|
}
|
||||||
log.Errorf("Error occured in GetUserRelevantProjects, error: %v", err)
|
if err != nil {
|
||||||
p.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
log.Errorf("Error occured in GetUserRelevantProjects, error: %v", err)
|
||||||
}
|
p.CustomAbort(http.StatusInternalServerError, "Internal error.")
|
||||||
}
|
}
|
||||||
for i := 0; i < len(projectList); i++ {
|
for i := 0; i < len(projectList); i++ {
|
||||||
if isAdmin {
|
if public != 1 {
|
||||||
projectList[i].Role = models.PROJECTADMIN
|
if isAdmin {
|
||||||
}
|
projectList[i].Role = models.PROJECTADMIN
|
||||||
if projectList[i].Role == models.PROJECTADMIN {
|
}
|
||||||
projectList[i].Togglable = true
|
if projectList[i].Role == models.PROJECTADMIN {
|
||||||
|
projectList[i].Togglable = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
projectList[i].RepoCount = getRepoCountByProject(projectList[i].Name)
|
projectList[i].RepoCount = getRepoCountByProject(projectList[i].Name)
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,16 @@ func (s *StatisticAPI) Get() {
|
|||||||
proMap["my_repo_count"] = 0
|
proMap["my_repo_count"] = 0
|
||||||
proMap["public_project_count"] = 0
|
proMap["public_project_count"] = 0
|
||||||
proMap["public_repo_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 {
|
if isAdmin {
|
||||||
proMap["total_project_count"] = len(projectList)
|
proMap["total_project_count"] = len(projectList)
|
||||||
proMap["total_repo_count"] = getTotalRepoCount()
|
proMap["total_repo_count"] = getTotalRepoCount()
|
||||||
@ -71,10 +81,6 @@ func (s *StatisticAPI) Get() {
|
|||||||
proMap["my_project_count"]++
|
proMap["my_project_count"]++
|
||||||
proMap["my_repo_count"] += getRepoCountByProject(projectList[i].Name)
|
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.Data["json"] = proMap
|
||||||
s.ServeJSON()
|
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
|
// GetUserRelevantProjects returns the projects of the user which are not deleted and name like projectName
|
||||||
func GetUserRelevantProjects(userID int, projectName string) ([]models.Project, error) {
|
func GetUserRelevantProjects(userID int, projectName string) ([]models.Project, error) {
|
||||||
o := orm.NewOrm()
|
o := orm.NewOrm()
|
||||||
|
|
||||||
sql := `select distinct
|
sql := `select distinct
|
||||||
p.project_id, p.owner_id, p.name,p.creation_time, p.update_time, p.public, pm.role role
|
p.project_id, p.owner_id, p.name,p.creation_time, p.update_time, p.public, pm.role role
|
||||||
from project p
|
from project p
|
||||||
@ -208,9 +207,7 @@ func GetUserRelevantProjects(userID int, projectName string) ([]models.Project,
|
|||||||
sql += " and p.name like ? "
|
sql += " and p.name like ? "
|
||||||
queryParam = append(queryParam, projectName)
|
queryParam = append(queryParam, projectName)
|
||||||
}
|
}
|
||||||
|
|
||||||
sql += " order by p.name "
|
sql += " order by p.name "
|
||||||
|
|
||||||
var r []models.Project
|
var r []models.Project
|
||||||
_, err := o.Raw(sql, queryParam).QueryRows(&r)
|
_, err := o.Raw(sql, queryParam).QueryRows(&r)
|
||||||
if err != nil {
|
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
|
sql := `select project_id, owner_id, creation_time, update_time, name, public
|
||||||
from project
|
from project
|
||||||
where deleted = 0 and public=1`
|
where deleted = 0 and public=1`
|
||||||
|
queryParam := make([]interface{}, 1)
|
||||||
if len(projectName) > 0 {
|
if len(projectName) > 0 {
|
||||||
sql += " and name like '" + projectName + "'"
|
sql += " and name like ? "
|
||||||
|
queryParam = append(queryParam, projectName)
|
||||||
}
|
}
|
||||||
sql += " order by name "
|
sql += " order by name "
|
||||||
_, err := o.Raw(sql).QueryRows(&publicProjects)
|
_, err := o.Raw(sql, queryParam).QueryRows(&publicProjects)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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
|
sql := `select project_id, owner_id, creation_time, update_time, name, public
|
||||||
from project
|
from project
|
||||||
where deleted = 0`
|
where deleted = 0`
|
||||||
|
queryParam := make([]interface{}, 1)
|
||||||
if len(projectName) > 0 {
|
if len(projectName) > 0 {
|
||||||
sql += " and name like '" + projectName + "'"
|
sql += " and name like ? "
|
||||||
|
queryParam = append(queryParam, projectName)
|
||||||
}
|
}
|
||||||
sql += " order by name "
|
sql += " order by name "
|
||||||
var projects []models.Project
|
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 nil, err
|
||||||
}
|
}
|
||||||
return projects, nil
|
return projects, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user