package controller import ( "net/http" "strings" "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/model" "github.com/QuantumNous/new-api/setting/ratio_setting" "github.com/QuantumNous/new-api/types" "github.com/gin-gonic/gin" ) func GetModelDisplayPricingRules(c *gin.Context) { common.ApiSuccess(c, ratio_setting.GetModelDisplayPricingCopy()) } func GetModelDisplayPricingRule(c *gin.Context) { modelName := strings.TrimPrefix(c.Param("model"), "/") items := ratio_setting.GetModelDisplayPricing(modelName) if len(items) == 0 { c.JSON(http.StatusNotFound, gin.H{"success": false, "message": "model display pricing not found"}) return } common.ApiSuccess(c, items) } func UpdateModelDisplayPricingRule(c *gin.Context) { modelName := strings.TrimPrefix(c.Param("model"), "/") var items []types.ModelDisplayPricingItem if err := common.DecodeJson(c.Request.Body, &items); err != nil { c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()}) return } if err := ratio_setting.SetModelDisplayPricing(modelName, items); err != nil { c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()}) return } if err := model.UpdateOption(ratio_setting.ModelDisplayPricingOptionKey, ratio_setting.ModelDisplayPricing2JSONString()); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"success": false, "message": err.Error()}) return } model.RefreshPricing() common.ApiSuccess(c, ratio_setting.GetModelDisplayPricing(modelName)) } func DeleteModelDisplayPricingRule(c *gin.Context) { modelName := strings.TrimPrefix(c.Param("model"), "/") if err := ratio_setting.DeleteModelDisplayPricing(modelName); err != nil { c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()}) return } if err := model.UpdateOption(ratio_setting.ModelDisplayPricingOptionKey, ratio_setting.ModelDisplayPricing2JSONString()); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"success": false, "message": err.Error()}) return } model.RefreshPricing() common.ApiSuccess(c, nil) }