aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web/explore
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-04-08 02:59:56 +0800
committerGitHub <noreply@github.com>2022-04-07 20:59:56 +0200
commit783a02188970ba5800514f7c64f6a818f65c04a1 (patch)
tree8c7dc3bbe00abbc245203f94c437f157168cc54a /routers/web/explore
parentbb7e0619c3356227d6c5826cb789841f6bc4a05a (diff)
downloadgitea-783a02188970ba5800514f7c64f6a818f65c04a1.tar.gz
gitea-783a02188970ba5800514f7c64f6a818f65c04a1.zip
Never use /api/v1 from Gitea UI Pages (#19318)
Reusing `/api/v1` from Gitea UI Pages have pros and cons. Pros: 1) Less code copy Cons: 1) API/v1 have to support shared session with page requests. 2) You need to consider for each other when you want to change something about api/v1 or page. This PR moves all dependencies to API/v1 from UI Pages. Partially replace #16052
Diffstat (limited to 'routers/web/explore')
-rw-r--r--routers/web/explore/topic.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/routers/web/explore/topic.go b/routers/web/explore/topic.go
new file mode 100644
index 0000000000..39b87f2498
--- /dev/null
+++ b/routers/web/explore/topic.go
@@ -0,0 +1,42 @@
+// 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,
+ })
+}