@@ -97,6 +97,33 @@ const (
9797 CmdTypeTSTimestampValueSlice
9898)
9999
100+ type (
101+ CmdTypeXAutoClaimValue struct {
102+ messages []XMessage
103+ start string
104+ }
105+
106+ CmdTypeXAutoClaimJustIDValue struct {
107+ ids []string
108+ start string
109+ }
110+
111+ CmdTypeScanValue struct {
112+ keys []string
113+ cursor uint64
114+ }
115+
116+ CmdTypeKeyValuesValue struct {
117+ key string
118+ values []string
119+ }
120+
121+ CmdTypeZSliceWithKeyValue struct {
122+ key string
123+ zSlice []Z
124+ }
125+ )
126+
100127type Cmder interface {
101128 // command name.
102129 // e.g. "set k v ex 10" -> "set", "cluster info" -> "cluster".
@@ -6846,6 +6873,10 @@ func ExtractCommandValue(cmd interface{}) interface{} {
68466873
68476874 // Use fast type-based extraction
68486875 switch cmdType {
6876+ case CmdTypeGeneric :
6877+ if genericCmd , ok := cmd .(interface { Val () interface {} }); ok {
6878+ return genericCmd .Val ()
6879+ }
68496880 case CmdTypeString :
68506881 if stringCmd , ok := cmd .(interface { Val () string }); ok {
68516882 return stringCmd .Val ()
@@ -6866,21 +6897,217 @@ func ExtractCommandValue(cmd interface{}) interface{} {
68666897 if statusCmd , ok := cmd .(interface { Val () string }); ok {
68676898 return statusCmd .Val ()
68686899 }
6869- case CmdTypeDuration , CmdTypeTime , CmdTypeStringStructMap , CmdTypeXMessageSlice ,
6870- CmdTypeXStreamSlice , CmdTypeXPending , CmdTypeXPendingExt , CmdTypeXAutoClaim ,
6871- CmdTypeXAutoClaimJustID , CmdTypeXInfoConsumers , CmdTypeXInfoGroups , CmdTypeXInfoStream ,
6872- CmdTypeXInfoStreamFull , CmdTypeZSlice , CmdTypeZWithKey , CmdTypeScan , CmdTypeClusterSlots ,
6873- CmdTypeGeoSearchLocation , CmdTypeGeoPos , CmdTypeCommandsInfo , CmdTypeSlowLog ,
6874- CmdTypeKeyValues , CmdTypeZSliceWithKey , CmdTypeFunctionList , CmdTypeFunctionStats ,
6875- CmdTypeLCS , CmdTypeKeyFlags , CmdTypeClusterLinks , CmdTypeClusterShards ,
6876- CmdTypeRankWithScore , CmdTypeClientInfo , CmdTypeACLLog , CmdTypeInfo , CmdTypeMonitor ,
6877- CmdTypeJSON , CmdTypeJSONSlice , CmdTypeIntPointerSlice , CmdTypeScanDump , CmdTypeBFInfo ,
6878- CmdTypeCFInfo , CmdTypeCMSInfo , CmdTypeTopKInfo , CmdTypeTDigestInfo , CmdTypeFTSearch ,
6879- CmdTypeFTInfo , CmdTypeFTSpellCheck , CmdTypeFTSynDump , CmdTypeAggregate ,
6880- CmdTypeTSTimestampValue , CmdTypeTSTimestampValueSlice :
6881- if durationCmd , ok := cmd .(interface { Val () interface {} }); ok {
6900+ case CmdTypeDuration :
6901+ if durationCmd , ok := cmd .(interface { Val () time.Duration }); ok {
68826902 return durationCmd .Val ()
68836903 }
6904+ case CmdTypeTime :
6905+ if timeCmd , ok := cmd .(interface { Val () time.Time }); ok {
6906+ return timeCmd .Val ()
6907+ }
6908+ case CmdTypeStringStructMap :
6909+ if structMapCmd , ok := cmd .(interface { Val () map [string ]struct {} }); ok {
6910+ return structMapCmd .Val ()
6911+ }
6912+ case CmdTypeXMessageSlice :
6913+ if xMessageSliceCmd , ok := cmd .(interface { Val () []XMessage }); ok {
6914+ return xMessageSliceCmd .Val ()
6915+ }
6916+ case CmdTypeXStreamSlice :
6917+ if xStreamSliceCmd , ok := cmd .(interface { Val () []XStream }); ok {
6918+ return xStreamSliceCmd .Val ()
6919+ }
6920+ case CmdTypeXPending :
6921+ if xPendingCmd , ok := cmd .(interface { Val () * XPending }); ok {
6922+ return xPendingCmd .Val ()
6923+ }
6924+ case CmdTypeXPendingExt :
6925+ if xPendingExtCmd , ok := cmd .(interface { Val () []XPendingExt }); ok {
6926+ return xPendingExtCmd .Val ()
6927+ }
6928+ case CmdTypeXAutoClaim :
6929+ if xAutoClaimCmd , ok := cmd .(interface { Val () ([]XMessage , string ) }); ok {
6930+ messages , start := xAutoClaimCmd .Val ()
6931+ return CmdTypeXAutoClaimValue {messages : messages , start : start }
6932+ }
6933+ case CmdTypeXAutoClaimJustID :
6934+ if xAutoClaimJustIDCmd , ok := cmd .(interface { Val () ([]string , string ) }); ok {
6935+ ids , start := xAutoClaimJustIDCmd .Val ()
6936+ return CmdTypeXAutoClaimJustIDValue {ids : ids , start : start }
6937+ }
6938+ case CmdTypeXInfoConsumers :
6939+ if xInfoConsumersCmd , ok := cmd .(interface { Val () []XInfoConsumer }); ok {
6940+ return xInfoConsumersCmd .Val ()
6941+ }
6942+ case CmdTypeXInfoGroups :
6943+ if xInfoGroupsCmd , ok := cmd .(interface { Val () []XInfoGroup }); ok {
6944+ return xInfoGroupsCmd .Val ()
6945+ }
6946+ case CmdTypeXInfoStream :
6947+ if xInfoStreamCmd , ok := cmd .(interface { Val () * XInfoStream }); ok {
6948+ return xInfoStreamCmd .Val ()
6949+ }
6950+ case CmdTypeXInfoStreamFull :
6951+ if xInfoStreamFullCmd , ok := cmd .(interface { Val () * XInfoStreamFull }); ok {
6952+ return xInfoStreamFullCmd .Val ()
6953+ }
6954+ case CmdTypeZSlice :
6955+ if zSliceCmd , ok := cmd .(interface { Val () []Z }); ok {
6956+ return zSliceCmd .Val ()
6957+ }
6958+ case CmdTypeZWithKey :
6959+ if zWithKeyCmd , ok := cmd .(interface { Val () * ZWithKey }); ok {
6960+ return zWithKeyCmd .Val ()
6961+ }
6962+ case CmdTypeScan :
6963+ if scanCmd , ok := cmd .(interface { Val () ([]string , uint64 ) }); ok {
6964+ keys , cursor := scanCmd .Val ()
6965+ return CmdTypeScanValue {keys : keys , cursor : cursor }
6966+ }
6967+ case CmdTypeClusterSlots :
6968+ if clusterSlotsCmd , ok := cmd .(interface { Val () []ClusterSlot }); ok {
6969+ return clusterSlotsCmd .Val ()
6970+ }
6971+ case CmdTypeGeoLocation :
6972+ if geoLocationCmd , ok := cmd .(interface { Val () []GeoLocation }); ok {
6973+ return geoLocationCmd .Val ()
6974+ }
6975+ case CmdTypeGeoSearchLocation :
6976+ if geoSearchLocationCmd , ok := cmd .(interface { Val () []GeoLocation }); ok {
6977+ return geoSearchLocationCmd .Val ()
6978+ }
6979+ case CmdTypeGeoPos :
6980+ if geoPosCmd , ok := cmd .(interface { Val () []* GeoPos }); ok {
6981+ return geoPosCmd .Val ()
6982+ }
6983+ case CmdTypeCommandsInfo :
6984+ if commandsInfoCmd , ok := cmd .(interface {
6985+ Val () map [string ]* CommandInfo
6986+ }); ok {
6987+ return commandsInfoCmd .Val ()
6988+ }
6989+ case CmdTypeSlowLog :
6990+ if slowLogCmd , ok := cmd .(interface { Val () []SlowLog }); ok {
6991+ return slowLogCmd .Val ()
6992+ }
6993+ case CmdTypeKeyValues :
6994+ if keyValuesCmd , ok := cmd .(interface { Val () (string , []string ) }); ok {
6995+ key , values := keyValuesCmd .Val ()
6996+ return CmdTypeKeyValuesValue {key : key , values : values }
6997+ }
6998+ case CmdTypeZSliceWithKey :
6999+ if zSliceWithKeyCmd , ok := cmd .(interface { Val () (string , []Z ) }); ok {
7000+ key , zSlice := zSliceWithKeyCmd .Val ()
7001+ return CmdTypeZSliceWithKeyValue {key : key , zSlice : zSlice }
7002+ }
7003+ case CmdTypeFunctionList :
7004+ if functionListCmd , ok := cmd .(interface { Val () []Library }); ok {
7005+ return functionListCmd .Val ()
7006+ }
7007+ case CmdTypeFunctionStats :
7008+ if functionStatsCmd , ok := cmd .(interface { Val () FunctionStats }); ok {
7009+ return functionStatsCmd .Val ()
7010+ }
7011+ case CmdTypeLCS :
7012+ if lcsCmd , ok := cmd .(interface { Val () * LCSMatch }); ok {
7013+ return lcsCmd .Val ()
7014+ }
7015+ case CmdTypeKeyFlags :
7016+ if keyFlagsCmd , ok := cmd .(interface { Val () []KeyFlags }); ok {
7017+ return keyFlagsCmd .Val ()
7018+ }
7019+ case CmdTypeClusterLinks :
7020+ if clusterLinksCmd , ok := cmd .(interface { Val () []ClusterLink }); ok {
7021+ return clusterLinksCmd .Val ()
7022+ }
7023+ case CmdTypeClusterShards :
7024+ if clusterShardsCmd , ok := cmd .(interface { Val () []ClusterShard }); ok {
7025+ return clusterShardsCmd .Val ()
7026+ }
7027+ case CmdTypeRankWithScore :
7028+ if rankWithScoreCmd , ok := cmd .(interface { Val () RankScore }); ok {
7029+ return rankWithScoreCmd .Val ()
7030+ }
7031+ case CmdTypeClientInfo :
7032+ if clientInfoCmd , ok := cmd .(interface { Val () * ClientInfo }); ok {
7033+ return clientInfoCmd .Val ()
7034+ }
7035+ case CmdTypeACLLog :
7036+ if aclLogCmd , ok := cmd .(interface { Val () []* ACLLogEntry }); ok {
7037+ return aclLogCmd .Val ()
7038+ }
7039+ case CmdTypeInfo :
7040+ if infoCmd , ok := cmd .(interface { Val () string }); ok {
7041+ return infoCmd .Val ()
7042+ }
7043+ case CmdTypeMonitor :
7044+ if monitorCmd , ok := cmd .(interface { Val () string }); ok {
7045+ return monitorCmd .Val ()
7046+ }
7047+ case CmdTypeJSON :
7048+ if jsonCmd , ok := cmd .(interface { Val () string }); ok {
7049+ return jsonCmd .Val ()
7050+ }
7051+ case CmdTypeJSONSlice :
7052+ if jsonSliceCmd , ok := cmd .(interface { Val () []interface {} }); ok {
7053+ return jsonSliceCmd .Val ()
7054+ }
7055+ case CmdTypeIntPointerSlice :
7056+ if intPointerSliceCmd , ok := cmd .(interface { Val () []* int64 }); ok {
7057+ return intPointerSliceCmd .Val ()
7058+ }
7059+ case CmdTypeScanDump :
7060+ if scanDumpCmd , ok := cmd .(interface { Val () ScanDump }); ok {
7061+ return scanDumpCmd .Val ()
7062+ }
7063+ case CmdTypeBFInfo :
7064+ if bfInfoCmd , ok := cmd .(interface { Val () BFInfo }); ok {
7065+ return bfInfoCmd .Val ()
7066+ }
7067+ case CmdTypeCFInfo :
7068+ if cfInfoCmd , ok := cmd .(interface { Val () CFInfo }); ok {
7069+ return cfInfoCmd .Val ()
7070+ }
7071+ case CmdTypeCMSInfo :
7072+ if cmsInfoCmd , ok := cmd .(interface { Val () CMSInfo }); ok {
7073+ return cmsInfoCmd .Val ()
7074+ }
7075+ case CmdTypeTopKInfo :
7076+ if topKInfoCmd , ok := cmd .(interface { Val () TopKInfo }); ok {
7077+ return topKInfoCmd .Val ()
7078+ }
7079+ case CmdTypeTDigestInfo :
7080+ if tDigestInfoCmd , ok := cmd .(interface { Val () TDigestInfo }); ok {
7081+ return tDigestInfoCmd .Val ()
7082+ }
7083+ case CmdTypeFTSearch :
7084+ if ftSearchCmd , ok := cmd .(interface { Val () FTSearchResult }); ok {
7085+ return ftSearchCmd .Val ()
7086+ }
7087+ case CmdTypeFTInfo :
7088+ if ftInfoCmd , ok := cmd .(interface { Val () FTInfoResult }); ok {
7089+ return ftInfoCmd .Val ()
7090+ }
7091+ case CmdTypeFTSpellCheck :
7092+ if ftSpellCheckCmd , ok := cmd .(interface { Val () []SpellCheckResult }); ok {
7093+ return ftSpellCheckCmd .Val ()
7094+ }
7095+ case CmdTypeFTSynDump :
7096+ if ftSynDumpCmd , ok := cmd .(interface { Val () []FTSynDumpResult }); ok {
7097+ return ftSynDumpCmd .Val ()
7098+ }
7099+ case CmdTypeAggregate :
7100+ if aggregateCmd , ok := cmd .(interface { Val () * FTAggregateResult }); ok {
7101+ return aggregateCmd .Val ()
7102+ }
7103+ case CmdTypeTSTimestampValue :
7104+ if tsTimestampValueCmd , ok := cmd .(interface { Val () TSTimestampValue }); ok {
7105+ return tsTimestampValueCmd .Val ()
7106+ }
7107+ case CmdTypeTSTimestampValueSlice :
7108+ if tsTimestampValueSliceCmd , ok := cmd .(interface { Val () []TSTimestampValue }); ok {
7109+ return tsTimestampValueSliceCmd .Val ()
7110+ }
68847111 case CmdTypeStringSlice :
68857112 if stringSliceCmd , ok := cmd .(interface { Val () []string }); ok {
68867113 return stringSliceCmd .Val ()
@@ -6897,6 +7124,14 @@ func ExtractCommandValue(cmd interface{}) interface{} {
68977124 if floatSliceCmd , ok := cmd .(interface { Val () []float64 }); ok {
68987125 return floatSliceCmd .Val ()
68997126 }
7127+ case CmdTypeSlice :
7128+ if sliceCmd , ok := cmd .(interface { Val () []interface {} }); ok {
7129+ return sliceCmd .Val ()
7130+ }
7131+ case CmdTypeKeyValueSlice :
7132+ if keyValueSliceCmd , ok := cmd .(interface { Val () []KeyValue }); ok {
7133+ return keyValueSliceCmd .Val ()
7134+ }
69007135 case CmdTypeMapStringString :
69017136 if mapCmd , ok := cmd .(interface { Val () map [string ]string }); ok {
69027137 return mapCmd .Val ()
@@ -6907,7 +7142,7 @@ func ExtractCommandValue(cmd interface{}) interface{} {
69077142 }
69087143 case CmdTypeMapStringInterfaceSlice :
69097144 if mapCmd , ok := cmd .(interface {
6910- Val () map [ string ][ ]interface {}
7145+ Val () [] map [ string ]interface {}
69117146 }); ok {
69127147 return mapCmd .Val ()
69137148 }
@@ -6916,12 +7151,12 @@ func ExtractCommandValue(cmd interface{}) interface{} {
69167151 return mapCmd .Val ()
69177152 }
69187153 case CmdTypeMapStringStringSlice :
6919- if mapCmd , ok := cmd .(interface { Val () map [ string ][ ]string }); ok {
7154+ if mapCmd , ok := cmd .(interface { Val () [] map [ string ]string }); ok {
69207155 return mapCmd .Val ()
69217156 }
69227157 case CmdTypeMapMapStringInterface :
69237158 if mapCmd , ok := cmd .(interface {
6924- Val () map [string ][] interface {}
7159+ Val () map [string ]interface {}
69257160 }); ok {
69267161 return mapCmd .Val ()
69277162 }
0 commit comments