mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-27 20:26:09 +01:00
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
|
// Copyright 2022 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 explore
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
|
||
|
"code.gitea.io/gitea/models/db"
|
||
|
repo_model "code.gitea.io/gitea/models/repo"
|
||
|
"code.gitea.io/gitea/modules/context"
|
||
|
"code.gitea.io/gitea/modules/convert"
|
||
|
api "code.gitea.io/gitea/modules/structs"
|
||
|
)
|
||
|
|
||
|
// TopicSearch search for creating topic
|
||
|
func TopicSearch(ctx *context.Context) {
|
||
|
opts := &repo_model.FindTopicOptions{
|
||
|
Keyword: ctx.FormString("q"),
|
||
|
ListOptions: db.ListOptions{
|
||
|
Page: ctx.FormInt("page"),
|
||
|
PageSize: convert.ToCorrectPageSize(ctx.FormInt("limit")),
|
||
|
},
|
||
|
}
|
||
|
|
||
|
topics, total, err := repo_model.FindTopics(opts)
|
||
|
if err != nil {
|
||
|
ctx.Error(http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
topicResponses := make([]*api.TopicResponse, len(topics))
|
||
|
for i, topic := range topics {
|
||
|
topicResponses[i] = convert.ToTopicResponse(topic)
|
||
|
}
|
||
|
|
||
|
ctx.SetTotalCountHeader(total)
|
||
|
ctx.JSON(http.StatusOK, map[string]interface{}{
|
||
|
"topics": topicResponses,
|
||
|
})
|
||
|
}
|