0
0
Fork 0
mirror of https://github.com/go-gitea/gitea synced 2024-11-25 14:02:58 +01:00

Only do counting when count_only=true for repo dashboard (#29884)

Ref: #29878
This commit is contained in:
wxiaoguang 2024-03-18 19:05:17 +08:00 committed by GitHub
parent 16e360099d
commit b251e608c0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 11 deletions

View file

@ -622,26 +622,31 @@ func SearchRepo(ctx *context.Context) {
} }
} }
var err error // To improve performance when only the count is requested
if ctx.FormBool("count_only") {
if count, err := repo_model.CountRepository(ctx, opts); err != nil {
log.Error("CountRepository: %v", err)
ctx.JSON(http.StatusInternalServerError, nil) // frontend JS doesn't handle error response (same as below)
} else {
ctx.SetTotalCountHeader(count)
ctx.JSONOK()
}
return
}
repos, count, err := repo_model.SearchRepository(ctx, opts) repos, count, err := repo_model.SearchRepository(ctx, opts)
if err != nil { if err != nil {
ctx.JSON(http.StatusInternalServerError, api.SearchError{ log.Error("SearchRepository: %v", err)
OK: false, ctx.JSON(http.StatusInternalServerError, nil)
Error: err.Error(),
})
return return
} }
ctx.SetTotalCountHeader(count) ctx.SetTotalCountHeader(count)
// To improve performance when only the count is requested
if ctx.FormBool("count_only") {
return
}
latestCommitStatuses, err := commitstatus_service.FindReposLastestCommitStatuses(ctx, repos) latestCommitStatuses, err := commitstatus_service.FindReposLastestCommitStatuses(ctx, repos)
if err != nil { if err != nil {
log.Error("FindReposLastestCommitStatuses: %v", err) log.Error("FindReposLastestCommitStatuses: %v", err)
ctx.JSON(http.StatusInternalServerError, nil)
return return
} }

View file

@ -235,7 +235,7 @@ const sfc = {
if (!this.reposTotalCount) { if (!this.reposTotalCount) {
const totalCountSearchURL = `${this.subUrl}/repo/search?count_only=1&uid=${this.uid}&team_id=${this.teamId}&q=&page=1&mode=`; const totalCountSearchURL = `${this.subUrl}/repo/search?count_only=1&uid=${this.uid}&team_id=${this.teamId}&q=&page=1&mode=`;
response = await GET(totalCountSearchURL); response = await GET(totalCountSearchURL);
this.reposTotalCount = response.headers.get('X-Total-Count'); this.reposTotalCount = response.headers.get('X-Total-Count') ?? '?';
} }
response = await GET(searchedURL); response = await GET(searchedURL);