|
@@ -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, "") |
|
|