// 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, }) }