Files
app-api/internal/handler/model_list.go
T
2026-05-21 15:20:12 +08:00

57 lines
1.2 KiB
Go

package handler
import (
"net/http"
"strconv"
"github.com/gin-gonic/gin"
"github.com/luxsin/app-api/internal/response"
"github.com/luxsin/app-api/internal/search"
"github.com/luxsin/app-api/pkg/encode"
"go.uber.org/zap"
)
type ModelListHandler struct {
search *search.Client
log *zap.Logger
}
func NewModelListHandler(searchClient *search.Client, log *zap.Logger) *ModelListHandler {
return &ModelListHandler{
search: searchClient,
log: log,
}
}
func (h *ModelListHandler) ModelList(c *gin.Context) {
key := c.Query("key")
base64Resp := encode.ParseBase64Param(c)
count := 100
if v := c.Query("count"); v != "" {
if n, err := strconv.Atoi(v); err == nil && n > 0 {
count = n
}
}
list, err := h.search.ModelList(c.Request.Context(), key, count)
if err != nil {
h.log.Error("model list search failed", zap.Error(err))
response.InternalError(c, "failed to search models")
return
}
if base64Resp {
encoded, err := encode.EncodeJSON(list)
if err != nil {
h.log.Error("encode response failed", zap.Error(err))
response.InternalError(c, "failed to encode response")
return
}
c.String(http.StatusOK, encoded)
return
}
c.JSON(http.StatusOK, list)
}