@@ -18,11 +18,6 @@ import (
1818 "github.com/redis/go-redis/v9/internal/util"
1919)
2020
21- // CmdTyper interface for getting command type
22- type CmdTyper interface {
23- GetCmdType () CmdType
24- }
25-
2621// CmdTypeGetter interface for getting command type without circular imports
2722type CmdTypeGetter interface {
2823 GetCmdType () CmdType
@@ -4127,15 +4122,15 @@ func (cmd *GeoPosCmd) Clone() Cmder {
41274122//------------------------------------------------------------------------------
41284123
41294124type CommandInfo struct {
4130- Name string
4131- Arity int8
4132- Flags []string
4133- ACLFlags []string
4134- FirstKeyPos int8
4135- LastKeyPos int8
4136- StepCount int8
4137- ReadOnly bool
4138- Tips * routing.CommandPolicy
4125+ Name string
4126+ Arity int8
4127+ Flags []string
4128+ ACLFlags []string
4129+ FirstKeyPos int8
4130+ LastKeyPos int8
4131+ StepCount int8
4132+ ReadOnly bool
4133+ CommandPolicy * routing.CommandPolicy
41394134}
41404135
41414136type CommandsInfoCmd struct {
@@ -4289,7 +4284,7 @@ func (cmd *CommandsInfoCmd) readReply(rd *proto.Reader) error {
42894284 }
42904285 rawTips [k ] = v
42914286 }
4292- cmdInfo .Tips = parseCommandPolicies (rawTips )
4287+ cmdInfo .CommandPolicy = parseCommandPolicies (rawTips )
42934288
42944289 if err := rd .DiscardNext (); err != nil {
42954290 return err
@@ -4312,13 +4307,13 @@ func (cmd *CommandsInfoCmd) Clone() Cmder {
43124307 for k , v := range cmd .val {
43134308 if v != nil {
43144309 newInfo := & CommandInfo {
4315- Name : v .Name ,
4316- Arity : v .Arity ,
4317- FirstKeyPos : v .FirstKeyPos ,
4318- LastKeyPos : v .LastKeyPos ,
4319- StepCount : v .StepCount ,
4320- ReadOnly : v .ReadOnly ,
4321- Tips : v . Tips , // CommandPolicy can be shared as it's immutable
4310+ Name : v .Name ,
4311+ Arity : v .Arity ,
4312+ FirstKeyPos : v .FirstKeyPos ,
4313+ LastKeyPos : v .LastKeyPos ,
4314+ StepCount : v .StepCount ,
4315+ ReadOnly : v .ReadOnly ,
4316+ CommandPolicy : v . CommandPolicy , // CommandPolicy can be shared as it's immutable
43224317 }
43234318 if v .Flags != nil {
43244319 newInfo .Flags = make ([]string , len (v .Flags ))
@@ -6865,14 +6860,21 @@ func ExtractCommandValue(cmd interface{}) interface{} {
68656860 if statusCmd , ok := cmd .(interface { Val () string }); ok {
68666861 return statusCmd .Val ()
68676862 }
6868- case CmdTypeDuration :
6863+ case CmdTypeDuration , CmdTypeTime , CmdTypeStringStructMap , CmdTypeXMessageSlice ,
6864+ CmdTypeXStreamSlice , CmdTypeXPending , CmdTypeXPendingExt , CmdTypeXAutoClaim ,
6865+ CmdTypeXAutoClaimJustID , CmdTypeXInfoConsumers , CmdTypeXInfoGroups , CmdTypeXInfoStream ,
6866+ CmdTypeXInfoStreamFull , CmdTypeZSlice , CmdTypeZWithKey , CmdTypeScan , CmdTypeClusterSlots ,
6867+ CmdTypeGeoSearchLocation , CmdTypeGeoPos , CmdTypeCommandsInfo , CmdTypeSlowLog ,
6868+ CmdTypeKeyValues , CmdTypeZSliceWithKey , CmdTypeFunctionList , CmdTypeFunctionStats ,
6869+ CmdTypeLCS , CmdTypeKeyFlags , CmdTypeClusterLinks , CmdTypeClusterShards ,
6870+ CmdTypeRankWithScore , CmdTypeClientInfo , CmdTypeACLLog , CmdTypeInfo , CmdTypeMonitor ,
6871+ CmdTypeJSON , CmdTypeJSONSlice , CmdTypeIntPointerSlice , CmdTypeScanDump , CmdTypeBFInfo ,
6872+ CmdTypeCFInfo , CmdTypeCMSInfo , CmdTypeTopKInfo , CmdTypeTDigestInfo , CmdTypeFTSearch ,
6873+ CmdTypeFTInfo , CmdTypeFTSpellCheck , CmdTypeFTSynDump , CmdTypeAggregate ,
6874+ CmdTypeTSTimestampValue , CmdTypeTSTimestampValueSlice :
68696875 if durationCmd , ok := cmd .(interface { Val () interface {} }); ok {
68706876 return durationCmd .Val ()
68716877 }
6872- case CmdTypeTime :
6873- if timeCmd , ok := cmd .(interface { Val () interface {} }); ok {
6874- return timeCmd .Val ()
6875- }
68766878 case CmdTypeStringSlice :
68776879 if stringSliceCmd , ok := cmd .(interface { Val () []string }); ok {
68786880 return stringSliceCmd .Val ()
@@ -6917,199 +6919,6 @@ func ExtractCommandValue(cmd interface{}) interface{} {
69176919 }); ok {
69186920 return mapCmd .Val ()
69196921 }
6920- case CmdTypeStringStructMap :
6921- if mapCmd , ok := cmd .(interface { Val () interface {} }); ok {
6922- return mapCmd .Val ()
6923- }
6924- case CmdTypeXMessageSlice :
6925- if xMsgCmd , ok := cmd .(interface { Val () interface {} }); ok {
6926- return xMsgCmd .Val ()
6927- }
6928- case CmdTypeXStreamSlice :
6929- if xStreamCmd , ok := cmd .(interface { Val () interface {} }); ok {
6930- return xStreamCmd .Val ()
6931- }
6932- case CmdTypeXPending :
6933- if xPendingCmd , ok := cmd .(interface { Val () interface {} }); ok {
6934- return xPendingCmd .Val ()
6935- }
6936- case CmdTypeXPendingExt :
6937- if xPendingExtCmd , ok := cmd .(interface { Val () interface {} }); ok {
6938- return xPendingExtCmd .Val ()
6939- }
6940- case CmdTypeXAutoClaim :
6941- if xAutoClaimCmd , ok := cmd .(interface { Val () interface {} }); ok {
6942- return xAutoClaimCmd .Val ()
6943- }
6944- case CmdTypeXAutoClaimJustID :
6945- if xAutoClaimJustIDCmd , ok := cmd .(interface { Val () interface {} }); ok {
6946- return xAutoClaimJustIDCmd .Val ()
6947- }
6948- case CmdTypeXInfoConsumers :
6949- if xInfoConsumersCmd , ok := cmd .(interface { Val () interface {} }); ok {
6950- return xInfoConsumersCmd .Val ()
6951- }
6952- case CmdTypeXInfoGroups :
6953- if xInfoGroupsCmd , ok := cmd .(interface { Val () interface {} }); ok {
6954- return xInfoGroupsCmd .Val ()
6955- }
6956- case CmdTypeXInfoStream :
6957- if xInfoStreamCmd , ok := cmd .(interface { Val () interface {} }); ok {
6958- return xInfoStreamCmd .Val ()
6959- }
6960- case CmdTypeXInfoStreamFull :
6961- if xInfoStreamFullCmd , ok := cmd .(interface { Val () interface {} }); ok {
6962- return xInfoStreamFullCmd .Val ()
6963- }
6964- case CmdTypeZSlice :
6965- if zSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
6966- return zSliceCmd .Val ()
6967- }
6968- case CmdTypeZWithKey :
6969- if zWithKeyCmd , ok := cmd .(interface { Val () interface {} }); ok {
6970- return zWithKeyCmd .Val ()
6971- }
6972- case CmdTypeScan :
6973- if scanCmd , ok := cmd .(interface { Val () interface {} }); ok {
6974- return scanCmd .Val ()
6975- }
6976- case CmdTypeClusterSlots :
6977- if clusterSlotsCmd , ok := cmd .(interface { Val () interface {} }); ok {
6978- return clusterSlotsCmd .Val ()
6979- }
6980- case CmdTypeGeoSearchLocation :
6981- if geoSearchLocationCmd , ok := cmd .(interface { Val () interface {} }); ok {
6982- return geoSearchLocationCmd .Val ()
6983- }
6984- case CmdTypeGeoPos :
6985- if geoPosCmd , ok := cmd .(interface { Val () interface {} }); ok {
6986- return geoPosCmd .Val ()
6987- }
6988- case CmdTypeCommandsInfo :
6989- if commandsInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
6990- return commandsInfoCmd .Val ()
6991- }
6992- case CmdTypeSlowLog :
6993- if slowLogCmd , ok := cmd .(interface { Val () interface {} }); ok {
6994- return slowLogCmd .Val ()
6995- }
6996-
6997- case CmdTypeKeyValues :
6998- if keyValuesCmd , ok := cmd .(interface { Val () interface {} }); ok {
6999- return keyValuesCmd .Val ()
7000- }
7001- case CmdTypeZSliceWithKey :
7002- if zSliceWithKeyCmd , ok := cmd .(interface { Val () interface {} }); ok {
7003- return zSliceWithKeyCmd .Val ()
7004- }
7005- case CmdTypeFunctionList :
7006- if functionListCmd , ok := cmd .(interface { Val () interface {} }); ok {
7007- return functionListCmd .Val ()
7008- }
7009- case CmdTypeFunctionStats :
7010- if functionStatsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7011- return functionStatsCmd .Val ()
7012- }
7013- case CmdTypeLCS :
7014- if lcsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7015- return lcsCmd .Val ()
7016- }
7017- case CmdTypeKeyFlags :
7018- if keyFlagsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7019- return keyFlagsCmd .Val ()
7020- }
7021- case CmdTypeClusterLinks :
7022- if clusterLinksCmd , ok := cmd .(interface { Val () interface {} }); ok {
7023- return clusterLinksCmd .Val ()
7024- }
7025- case CmdTypeClusterShards :
7026- if clusterShardsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7027- return clusterShardsCmd .Val ()
7028- }
7029- case CmdTypeRankWithScore :
7030- if rankWithScoreCmd , ok := cmd .(interface { Val () interface {} }); ok {
7031- return rankWithScoreCmd .Val ()
7032- }
7033- case CmdTypeClientInfo :
7034- if clientInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7035- return clientInfoCmd .Val ()
7036- }
7037- case CmdTypeACLLog :
7038- if aclLogCmd , ok := cmd .(interface { Val () interface {} }); ok {
7039- return aclLogCmd .Val ()
7040- }
7041- case CmdTypeInfo :
7042- if infoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7043- return infoCmd .Val ()
7044- }
7045- case CmdTypeMonitor :
7046- if monitorCmd , ok := cmd .(interface { Val () interface {} }); ok {
7047- return monitorCmd .Val ()
7048- }
7049- case CmdTypeJSON :
7050- if jsonCmd , ok := cmd .(interface { Val () interface {} }); ok {
7051- return jsonCmd .Val ()
7052- }
7053- case CmdTypeJSONSlice :
7054- if jsonSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7055- return jsonSliceCmd .Val ()
7056- }
7057- case CmdTypeIntPointerSlice :
7058- if intPointerSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7059- return intPointerSliceCmd .Val ()
7060- }
7061- case CmdTypeScanDump :
7062- if scanDumpCmd , ok := cmd .(interface { Val () interface {} }); ok {
7063- return scanDumpCmd .Val ()
7064- }
7065- case CmdTypeBFInfo :
7066- if bfInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7067- return bfInfoCmd .Val ()
7068- }
7069- case CmdTypeCFInfo :
7070- if cfInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7071- return cfInfoCmd .Val ()
7072- }
7073- case CmdTypeCMSInfo :
7074- if cmsInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7075- return cmsInfoCmd .Val ()
7076- }
7077- case CmdTypeTopKInfo :
7078- if topKInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7079- return topKInfoCmd .Val ()
7080- }
7081- case CmdTypeTDigestInfo :
7082- if tDigestInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7083- return tDigestInfoCmd .Val ()
7084- }
7085- case CmdTypeFTSearch :
7086- if ftSearchCmd , ok := cmd .(interface { Val () interface {} }); ok {
7087- return ftSearchCmd .Val ()
7088- }
7089- case CmdTypeFTInfo :
7090- if ftInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7091- return ftInfoCmd .Val ()
7092- }
7093- case CmdTypeFTSpellCheck :
7094- if ftSpellCheckCmd , ok := cmd .(interface { Val () interface {} }); ok {
7095- return ftSpellCheckCmd .Val ()
7096- }
7097- case CmdTypeFTSynDump :
7098- if ftSynDumpCmd , ok := cmd .(interface { Val () interface {} }); ok {
7099- return ftSynDumpCmd .Val ()
7100- }
7101- case CmdTypeAggregate :
7102- if aggregateCmd , ok := cmd .(interface { Val () interface {} }); ok {
7103- return aggregateCmd .Val ()
7104- }
7105- case CmdTypeTSTimestampValue :
7106- if tsTimestampValueCmd , ok := cmd .(interface { Val () interface {} }); ok {
7107- return tsTimestampValueCmd .Val ()
7108- }
7109- case CmdTypeTSTimestampValueSlice :
7110- if tsTimestampValueSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7111- return tsTimestampValueSliceCmd .Val ()
7112- }
71136922 default :
71146923 // For unknown command types, return nil
71156924 return nil
0 commit comments