1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Copyright 2022 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package explore
-
- import (
- "net/http"
-
- "code.gitea.io/gitea/models/db"
- repo_model "code.gitea.io/gitea/models/repo"
- api "code.gitea.io/gitea/modules/structs"
- "code.gitea.io/gitea/services/context"
- "code.gitea.io/gitea/services/convert"
- )
-
- // 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 := db.FindAndCount[repo_model.Topic](ctx, 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]any{
- "topics": topicResponses,
- })
- }
|