From 2490746964bb71bc15e2965c0b97a730eba7ce69 Mon Sep 17 00:00:00 2001 From: Rueian Date: Sat, 31 Jan 2026 21:40:54 -0800 Subject: [PATCH] fix: correct the position of KEEPREF, DELREF, and ACKED for XADD Signed-off-by: Rueian --- hack/cmds/commands.json | 32 ++++-- internal/cmds/gen_stream.go | 162 +++++++++++++++++++++---------- internal/cmds/gen_stream_test.go | 62 +++++++----- 3 files changed, 170 insertions(+), 86 deletions(-) diff --git a/hack/cmds/commands.json b/hack/cmds/commands.json index f7916bc6..1c9eeac2 100644 --- a/hack/cmds/commands.json +++ b/hack/cmds/commands.json @@ -6706,6 +6706,28 @@ "type": "command", "optional": true }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "keepref", + "type": "pure-token", + "token": "KEEPREF" + }, + { + "name": "delref", + "type": "pure-token", + "token": "DELREF" + }, + { + "name": "acked", + "type": "pure-token", + "token": "ACKED" + } + ] + }, { "name": "idmp", "type": "oneof", @@ -6778,16 +6800,6 @@ "name": "count", "type": "integer", "optional": true - }, - { - "name": "reference", - "type": "enum", - "enum": [ - "KEEPREF", - "DELREF", - "ACKED" - ], - "optional": true } ] }, diff --git a/internal/cmds/gen_stream.go b/internal/cmds/gen_stream.go index 3cd3e460..408895ff 100644 --- a/internal/cmds/gen_stream.go +++ b/internal/cmds/gen_stream.go @@ -160,6 +160,87 @@ func (c Xadd) Key(key string) XaddKey { return (XaddKey)(c) } +type XaddConditionAcked Incomplete + +func (c XaddConditionAcked) Idmpauto() XaddIdmpIdmpautoIdmpauto { + c.cs.s = append(c.cs.s, "IDMPAUTO") + return (XaddIdmpIdmpautoIdmpauto)(c) +} + +func (c XaddConditionAcked) Idmp() XaddIdmpIdmpIdmp { + c.cs.s = append(c.cs.s, "IDMP") + return (XaddIdmpIdmpIdmp)(c) +} + +func (c XaddConditionAcked) Maxlen() XaddTrimStrategyMaxlen { + c.cs.s = append(c.cs.s, "MAXLEN") + return (XaddTrimStrategyMaxlen)(c) +} + +func (c XaddConditionAcked) Minid() XaddTrimStrategyMinid { + c.cs.s = append(c.cs.s, "MINID") + return (XaddTrimStrategyMinid)(c) +} + +func (c XaddConditionAcked) Id(id string) XaddId { + c.cs.s = append(c.cs.s, id) + return (XaddId)(c) +} + +type XaddConditionDelref Incomplete + +func (c XaddConditionDelref) Idmpauto() XaddIdmpIdmpautoIdmpauto { + c.cs.s = append(c.cs.s, "IDMPAUTO") + return (XaddIdmpIdmpautoIdmpauto)(c) +} + +func (c XaddConditionDelref) Idmp() XaddIdmpIdmpIdmp { + c.cs.s = append(c.cs.s, "IDMP") + return (XaddIdmpIdmpIdmp)(c) +} + +func (c XaddConditionDelref) Maxlen() XaddTrimStrategyMaxlen { + c.cs.s = append(c.cs.s, "MAXLEN") + return (XaddTrimStrategyMaxlen)(c) +} + +func (c XaddConditionDelref) Minid() XaddTrimStrategyMinid { + c.cs.s = append(c.cs.s, "MINID") + return (XaddTrimStrategyMinid)(c) +} + +func (c XaddConditionDelref) Id(id string) XaddId { + c.cs.s = append(c.cs.s, id) + return (XaddId)(c) +} + +type XaddConditionKeepref Incomplete + +func (c XaddConditionKeepref) Idmpauto() XaddIdmpIdmpautoIdmpauto { + c.cs.s = append(c.cs.s, "IDMPAUTO") + return (XaddIdmpIdmpautoIdmpauto)(c) +} + +func (c XaddConditionKeepref) Idmp() XaddIdmpIdmpIdmp { + c.cs.s = append(c.cs.s, "IDMP") + return (XaddIdmpIdmpIdmp)(c) +} + +func (c XaddConditionKeepref) Maxlen() XaddTrimStrategyMaxlen { + c.cs.s = append(c.cs.s, "MAXLEN") + return (XaddTrimStrategyMaxlen)(c) +} + +func (c XaddConditionKeepref) Minid() XaddTrimStrategyMinid { + c.cs.s = append(c.cs.s, "MINID") + return (XaddTrimStrategyMinid)(c) +} + +func (c XaddConditionKeepref) Id(id string) XaddId { + c.cs.s = append(c.cs.s, id) + return (XaddId)(c) +} + type XaddFieldValue Incomplete func (c XaddFieldValue) FieldValue(field string, value string) XaddFieldValue { @@ -240,6 +321,21 @@ func (c XaddKey) Nomkstream() XaddNomkstream { return (XaddNomkstream)(c) } +func (c XaddKey) Keepref() XaddConditionKeepref { + c.cs.s = append(c.cs.s, "KEEPREF") + return (XaddConditionKeepref)(c) +} + +func (c XaddKey) Delref() XaddConditionDelref { + c.cs.s = append(c.cs.s, "DELREF") + return (XaddConditionDelref)(c) +} + +func (c XaddKey) Acked() XaddConditionAcked { + c.cs.s = append(c.cs.s, "ACKED") + return (XaddConditionAcked)(c) +} + func (c XaddKey) Idmpauto() XaddIdmpIdmpautoIdmpauto { c.cs.s = append(c.cs.s, "IDMPAUTO") return (XaddIdmpIdmpautoIdmpauto)(c) @@ -267,6 +363,21 @@ func (c XaddKey) Id(id string) XaddId { type XaddNomkstream Incomplete +func (c XaddNomkstream) Keepref() XaddConditionKeepref { + c.cs.s = append(c.cs.s, "KEEPREF") + return (XaddConditionKeepref)(c) +} + +func (c XaddNomkstream) Delref() XaddConditionDelref { + c.cs.s = append(c.cs.s, "DELREF") + return (XaddConditionDelref)(c) +} + +func (c XaddNomkstream) Acked() XaddConditionAcked { + c.cs.s = append(c.cs.s, "ACKED") + return (XaddConditionAcked)(c) +} + func (c XaddNomkstream) Idmpauto() XaddIdmpIdmpautoIdmpauto { c.cs.s = append(c.cs.s, "IDMPAUTO") return (XaddIdmpIdmpautoIdmpauto)(c) @@ -294,21 +405,6 @@ func (c XaddNomkstream) Id(id string) XaddId { type XaddTrimLimit Incomplete -func (c XaddTrimLimit) Keepref() XaddTrimReferenceKeepref { - c.cs.s = append(c.cs.s, "KEEPREF") - return (XaddTrimReferenceKeepref)(c) -} - -func (c XaddTrimLimit) Delref() XaddTrimReferenceDelref { - c.cs.s = append(c.cs.s, "DELREF") - return (XaddTrimReferenceDelref)(c) -} - -func (c XaddTrimLimit) Acked() XaddTrimReferenceAcked { - c.cs.s = append(c.cs.s, "ACKED") - return (XaddTrimReferenceAcked)(c) -} - func (c XaddTrimLimit) Id(id string) XaddId { c.cs.s = append(c.cs.s, id) return (XaddId)(c) @@ -328,27 +424,6 @@ func (c XaddTrimOperatorExact) Threshold(threshold string) XaddTrimThreshold { return (XaddTrimThreshold)(c) } -type XaddTrimReferenceAcked Incomplete - -func (c XaddTrimReferenceAcked) Id(id string) XaddId { - c.cs.s = append(c.cs.s, id) - return (XaddId)(c) -} - -type XaddTrimReferenceDelref Incomplete - -func (c XaddTrimReferenceDelref) Id(id string) XaddId { - c.cs.s = append(c.cs.s, id) - return (XaddId)(c) -} - -type XaddTrimReferenceKeepref Incomplete - -func (c XaddTrimReferenceKeepref) Id(id string) XaddId { - c.cs.s = append(c.cs.s, id) - return (XaddId)(c) -} - type XaddTrimStrategyMaxlen Incomplete func (c XaddTrimStrategyMaxlen) Exact() XaddTrimOperatorExact { @@ -390,21 +465,6 @@ func (c XaddTrimThreshold) Limit(count int64) XaddTrimLimit { return (XaddTrimLimit)(c) } -func (c XaddTrimThreshold) Keepref() XaddTrimReferenceKeepref { - c.cs.s = append(c.cs.s, "KEEPREF") - return (XaddTrimReferenceKeepref)(c) -} - -func (c XaddTrimThreshold) Delref() XaddTrimReferenceDelref { - c.cs.s = append(c.cs.s, "DELREF") - return (XaddTrimReferenceDelref)(c) -} - -func (c XaddTrimThreshold) Acked() XaddTrimReferenceAcked { - c.cs.s = append(c.cs.s, "ACKED") - return (XaddTrimReferenceAcked)(c) -} - func (c XaddTrimThreshold) Id(id string) XaddId { c.cs.s = append(c.cs.s, id) return (XaddId)(c) diff --git a/internal/cmds/gen_stream_test.go b/internal/cmds/gen_stream_test.go index d94b034e..c6f00fc1 100644 --- a/internal/cmds/gen_stream_test.go +++ b/internal/cmds/gen_stream_test.go @@ -10,30 +10,42 @@ func stream0(s Builder) { s.Xackdel().Key("1").Group("1").Delref().Ids().Numids(1).Id("1").Id("1").Build() s.Xackdel().Key("1").Group("1").Acked().Ids().Numids(1).Id("1").Id("1").Build() s.Xackdel().Key("1").Group("1").Ids().Numids(1).Id("1").Id("1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Delref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Acked().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Maxlen().Almost().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Maxlen().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Minid().Almost().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Minid().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmpauto().Pid("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmp().Pid("1").Iid("1").Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Idmp().Pid("1").Iid("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Delref().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Delref().Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Delref().Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Delref().Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Delref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Acked().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Acked().Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Acked().Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Acked().Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Acked().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Delref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Acked().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Almost().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Maxlen().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Minid().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Minid().Almost().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Minid().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmpauto().Pid("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmp().Pid("1").Iid("1").Minid().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Idmp().Pid("1").Iid("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Maxlen().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Nomkstream().Minid().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Nomkstream().Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() s.Xadd().Key("1").Nomkstream().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Maxlen().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Xadd().Key("1").Minid().Exact().Threshold("1").Limit(1).Keepref().Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Keepref().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Delref().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Acked().Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Idmpauto().Pid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Idmp().Pid("1").Iid("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Maxlen().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Xadd().Key("1").Minid().Exact().Threshold("1").Limit(1).Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() s.Xadd().Key("1").Id("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() s.Xautoclaim().Key("1").Group("1").Consumer("1").MinIdleTime("1").Start("1").Count(1).Justid().Build() s.Xautoclaim().Key("1").Group("1").Consumer("1").MinIdleTime("1").Start("1").Count(1).Build() @@ -93,6 +105,9 @@ func stream0(s Builder) { s.Xread().Count(1).Streams().Key("1").Key("1").Id("1").Id("1").Build() s.Xread().Block(1).Streams().Key("1").Key("1").Id("1").Id("1").Build() s.Xread().Streams().Key("1").Key("1").Id("1").Id("1").Build() +} + +func stream1(s Builder) { s.Xreadgroup().Group("1", "1").Count(1).Block(1).Noack().Claim("1").Streams().Key("1").Key("1").Id("1").Id("1").Build() s.Xreadgroup().Group("1", "1").Count(1).Block(1).Noack().Streams().Key("1").Key("1").Id("1").Id("1").Build() s.Xreadgroup().Group("1", "1").Count(1).Block(1).Claim("1").Streams().Key("1").Key("1").Id("1").Id("1").Build() @@ -105,9 +120,6 @@ func stream0(s Builder) { s.Xreadgroup().Group("1", "1").Claim("1").Streams().Key("1").Key("1").Id("1").Id("1").Build() s.Xreadgroup().Group("1", "1").Streams().Key("1").Key("1").Id("1").Id("1").Build() s.Xrevrange().Key("1").End("1").Start("1").Count(1).Build() -} - -func stream1(s Builder) { s.Xrevrange().Key("1").End("1").Start("1").Build() s.Xsetid().Key("1").LastId("1").Entriesadded(1).Maxdeletedid("1").Build() s.Xsetid().Key("1").LastId("1").Entriesadded(1).Build()