package request import ( "context" "github.com/gin-gonic/gin" ) const ( ReqInfoKey reqInfoKeyType = "request-info" ) func SetTraceId(c *gin.Context, traceId string) { info, exists := c.Get(ReqInfoKey) if exists { parsedInfo := info.(RequestInfo) parsedInfo.TraceId = traceId c.Set(ReqInfoKey, parsedInfo) return } c.Set(ReqInfoKey, RequestInfo{TraceId: traceId}) } func SetUserId(c *gin.Context, userId int64) { info, exists := c.Get(ReqInfoKey) if exists { parsedInfo := info.(RequestInfo) parsedInfo.UserId = userId c.Set(ReqInfoKey, parsedInfo) return } c.Set(ReqInfoKey, RequestInfo{UserId: userId}) } func SetUserContext(c *gin.Context, payload map[string]interface{}) { c.Set(ReqInfoKey, RequestInfo{ UserId: int64(payload["userId"].(float64)), Role: payload["role"].(string), }) } func ContextWithReqInfo(c *gin.Context) context.Context { info, ok := c.Get(ReqInfoKey) if ok { return WithRequestInfo(c, info.(RequestInfo)) } return WithRequestInfo(c, RequestInfo{}) }