Skip to content

Commit 17201a1

Browse files
addresed first batch of comments
1 parent 2a06726 commit 17201a1

File tree

5 files changed

+89
-278
lines changed

5 files changed

+89
-278
lines changed

command.go

Lines changed: 29 additions & 220 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2722
type CmdTypeGetter interface {
2823
GetCmdType() CmdType
@@ -4127,15 +4122,15 @@ func (cmd *GeoPosCmd) Clone() Cmder {
41274122
//------------------------------------------------------------------------------
41284123

41294124
type 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

41414136
type 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

commands_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -665,13 +665,13 @@ var _ = Describe("Commands", func() {
665665

666666
cmd := cmds["touch"]
667667
Expect(cmd.Name).To(Equal("touch"))
668-
Expect(cmd.Tips.Request).To(Equal(routing.ReqMultiShard))
669-
Expect(cmd.Tips.Response).To(Equal(routing.RespAggSum))
668+
Expect(cmd.CommandPolicy.Request).To(Equal(routing.ReqMultiShard))
669+
Expect(cmd.CommandPolicy.Response).To(Equal(routing.RespAggSum))
670670

671671
cmd = cmds["flushall"]
672672
Expect(cmd.Name).To(Equal("flushall"))
673-
Expect(cmd.Tips.Request).To(Equal(routing.ReqAllShards))
674-
Expect(cmd.Tips.Response).To(Equal(routing.RespAllSucceeded))
673+
Expect(cmd.CommandPolicy.Request).To(Equal(routing.ReqAllShards))
674+
Expect(cmd.CommandPolicy.Response).To(Equal(routing.RespAllSucceeded))
675675
})
676676

677677
It("should return all command names", func() {

0 commit comments

Comments
 (0)