From b1347c2594f778b3379fde5c30efc1f867d02751 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Thu, 2 Sep 2021 19:53:09 +0800 Subject: [PATCH 1/5] cmd: update repo commit_cnt --- models/repo.go | 18 ++++++++++++++++++ routers/private/cmd.go | 33 +++++++++++++++++++++++++++++++++ routers/private/hook.go | 4 ++-- routers/private/internal.go | 1 + 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100755 routers/private/cmd.go mode change 100644 => 100755 routers/private/internal.go diff --git a/models/repo.go b/models/repo.go index a5b8e8733..3d82cc581 100755 --- a/models/repo.go +++ b/models/repo.go @@ -1412,6 +1412,15 @@ func GetRepositoriesByForkID(forkID int64) ([]*Repository, error) { return getRepositoriesByForkID(x, forkID) } +func getALLRepositories(e Engine) ([]*Repository, error) { + repos := make([]*Repository, 0, 1000) + return repos, e.Find(&repos) +} + +func GetAllRepositories() ([]*Repository, error) { + return getALLRepositories(x) +} + func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) { repo.LowerName = strings.ToLower(repo.Name) @@ -2414,6 +2423,7 @@ func updateRepositoryCols(e Engine, repo *Repository, cols ...string) error { } // UpdateRepositoryCols updates repository's columns +// Notice: it will update the updated_unix automatically, be careful to use this func UpdateRepositoryCols(repo *Repository, cols ...string) error { return updateRepositoryCols(x, repo, cols...) } @@ -2443,3 +2453,11 @@ func (repo *Repository) IncreaseCloneCnt() { return } + +func UpdateRepositoryCommitNum(repo *Repository) error { + if _,err := x.Exec("UPDATE `repository` SET num_commit = ? where id = ?", repo.NumCommit, repo.ID); err != nil { + return err + } + + return nil +} diff --git a/routers/private/cmd.go b/routers/private/cmd.go new file mode 100755 index 000000000..84dfb3d0e --- /dev/null +++ b/routers/private/cmd.go @@ -0,0 +1,33 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package private + +import ( + "gitea.com/macaron/macaron" + "net/http" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/log" +) + +func UpdateAllRepoCommitCnt(ctx *macaron.Context) { + repos,err := models.GetAllRepositories() + if err != nil { + log.Error("GetAllRepositories failed:%v", err.Error(), ctx.Data["MsgID"]) + ctx.JSON(http.StatusInternalServerError, map[string]string{ + "error_msg": "GetAllRepositories failed", + }) + return + } + + for _, repo := range repos { + log.Info("begin updateRepoCommitCnt(id = %u, name = %s)", repo.ID, repo.Name) + if err = updateRepoCommitCnt(ctx, repo); err != nil { + log.Error("updateRepoCommitCnt(id = %u, name = %s) failed:%v", repo.ID, repo.Name, err.Error(), ctx.Data["MsgID"]) + break + } + log.Info("finish updateRepoCommitCnt(id = %u, name = %s)", repo.ID, repo.Name) + } +} diff --git a/routers/private/hook.go b/routers/private/hook.go index b05a8a33c..a673362fa 100755 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -546,8 +546,8 @@ func updateRepoCommitCnt(ctx *macaron.Context, repo *models.Repository) error { } repo.NumCommit = count - if err = models.UpdateRepositoryCols(repo, "num_commit"); err != nil { - log.Error("UpdateRepositoryCols failed:%v", err.Error(), ctx.Data["MsgID"]) + if err = models.UpdateRepositoryCommitNum(repo); err != nil { + log.Error("UpdateRepositoryCommitNum failed:%v", err.Error(), ctx.Data["MsgID"]) return err } diff --git a/routers/private/internal.go b/routers/private/internal.go old mode 100644 new mode 100755 index 5bc01b0ae..9d5f7b31c --- a/routers/private/internal.go +++ b/routers/private/internal.go @@ -42,6 +42,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/manager/shutdown", Shutdown) m.Post("/manager/restart", Restart) m.Post("/manager/flush-queues", bind(private.FlushOptions{}), FlushQueues) + m.Post("/cmd/update_all_repo_commit_cnt", UpdateAllRepoCommitCnt) }, CheckInternalToken) } From e92116d4bc6bc60d945b822beca4be14da920be0 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 3 Sep 2021 09:35:08 +0800 Subject: [PATCH 2/5] cmd --- routers/private/cmd.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/routers/private/cmd.go b/routers/private/cmd.go index 84dfb3d0e..d3c9c8670 100755 --- a/routers/private/cmd.go +++ b/routers/private/cmd.go @@ -22,12 +22,16 @@ func UpdateAllRepoCommitCnt(ctx *macaron.Context) { return } - for _, repo := range repos { - log.Info("begin updateRepoCommitCnt(id = %u, name = %s)", repo.ID, repo.Name) + for i, repo := range repos { + log.Info("%d:begin updateRepoCommitCnt(id = %d, name = %s)", i, repo.ID, repo.Name) if err = updateRepoCommitCnt(ctx, repo); err != nil { - log.Error("updateRepoCommitCnt(id = %u, name = %s) failed:%v", repo.ID, repo.Name, err.Error(), ctx.Data["MsgID"]) - break + log.Error("updateRepoCommitCnt(id = %d, name = %s) failed:%v", repo.ID, repo.Name, err.Error(), ctx.Data["MsgID"]) + continue } - log.Info("finish updateRepoCommitCnt(id = %u, name = %s)", repo.ID, repo.Name) + log.Info("%d:finish updateRepoCommitCnt(id = %d, name = %s)", i, repo.ID, repo.Name) } + + ctx.JSON(http.StatusOK, map[string]string{ + "error_msg": "", + }) } From 3bba9acbf01b0eec5a0560e4abcd234c1398ea77 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 3 Sep 2021 18:02:46 +0800 Subject: [PATCH 3/5] route --- routers/home.go | 4 ++++ routers/private/cmd.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/routers/home.go b/routers/home.go index 087e4f57c..ee04d8325 100755 --- a/routers/home.go +++ b/routers/home.go @@ -146,6 +146,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { orderBy = models.SearchOrderByRecentUpdated } + //todo:support other topics keyword := strings.Trim(ctx.Query("q"), " ") topicOnly := ctx.QueryBool("topic") ctx.Data["TopicOnly"] = topicOnly @@ -179,6 +180,9 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { pager.AddParam(ctx, "topic", "TopicOnly") ctx.Data["Page"] = pager + //todo: add recommend_orgs + ctx.Data["RecommendOrgs"] = "" + ctx.HTML(200, opts.TplName) } diff --git a/routers/private/cmd.go b/routers/private/cmd.go index d3c9c8670..3c44ae697 100755 --- a/routers/private/cmd.go +++ b/routers/private/cmd.go @@ -13,7 +13,7 @@ import ( ) func UpdateAllRepoCommitCnt(ctx *macaron.Context) { - repos,err := models.GetAllRepositories() + repos, err := models.GetAllRepositories() if err != nil { log.Error("GetAllRepositories failed:%v", err.Error(), ctx.Data["MsgID"]) ctx.JSON(http.StatusInternalServerError, map[string]string{ From 8f7e8e766e0e38e76bcc8d412b7ee46048b73a00 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Mon, 6 Sep 2021 15:10:44 +0800 Subject: [PATCH 4/5] add recommend_orgs --- models/recommend_org.go | 19 ++++++++++++++++++- routers/home.go | 12 +++++++++--- templates/explore/repo_list.tmpl | 9 +++++++-- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/models/recommend_org.go b/models/recommend_org.go index 092ea8338..eb5421d0b 100755 --- a/models/recommend_org.go +++ b/models/recommend_org.go @@ -10,11 +10,15 @@ type RecommendOrg struct { Order int64 `xorm:"INDEX NOT NULL unique"` OrgID int64 `xorm:"INDEX NOT NULL unique"` CreatedUnix timeutil.TimeStamp `xorm:"created"` +} - Org *User `xorm:"-"` +type RecommendOrgInfo struct { + RecommendOrg `xorm:"extends"` + User `xorm:"extends"` } type RecommendOrgList []*RecommendOrg +type RecommendOrgInfoList []*RecommendOrgInfo func getRecommendOrgs(e Engine) (RecommendOrgList, error) { orgs := make(RecommendOrgList, 0, 10) @@ -27,6 +31,19 @@ func GetRecommendOrgs() (RecommendOrgList, error) { return getRecommendOrgs(x) } +func getRecommendOrgInfos(e Engine) (RecommendOrgInfoList, error) { + orgs := make(RecommendOrgInfoList, 0, 10) + if err := e.Table(&RecommendOrg{}).Join("INNER", "`user`", "`user`.id = `recommend_org`.org_id"). + Find(&orgs); err != nil { + return orgs, err + } + return orgs, nil +} + +func GetRecommendOrgInfos() (RecommendOrgInfoList, error) { + return getRecommendOrgInfos(x) +} + func delRecommendOrgs(e Engine) error { sql := "delete from recommend_org" _, err := e.Exec(sql) diff --git a/routers/home.go b/routers/home.go index ee04d8325..e65fcb067 100755 --- a/routers/home.go +++ b/routers/home.go @@ -7,6 +7,7 @@ package routers import ( "bytes" + "net/http" "strings" "code.gitea.io/gitea/models" @@ -180,10 +181,15 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { pager.AddParam(ctx, "topic", "TopicOnly") ctx.Data["Page"] = pager - //todo: add recommend_orgs - ctx.Data["RecommendOrgs"] = "" + recommendOrgs, err := models.GetRecommendOrgInfos() + if err != nil { + log.Error("GetRecommendOrgInfos failed:%v", err.Error(), ctx.Data["MsgID"]) + ctx.ServerError("GetRecommendOrgInfos", err) + return + } + ctx.Data["RecommendOrgs"] = recommendOrgs - ctx.HTML(200, opts.TplName) + ctx.HTML(http.StatusOK, opts.TplName) } // ExploreRepos render explore repositories page diff --git a/templates/explore/repo_list.tmpl b/templates/explore/repo_list.tmpl index c68cb3419..cc940e438 100755 --- a/templates/explore/repo_list.tmpl +++ b/templates/explore/repo_list.tmpl @@ -39,13 +39,13 @@