MCPcopy Index your code
hub / github.com/53AI/53AIHub / updateQuery

Function updateQuery

api/middleware/request_decoder.go:109–152  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

107}
108
109func updateQuery(c *gin.Context) {
110 // 当查询参数存在约定的ID参数名时,尝试解码并回填
111 q := c.Request.URL.Query()
112 updated := false
113
114 for key, values := range q {
115 // 兼容 snake_case 与 camelCase 的 ID 字段/参数名
116 if hashids.IsIDField(key) || hashids.IsIDParam(key) {
117 newVals := make([]string, len(values))
118 var decodedSlice []int64
119 decodedAny := false
120
121 for i, v := range values {
122 if v == "" {
123 newVals[i] = v
124 continue
125 }
126 if decoded, err := hashids.TryParseID(v); err == nil {
127 newVals[i] = strconv.FormatInt(decoded, 10)
128 decodedSlice = append(decodedSlice, decoded)
129 decodedAny = true
130 } else {
131 newVals[i] = v
132 }
133 }
134
135 if decodedAny {
136 q[key] = newVals
137 updated = true
138 // 上下文存储解码结果:单值为 int64,多值为 []int64
139 if len(decodedSlice) == 1 {
140 c.Set("decoded_"+key, decodedSlice[0])
141 } else if len(decodedSlice) > 1 {
142 c.Set("decoded_"+key, decodedSlice)
143 }
144 logger.SysLogf("RequestDecoder: decoded query param '%s' %v -> %v", key, values, newVals)
145 }
146 }
147 }
148
149 if updated {
150 c.Request.URL.RawQuery = q.Encode()
151 }
152}
153
154// decodeRequestIDs 递归解码请求数据中的ID字段
155func decodeRequestIDs(data interface{}) interface{} {

Callers 1

RequestDecoderFunction · 0.85

Calls 5

IsIDFieldMethod · 0.80
IsIDParamMethod · 0.80
SetMethod · 0.80
EncodeMethod · 0.80
QueryMethod · 0.65

Tested by

no test coverage detected