// Package handler provides HTTP handlers for various endpoints. package handler import ( "net/http" "modelRT/logger" "modelRT/model" "modelRT/network" "github.com/gin-gonic/gin" ) // MeasurementRecommendHandler define measurement recommend API func MeasurementRecommendHandler(c *gin.Context) { var request network.MeasurementRecommendRequest if err := c.ShouldBindJSON(&request); err != nil { logger.Error(c, "failed to unmarshal measurement recommend request", "error", err) c.JSON(http.StatusOK, network.FailureResponse{ Code: http.StatusBadRequest, Msg: err.Error(), }) return } recommends, err := model.RedisSearchRecommend(c, request.Input) if err != nil { logger.Error(c, "failed to get recommend data from redis", "input", request.Input, "error", err) c.JSON(http.StatusOK, network.FailureResponse{ Code: http.StatusInternalServerError, Msg: err.Error(), PayLoad: map[string]interface{}{ "input": request.Input, }, }) return } var minOffset int for index, recommend := range recommends { offset := model.GetLongestCommonPrefixLength(request.Input, recommend) if index == 0 || offset < minOffset { minOffset = offset } } c.JSON(http.StatusOK, network.SuccessResponse{ Code: http.StatusOK, Msg: "success", PayLoad: map[string]interface{}{ "input": request.Input, "offset": minOffset, "recommended_list": recommends, }, }) }