| @@ -98,19 +98,81 @@ func searchRepoByLabel(ctx *context.Context, Key string, Page int, PageSize int) | |||||
| if SortBy == "" { | if SortBy == "" { | ||||
| SortBy = "updated_unix.keyword" | SortBy = "updated_unix.keyword" | ||||
| } | } | ||||
| PrivateTotal := ctx.QueryInt("PrivateTotal") | |||||
| WebTotal := ctx.QueryInt("WebTotal") | |||||
| ascending := ctx.QueryBool("Ascending") | ascending := ctx.QueryBool("Ascending") | ||||
| from := (Page - 1) * PageSize | |||||
| resultObj := &SearchRes{} | |||||
| log.Info("WebTotal=" + fmt.Sprint(WebTotal)) | |||||
| log.Info("PrivateTotal=" + fmt.Sprint(PrivateTotal)) | |||||
| resultObj.Result = make([]map[string]interface{}, 0) | |||||
| if from < PrivateTotal || from == 0 { | |||||
| orderBy := models.SearchOrderByRecentUpdated | |||||
| switch SortBy { | |||||
| case "updated_unix.keyword": | |||||
| orderBy = models.SearchOrderByRecentUpdated | |||||
| case "num_stars": | |||||
| orderBy = models.SearchOrderByStarsReverse | |||||
| case "num_forks": | |||||
| orderBy = models.SearchOrderByForksReverse | |||||
| case "num_watches": | |||||
| orderBy = models.SearchOrderByWatches | |||||
| } | |||||
| log.Info("actor is null?:" + fmt.Sprint(ctx.User == nil)) | |||||
| repos, count, err := models.SearchRepository(&models.SearchRepoOptions{ | |||||
| ListOptions: models.ListOptions{ | |||||
| Page: Page, | |||||
| PageSize: PageSize, | |||||
| }, | |||||
| Actor: ctx.User, | |||||
| OrderBy: orderBy, | |||||
| Private: true, | |||||
| OnlyPrivate: true, | |||||
| TopicOnly: true, | |||||
| TopicName: Key, | |||||
| IncludeDescription: setting.UI.SearchRepoDescription, | |||||
| }) | |||||
| if err != nil { | |||||
| ctx.JSON(200, "") | |||||
| return | |||||
| } | |||||
| resultObj.PrivateTotal = count | |||||
| if repos.Len() > 0 { | |||||
| log.Info("Query private repo number is:" + fmt.Sprint(repos.Len())) | |||||
| makePrivateRepo(repos, resultObj, Key) | |||||
| } else { | |||||
| log.Info("not found private repo,keyword=" + Key) | |||||
| } | |||||
| if repos.Len() >= PageSize { | |||||
| resultObj.Total = int64(WebTotal) | |||||
| ctx.JSON(200, resultObj) | |||||
| return | |||||
| } | |||||
| } else { | |||||
| resultObj.PrivateTotal = int64(PrivateTotal) | |||||
| } | |||||
| from = from - PrivateTotal | |||||
| if from < 0 { | |||||
| from = 0 | |||||
| } | |||||
| Size := PageSize - len(resultObj.Result) | |||||
| log.Info("query searchRepoByLabel start") | log.Info("query searchRepoByLabel start") | ||||
| if Key != "" { | if Key != "" { | ||||
| boolQ := elastic.NewBoolQuery() | boolQ := elastic.NewBoolQuery() | ||||
| topicsQuery := elastic.NewMatchQuery("topics", Key) | topicsQuery := elastic.NewMatchQuery("topics", Key) | ||||
| boolQ.Should(topicsQuery) | boolQ.Should(topicsQuery) | ||||
| res, err := client.Search("repository-es-index").Query(boolQ).SortBy(elastic.NewScoreSort(), elastic.NewFieldSort(SortBy).Order(ascending)).From((Page - 1) * PageSize).Size(PageSize).Highlight(queryHighlight("topics")).Do(ctx.Req.Context()) | |||||
| res, err := client.Search("repository-es-index").Query(boolQ).SortBy(elastic.NewScoreSort(), elastic.NewFieldSort(SortBy).Order(ascending)).From(from).Size(Size).Highlight(queryHighlight("topics")).Do(ctx.Req.Context()) | |||||
| if err == nil { | if err == nil { | ||||
| searchJson, _ := json.Marshal(res) | searchJson, _ := json.Marshal(res) | ||||
| log.Info("searchJson=" + string(searchJson)) | log.Info("searchJson=" + string(searchJson)) | ||||
| result := makeRepoResult(res, "", false) | |||||
| ctx.JSON(200, result) | |||||
| esresult := makeRepoResult(res, "", false) | |||||
| resultObj.Total = resultObj.PrivateTotal + esresult.Total | |||||
| resultObj.Result = append(resultObj.Result, esresult.Result...) | |||||
| ctx.JSON(200, esresult) | |||||
| } else { | } else { | ||||
| log.Info("query es error," + err.Error()) | log.Info("query es error," + err.Error()) | ||||
| ctx.JSON(200, "") | ctx.JSON(200, "") | ||||