MCPcopy Create free account
hub / github.com/distributedio/titan / zAnyOrderRangeByScore

Function zAnyOrderRangeByScore

command/zsets.go:114–166  ·  view source on GitHub ↗
(ctx *Context, txn *db.Transaction, positiveOrder bool)

Source from the content-addressed store, hash-verified

112}
113
114func zAnyOrderRangeByScore(ctx *Context, txn *db.Transaction, positiveOrder bool) (OnCommit, error) {
115 key := []byte(ctx.Args[0])
116
117 startScore, startInclude, err := getFloatAndInclude(ctx.Args[1])
118 if err != nil {
119 return nil, ErrMinOrMaxNotFloat
120 }
121 endScore, endInclude, err := getFloatAndInclude(ctx.Args[2])
122 if err != nil {
123 return nil, ErrMinOrMaxNotFloat
124 }
125
126 withScore := bool(false)
127 offset := int64(0)
128 count := int64(math.MaxInt64)
129 for i := 3; i < len(ctx.Args); i++ {
130 switch strings.ToUpper(ctx.Args[i]) {
131 case "WITHSCORES":
132 withScore = true
133 case "LIMIT":
134 if offset, count, err = getLimitParameters(ctx.Args[i+1:]); err != nil {
135 return nil, err
136 }
137 i += 2
138 default:
139 return nil, ErrSyntax
140 }
141 }
142
143 zset, err := txn.ZSet(key)
144 if err != nil {
145 if err == db.ErrTypeMismatch {
146 return nil, ErrTypeMismatch
147 }
148 return nil, errors.New("ERR " + err.Error())
149 }
150 if !zset.Exist() {
151 return BytesArray(ctx.Out, nil), nil
152 }
153
154 items, err := zset.ZAnyOrderRangeByScore(startScore, startInclude,
155 endScore, endInclude,
156 withScore,
157 offset, count,
158 positiveOrder)
159 if err != nil {
160 return nil, errors.New("ERR " + err.Error())
161 }
162 if len(items) == 0 {
163 return BytesArray(ctx.Out, nil), nil
164 }
165 return BytesArray(ctx.Out, items), nil
166}
167
168func ZRem(ctx *Context, txn *db.Transaction) (OnCommit, error) {
169 key := []byte(ctx.Args[0])

Callers 2

ZRangeByScoreFunction · 0.85
ZRevRangeByScoreFunction · 0.85

Calls 7

getFloatAndIncludeFunction · 0.85
getLimitParametersFunction · 0.85
BytesArrayFunction · 0.85
ZSetMethod · 0.80
ZAnyOrderRangeByScoreMethod · 0.80
ErrorMethod · 0.65
ExistMethod · 0.65

Tested by

no test coverage detected