(ctx *Context, txn *db.Transaction, positiveOrder bool)
| 112 | } |
| 113 | |
| 114 | func 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 | |
| 168 | func ZRem(ctx *Context, txn *db.Transaction) (OnCommit, error) { |
| 169 | key := []byte(ctx.Args[0]) |
no test coverage detected