diff --git a/cmd_geo.go b/cmd_geo.go index 6702e96..97f74c3 100644 --- a/cmd_geo.go +++ b/cmd_geo.go @@ -40,7 +40,7 @@ func (m *Miniredis) cmdGeoadd(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(key) && db.t(key) != "zset" { + if db.exists(key) && db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -103,7 +103,7 @@ func (m *Miniredis) cmdGeodist(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -157,7 +157,7 @@ func (m *Miniredis) cmdGeopos(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(key) && db.t(key) != "zset" { + if db.exists(key) && db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -495,7 +495,7 @@ func (m *Miniredis) cmdGeoradiusbymember(c *server.Peer, cmd string, args []stri return } - if db.t(opts.key) != "zset" { + if db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } diff --git a/cmd_hash.go b/cmd_hash.go index 2c45630..5533295 100644 --- a/cmd_hash.go +++ b/cmd_hash.go @@ -54,7 +54,7 @@ func (m *Miniredis) cmdHset(c *server.Peer, cmd string, args []string) { return } - if t, ok := db.keys[key]; ok && t != "hash" { + if t, ok := db.keys[key]; ok && t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -91,14 +91,14 @@ func (m *Miniredis) cmdHsetnx(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "hash" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeHash { c.WriteError(msgWrongType) return } if _, ok := db.hashKeys[opts.key]; !ok { db.hashKeys[opts.key] = map[string]string{} - db.keys[opts.key] = "hash" + db.keys[opts.key] = keyTypeHash } _, ok := db.hashKeys[opts.key][opts.field] if ok { @@ -135,7 +135,7 @@ func (m *Miniredis) cmdHmset(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[key]; ok && t != "hash" { + if t, ok := db.keys[key]; ok && t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -173,7 +173,7 @@ func (m *Miniredis) cmdHget(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -217,7 +217,7 @@ func (m *Miniredis) cmdHdel(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -270,7 +270,7 @@ func (m *Miniredis) cmdHexists(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -307,7 +307,7 @@ func (m *Miniredis) cmdHgetall(c *server.Peer, cmd string, args []string) { c.WriteMapLen(0) return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -343,7 +343,7 @@ func (m *Miniredis) cmdHkeys(c *server.Peer, cmd string, args []string) { c.WriteLen(0) return } - if db.t(key) != "hash" { + if db.t(key) != keyTypeHash { c.WriteError(msgWrongType) return } @@ -380,7 +380,7 @@ func (m *Miniredis) cmdHstrlen(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -414,7 +414,7 @@ func (m *Miniredis) cmdHvals(c *server.Peer, cmd string, args []string) { c.WriteLen(0) return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -451,7 +451,7 @@ func (m *Miniredis) cmdHlen(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if t != "hash" { + if t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -479,7 +479,7 @@ func (m *Miniredis) cmdHmget(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[key]; ok && t != "hash" { + if t, ok := db.keys[key]; ok && t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -530,7 +530,7 @@ func (m *Miniredis) cmdHincrby(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "hash" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -577,7 +577,7 @@ func (m *Miniredis) cmdHincrbyfloat(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "hash" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeHash { c.WriteError(msgWrongType) return } @@ -662,7 +662,7 @@ func (m *Miniredis) cmdHscan(c *server.Peer, cmd string, args []string) { c.WriteLen(0) // no elements return } - if db.exists(opts.key) && db.t(opts.key) != "hash" { + if db.exists(opts.key) && db.t(opts.key) != keyTypeHash { c.WriteError(ErrWrongType.Error()) return } diff --git a/cmd_hll.go b/cmd_hll.go index a7b4836..ffb4d6f 100644 --- a/cmd_hll.go +++ b/cmd_hll.go @@ -28,7 +28,7 @@ func (m *Miniredis) cmdPfadd(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(key) && db.t(key) != "hll" { + if db.exists(key) && db.t(key) != keyTypeHll { c.WriteError(ErrNotValidHllValue.Error()) return } diff --git a/cmd_list.go b/cmd_list.go index d224275..5819945 100644 --- a/cmd_list.go +++ b/cmd_list.go @@ -84,7 +84,7 @@ func (m *Miniredis) cmdBXpop(c *server.Peer, cmd string, args []string, lr leftr if !db.exists(key) { continue } - if db.t(key) != "list" { + if db.t(key) != keyTypeList { c.WriteError(msgWrongType) return true } @@ -145,7 +145,7 @@ func (m *Miniredis) cmdLindex(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if t != "list" { + if t != keyTypeList { c.WriteError(msgWrongType) return } @@ -239,7 +239,7 @@ func (m *Miniredis) cmdLpos(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if t != "list" { + if t != keyTypeList { c.WriteError(msgWrongType) return } @@ -347,7 +347,7 @@ func (m *Miniredis) cmdLinsert(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if t != "list" { + if t != keyTypeList { c.WriteError(msgWrongType) return } @@ -401,7 +401,7 @@ func (m *Miniredis) cmdLlen(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if t != "list" { + if t != keyTypeList { c.WriteError(msgWrongType) return } @@ -471,7 +471,7 @@ func (m *Miniredis) cmdXpop(c *server.Peer, cmd string, args []string, lr leftri c.WriteNull() return } - if db.t(opts.key) != "list" { + if db.t(opts.key) != keyTypeList { c.WriteError(msgWrongType) return } @@ -530,7 +530,7 @@ func (m *Miniredis) cmdXpush(c *server.Peer, cmd string, args []string, lr leftr withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(key) && db.t(key) != "list" { + if db.exists(key) && db.t(key) != keyTypeList { c.WriteError(msgWrongType) return } @@ -580,7 +580,7 @@ func (m *Miniredis) cmdXpushx(c *server.Peer, cmd string, args []string, lr left c.WriteInt(0) return } - if db.t(key) != "list" { + if db.t(key) != keyTypeList { c.WriteError(msgWrongType) return } @@ -629,7 +629,7 @@ func (m *Miniredis) cmdLrange(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "list" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeList { c.WriteError(msgWrongType) return } @@ -680,7 +680,7 @@ func (m *Miniredis) cmdLrem(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if db.t(opts.key) != "list" { + if db.t(opts.key) != keyTypeList { c.WriteError(msgWrongType) return } @@ -754,7 +754,7 @@ func (m *Miniredis) cmdLset(c *server.Peer, cmd string, args []string) { c.WriteError(msgKeyNotFound) return } - if db.t(opts.key) != "list" { + if db.t(opts.key) != keyTypeList { c.WriteError(msgWrongType) return } @@ -811,7 +811,7 @@ func (m *Miniredis) cmdLtrim(c *server.Peer, cmd string, args []string) { c.WriteOK() return } - if t != "list" { + if t != keyTypeList { c.WriteError(msgWrongType) return } @@ -852,7 +852,7 @@ func (m *Miniredis) cmdRpoplpush(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if db.t(src) != "list" || (db.exists(dst) && db.t(dst) != "list") { + if db.t(src) != keyTypeList || (db.exists(dst) && db.t(dst) != keyTypeList) { c.WriteError(msgWrongType) return } @@ -897,7 +897,7 @@ func (m *Miniredis) cmdBrpoplpush(c *server.Peer, cmd string, args []string) { if !db.exists(opts.src) { return false } - if db.t(opts.src) != "list" || (db.exists(opts.dst) && db.t(opts.dst) != "list") { + if db.t(opts.src) != keyTypeList || (db.exists(opts.dst) && db.t(opts.dst) != keyTypeList) { c.WriteError(msgWrongType) return true } @@ -949,7 +949,7 @@ func (m *Miniredis) cmdLmove(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if db.t(opts.src) != "list" || (db.exists(opts.dst) && db.t(opts.dst) != "list") { + if db.t(opts.src) != keyTypeList || (db.exists(opts.dst) && db.t(opts.dst) != keyTypeList) { c.WriteError(msgWrongType) return } @@ -1017,7 +1017,7 @@ func (m *Miniredis) cmdBlmove(c *server.Peer, cmd string, args []string) { if !db.exists(opts.src) { return false } - if db.t(opts.src) != "list" || (db.exists(opts.dst) && db.t(opts.dst) != "list") { + if db.t(opts.src) != keyTypeList || (db.exists(opts.dst) && db.t(opts.dst) != keyTypeList) { c.WriteError(msgWrongType) return true } diff --git a/cmd_server.go b/cmd_server.go index 6a41a43..5fe55dd 100644 --- a/cmd_server.go +++ b/cmd_server.go @@ -57,19 +57,19 @@ func (m *Miniredis) cmdMemory(c *server.Peer, cmd string, args []string) { ok bool ) switch db.keys[args[0]] { - case "string": + case keyTypeString: value, ok = db.stringKeys[args[0]] - case "set": + case keyTypeSet: value, ok = db.setKeys[args[0]] - case "hash": + case keyTypeHash: value, ok = db.hashKeys[args[0]] - case "list": + case keyTypeList: value, ok = db.listKeys[args[0]] - case "hll": + case keyTypeHll: value, ok = db.hllKeys[args[0]] - case "zset": + case keyTypeSortedSet: value, ok = db.sortedsetKeys[args[0]] - case "stream": + case keyTypeStream: value, ok = db.streamKeys[args[0]] } if !ok { diff --git a/cmd_set.go b/cmd_set.go index abcd1ba..12e4d58 100644 --- a/cmd_set.go +++ b/cmd_set.go @@ -50,7 +50,7 @@ func (m *Miniredis) cmdSadd(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(key) && db.t(key) != "set" { + if db.exists(key) && db.t(key) != keyTypeSet { c.WriteError(ErrWrongType.Error()) return } diff --git a/cmd_sorted_set.go b/cmd_sorted_set.go index bc1afc0..85bc569 100644 --- a/cmd_sorted_set.go +++ b/cmd_sorted_set.go @@ -142,7 +142,7 @@ outer: withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(opts.key) && db.t(opts.key) != "zset" { + if db.exists(opts.key) && db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -216,7 +216,7 @@ func (m *Miniredis) cmdZcard(c *server.Peer, cmd string, args []string) { return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -272,7 +272,7 @@ func (m *Miniredis) cmdZcount(c *server.Peer, cmd string, args []string) { return } - if db.t(opts.key) != "zset" { + if db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -316,7 +316,7 @@ func (m *Miniredis) cmdZincrby(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(opts.key) && db.t(opts.key) != "zset" { + if db.exists(opts.key) && db.t(opts.key) != keyTypeSortedSet { c.WriteError(msgWrongType) return } @@ -445,12 +445,12 @@ func (m *Miniredis) makeCmdZinter(store bool) func(c *server.Peer, cmd string, a var set map[string]float64 switch db.t(key) { - case "set": + case keyTypeSet: set = map[string]float64{} for elem := range db.setKeys[key] { set[elem] = 1.0 } - case "zset": + case keyTypeSortedSet: set = db.sortedSet(key) default: c.WriteError(msgWrongType) @@ -550,7 +550,7 @@ func (m *Miniredis) cmdZlexcount(c *server.Peer, cmd string, args []string) { return } - if db.t(opts.Key) != "zset" { + if db.t(opts.Key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -846,7 +846,7 @@ func (m *Miniredis) makeCmdZrank(reverse bool) server.Cmd { return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -900,7 +900,7 @@ func (m *Miniredis) cmdZrem(c *server.Peer, cmd string, args []string) { return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -954,7 +954,7 @@ func (m *Miniredis) cmdZremrangebylex(c *server.Peer, cmd string, args []string) return } - if db.t(opts.Key) != "zset" { + if db.t(opts.Key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1007,7 +1007,7 @@ func (m *Miniredis) cmdZremrangebyrank(c *server.Peer, cmd string, args []string return } - if db.t(opts.key) != "zset" { + if db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1067,7 +1067,7 @@ func (m *Miniredis) cmdZremrangebyscore(c *server.Peer, cmd string, args []strin return } - if db.t(opts.key) != "zset" { + if db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1106,7 +1106,7 @@ func (m *Miniredis) cmdZscore(c *server.Peer, cmd string, args []string) { return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1147,7 +1147,7 @@ func (m *Miniredis) cmdZMscore(c *server.Peer, cmd string, args []string) { return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1466,12 +1466,12 @@ func executeZUnion(db *RedisDB, opts zunionOptions) (sortedSet, error) { var set map[string]float64 switch db.t(key) { - case "set": + case keyTypeSet: set = map[string]float64{} for elem := range db.setKeys[key] { set[elem] = 1.0 } - case "zset": + case keyTypeSortedSet: set = db.sortedSet(key) default: return nil, errors.New(msgWrongType) @@ -1574,7 +1574,7 @@ func (m *Miniredis) cmdZscan(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if db.exists(opts.key) && db.t(opts.key) != "zset" { + if db.exists(opts.key) && db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1652,7 +1652,7 @@ func (m *Miniredis) cmdZpopmax(reverse bool) server.Cmd { return } - if db.t(key) != "zset" { + if db.t(key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1734,7 +1734,7 @@ func (m *Miniredis) cmdZrandmember(c *server.Peer, cmd string, args []string) { return } - if db.t(opts.key) != "zset" { + if db.t(opts.key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1801,7 +1801,7 @@ func runRange(m *Miniredis, c *server.Peer, cctx *connCtx, opts optsRange) { return } - if db.t(opts.Key) != "zset" { + if db.t(opts.Key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1864,7 +1864,7 @@ func runRangeByScore(m *Miniredis, c *server.Peer, cctx *connCtx, opts optsRange return } - if db.t(opts.Key) != "zset" { + if db.t(opts.Key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } @@ -1951,7 +1951,7 @@ func runRangeByLex(m *Miniredis, c *server.Peer, cctx *connCtx, opts optsRangeBy return } - if db.t(opts.Key) != "zset" { + if db.t(opts.Key) != keyTypeSortedSet { c.WriteError(ErrWrongType.Error()) return } diff --git a/cmd_stream.go b/cmd_stream.go index 588a95f..7ce89d1 100644 --- a/cmd_stream.go +++ b/cmd_stream.go @@ -252,7 +252,7 @@ func (m *Miniredis) makeCmdXrange(reverse bool) server.Cmd { return } - if db.t(opts.key) != "stream" { + if db.t(opts.key) != keyTypeStream { c.WriteError(ErrWrongType.Error()) return } diff --git a/cmd_string.go b/cmd_string.go index b8013f2..08e6774 100644 --- a/cmd_string.go +++ b/cmd_string.go @@ -160,7 +160,7 @@ func (m *Miniredis) cmdSet(c *server.Peer, cmd string, args []string) { } } if opts.get { - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -403,7 +403,7 @@ func (m *Miniredis) cmdGet(c *server.Peer, cmd string, args []string) { c.WriteNull() return } - if db.t(key) != "string" { + if db.t(key) != keyTypeString { c.WriteError(msgWrongType) return } @@ -490,7 +490,7 @@ func (m *Miniredis) cmdGetex(c *server.Peer, cmd string, args []string) { db.ttl[opts.key] = opts.ttl } - if db.t(opts.key) != "string" { + if db.t(opts.key) != keyTypeString { c.WriteError(msgWrongType) return } @@ -518,7 +518,7 @@ func (m *Miniredis) cmdGetset(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -560,7 +560,7 @@ func (m *Miniredis) cmdGetdel(c *server.Peer, cmd string, args []string) { return } - if db.t(key) != "string" { + if db.t(key) != keyTypeString { c.WriteError(msgWrongType) return } @@ -590,7 +590,7 @@ func (m *Miniredis) cmdMget(c *server.Peer, cmd string, args []string) { c.WriteLen(len(args)) for _, k := range args { - if t, ok := db.keys[k]; !ok || t != "string" { + if t, ok := db.keys[k]; !ok || t != keyTypeString { c.WriteNull() continue } @@ -623,7 +623,7 @@ func (m *Miniredis) cmdIncr(c *server.Peer, cmd string, args []string) { db := m.db(ctx.selectedDB) key := args[0] - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -663,7 +663,7 @@ func (m *Miniredis) cmdIncrby(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -703,7 +703,7 @@ func (m *Miniredis) cmdIncrbyfloat(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -736,7 +736,7 @@ func (m *Miniredis) cmdDecr(c *server.Peer, cmd string, args []string) { db := m.db(ctx.selectedDB) key := args[0] - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -776,7 +776,7 @@ func (m *Miniredis) cmdDecrby(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -810,7 +810,7 @@ func (m *Miniredis) cmdStrlen(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -838,7 +838,7 @@ func (m *Miniredis) cmdAppend(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -880,7 +880,7 @@ func (m *Miniredis) cmdGetrange(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -923,7 +923,7 @@ func (m *Miniredis) cmdSetrange(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -980,7 +980,7 @@ func (m *Miniredis) cmdBitcount(c *server.Peer, cmd string, args []string) { c.WriteInt(0) return } - if db.t(opts.key) != "string" { + if db.t(opts.key) != keyTypeString { c.WriteError(msgWrongType) return } @@ -1030,13 +1030,13 @@ func (m *Miniredis) cmdBitop(c *server.Peer, cmd string, args []string) { switch opts.op { case "AND", "OR", "XOR": first := opts.input[0] - if t, ok := db.keys[first]; ok && t != "string" { + if t, ok := db.keys[first]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } res := []byte(db.stringKeys[first]) for _, vk := range opts.input[1:] { - if t, ok := db.keys[vk]; ok && t != "string" { + if t, ok := db.keys[vk]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -1062,7 +1062,7 @@ func (m *Miniredis) cmdBitop(c *server.Peer, cmd string, args []string) { return } key := opts.input[0] - if t, ok := db.keys[key]; ok && t != "string" { + if t, ok := db.keys[key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -1124,7 +1124,7 @@ func (m *Miniredis) cmdBitpos(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.Key]; ok && t != "string" { + if t, ok := db.keys[opts.Key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } else if !ok { @@ -1215,7 +1215,7 @@ func (m *Miniredis) cmdGetbit(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } @@ -1276,7 +1276,7 @@ func (m *Miniredis) cmdSetbit(c *server.Peer, cmd string, args []string) { withTx(m, c, func(c *server.Peer, ctx *connCtx) { db := m.db(ctx.selectedDB) - if t, ok := db.keys[opts.key]; ok && t != "string" { + if t, ok := db.keys[opts.key]; ok && t != keyTypeString { c.WriteError(msgWrongType) return } diff --git a/db.go b/db.go index af56839..6af7ba3 100644 --- a/db.go +++ b/db.go @@ -70,19 +70,19 @@ func (db *RedisDB) move(key string, to *RedisDB) bool { } to.keys[key] = db.keys[key] switch t { - case "string": + case keyTypeString: to.stringKeys[key] = db.stringKeys[key] - case "hash": + case keyTypeHash: to.hashKeys[key] = db.hashKeys[key] - case "list": + case keyTypeList: to.listKeys[key] = db.listKeys[key] - case "set": + case keyTypeSet: to.setKeys[key] = db.setKeys[key] - case "zset": + case keyTypeSortedSet: to.sortedsetKeys[key] = db.sortedsetKeys[key] - case "stream": + case keyTypeStream: to.streamKeys[key] = db.streamKeys[key] - case "hll": + case keyTypeHll: to.hllKeys[key] = db.hllKeys[key] default: panic("unhandled key type") @@ -98,19 +98,19 @@ func (db *RedisDB) move(key string, to *RedisDB) bool { func (db *RedisDB) rename(from, to string) { db.del(to, true) switch db.t(from) { - case "string": + case keyTypeString: db.stringKeys[to] = db.stringKeys[from] - case "hash": + case keyTypeHash: db.hashKeys[to] = db.hashKeys[from] - case "list": + case keyTypeList: db.listKeys[to] = db.listKeys[from] - case "set": + case keyTypeSet: db.setKeys[to] = db.setKeys[from] - case "zset": + case keyTypeSortedSet: db.sortedsetKeys[to] = db.sortedsetKeys[from] - case "stream": + case keyTypeStream: db.streamKeys[to] = db.streamKeys[from] - case "hll": + case keyTypeHll: db.hllKeys[to] = db.hllKeys[from] default: panic("missing case") @@ -136,19 +136,19 @@ func (db *RedisDB) del(k string, delTTL bool) { delete(db.ttl, k) } switch t { - case "string": + case keyTypeString: delete(db.stringKeys, k) - case "hash": + case keyTypeHash: delete(db.hashKeys, k) - case "list": + case keyTypeList: delete(db.listKeys, k) - case "set": + case keyTypeSet: delete(db.setKeys, k) - case "zset": + case keyTypeSortedSet: delete(db.sortedsetKeys, k) - case "stream": + case keyTypeStream: delete(db.streamKeys, k) - case "hll": + case keyTypeHll: delete(db.hllKeys, k) default: panic("Unknown key type: " + t) @@ -157,7 +157,7 @@ func (db *RedisDB) del(k string, delTTL bool) { // stringGet returns the string key or "" on error/nonexists. func (db *RedisDB) stringGet(k string) string { - if t, ok := db.keys[k]; !ok || t != "string" { + if t, ok := db.keys[k]; !ok || t != keyTypeString { return "" } return db.stringKeys[k] @@ -166,7 +166,7 @@ func (db *RedisDB) stringGet(k string) string { // stringSet force set()s a key. Does not touch expire. func (db *RedisDB) stringSet(k, v string) { db.del(k, false) - db.keys[k] = "string" + db.keys[k] = keyTypeString db.stringKeys[k] = v db.incr(k) } @@ -217,7 +217,7 @@ func (db *RedisDB) stringIncrfloat(k string, delta *big.Float) (*big.Float, erro func (db *RedisDB) listLpush(k, v string) int { l, ok := db.listKeys[k] if !ok { - db.keys[k] = "list" + db.keys[k] = keyTypeList } l = append([]string{v}, l...) db.listKeys[k] = l @@ -242,7 +242,7 @@ func (db *RedisDB) listLpop(k string) string { func (db *RedisDB) listPush(k string, v ...string) int { l, ok := db.listKeys[k] if !ok { - db.keys[k] = "list" + db.keys[k] = keyTypeList } l = append(l, v...) db.listKeys[k] = l @@ -265,7 +265,7 @@ func (db *RedisDB) listPop(k string) string { // setset replaces a whole set. func (db *RedisDB) setSet(k string, set setKey) { - db.keys[k] = "set" + db.keys[k] = keyTypeSet db.setKeys[k] = set db.incr(k) } @@ -275,7 +275,7 @@ func (db *RedisDB) setAdd(k string, elems ...string) int { s, ok := db.setKeys[k] if !ok { s = setKey{} - db.keys[k] = "set" + db.keys[k] = keyTypeSet } added := 0 for _, e := range elems { @@ -361,10 +361,10 @@ func (db *RedisDB) hashGet(key, field string) string { // hashSet returns the number of new keys func (db *RedisDB) hashSet(k string, fv ...string) int { - if t, ok := db.keys[k]; ok && t != "hash" { + if t, ok := db.keys[k]; ok && t != keyTypeHash { db.del(k, true) } - db.keys[k] = "hash" + db.keys[k] = keyTypeHash if _, ok := db.hashKeys[k]; !ok { db.hashKeys[k] = map[string]string{} } @@ -424,7 +424,7 @@ func (db *RedisDB) sortedSet(key string) map[string]float64 { // ssetSet sets a complete sorted set. func (db *RedisDB) ssetSet(key string, sset sortedSet) { - db.keys[key] = "zset" + db.keys[key] = keyTypeSortedSet db.incr(key) db.sortedsetKeys[key] = sset } @@ -434,7 +434,7 @@ func (db *RedisDB) ssetAdd(key string, score float64, member string) bool { ss, ok := db.sortedsetKeys[key] if !ok { ss = newSortedSet() - db.keys[key] = "zset" + db.keys[key] = keyTypeSortedSet } _, ok = ss[member] ss[member] = score @@ -526,7 +526,7 @@ func (db *RedisDB) ssetIncrby(k, m string, delta float64) float64 { ss, ok := db.sortedsetKeys[k] if !ok { ss = newSortedSet() - db.keys[k] = "zset" + db.keys[k] = keyTypeSortedSet db.sortedsetKeys[k] = ss } @@ -541,7 +541,7 @@ func (db *RedisDB) ssetIncrby(k, m string, delta float64) float64 { func (db *RedisDB) setDiff(keys []string) (setKey, error) { key := keys[0] keys = keys[1:] - if db.exists(key) && db.t(key) != "set" { + if db.exists(key) && db.t(key) != keyTypeSet { return nil, ErrWrongType } s := setKey{} @@ -552,7 +552,7 @@ func (db *RedisDB) setDiff(keys []string) (setKey, error) { if !db.exists(sk) { continue } - if db.t(sk) != "set" { + if db.t(sk) != keyTypeSet { return nil, ErrWrongType } for e := range db.setKeys[sk] { @@ -567,7 +567,7 @@ func (db *RedisDB) setDiff(keys []string) (setKey, error) { func (db *RedisDB) setInter(keys []string) (setKey, error) { // all keys must either not exist, or be of type "set". for _, key := range keys { - if db.exists(key) && db.t(key) != "set" { + if db.exists(key) && db.t(key) != keyTypeSet { return nil, ErrWrongType } } @@ -577,7 +577,7 @@ func (db *RedisDB) setInter(keys []string) (setKey, error) { if !db.exists(key) { return nil, nil } - if db.t(key) != "set" { + if db.t(key) != keyTypeSet { return nil, ErrWrongType } s := setKey{} @@ -588,7 +588,7 @@ func (db *RedisDB) setInter(keys []string) (setKey, error) { if !db.exists(sk) { return setKey{}, nil } - if db.t(sk) != "set" { + if db.t(sk) != keyTypeSet { return nil, ErrWrongType } other := db.setKeys[sk] @@ -682,7 +682,7 @@ func (db *RedisDB) newStream(key string) (*streamKey, error) { return nil, fmt.Errorf("ErrAlreadyExists") } - db.keys[key] = "stream" + db.keys[key] = keyTypeStream s := newStreamKey() db.streamKeys[key] = s db.incr(key) @@ -691,7 +691,7 @@ func (db *RedisDB) newStream(key string) (*streamKey, error) { // return existing stream, or nil. func (db *RedisDB) stream(key string) (*streamKey, error) { - if db.exists(key) && db.t(key) != "stream" { + if db.exists(key) && db.t(key) != keyTypeStream { return nil, ErrWrongType } @@ -728,7 +728,7 @@ func (db *RedisDB) hllAdd(k string, elems ...string) int { s, ok := db.hllKeys[k] if !ok { s = newHll() - db.keys[k] = "hll" + db.keys[k] = keyTypeHll } hllAltered := 0 for _, e := range elems { @@ -745,7 +745,7 @@ func (db *RedisDB) hllAdd(k string, elems ...string) int { func (db *RedisDB) hllCount(keys []string) (int, error) { countOverall := 0 for _, key := range keys { - if db.exists(key) && db.t(key) != "hll" { + if db.exists(key) && db.t(key) != keyTypeHll { return 0, ErrNotValidHllValue } if !db.exists(key) { @@ -760,7 +760,7 @@ func (db *RedisDB) hllCount(keys []string) (int, error) { // hllMerge merges all the hlls provided as keys to the first key. Creates a new hll in the first key if it contains nothing func (db *RedisDB) hllMerge(keys []string) error { for _, key := range keys { - if db.exists(key) && db.t(key) != "hll" { + if db.exists(key) && db.t(key) != keyTypeHll { return ErrNotValidHllValue } } @@ -783,7 +783,7 @@ func (db *RedisDB) hllMerge(keys []string) error { } db.hllKeys[destKey] = destHll - db.keys[destKey] = "hll" + db.keys[destKey] = keyTypeHll db.incr(destKey) return nil diff --git a/direct.go b/direct.go index 31505eb..88ef361 100644 --- a/direct.go +++ b/direct.go @@ -90,7 +90,7 @@ func (db *RedisDB) Get(k string) (string, error) { if !db.exists(k) { return "", ErrKeyNotFound } - if db.t(k) != "string" { + if db.t(k) != keyTypeString { return "", ErrWrongType } return db.stringGet(k), nil @@ -108,7 +108,7 @@ func (db *RedisDB) Set(k, v string) error { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "string" { + if db.exists(k) && db.t(k) != keyTypeString { return ErrWrongType } db.del(k, true) // Remove expire @@ -127,7 +127,7 @@ func (db *RedisDB) Incr(k string, delta int) (int, error) { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "string" { + if db.exists(k) && db.t(k) != keyTypeString { return 0, ErrWrongType } @@ -151,7 +151,7 @@ func (db *RedisDB) Incrfloat(k string, delta float64) (float64, error) { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "string" { + if db.exists(k) && db.t(k) != keyTypeString { return 0, ErrWrongType } @@ -180,7 +180,7 @@ func (db *RedisDB) List(k string) ([]string, error) { if !db.exists(k) { return nil, ErrKeyNotFound } - if db.t(k) != "list" { + if db.t(k) != keyTypeList { return nil, ErrWrongType } return db.listKeys[k], nil @@ -197,7 +197,7 @@ func (db *RedisDB) Lpush(k, v string) (int, error) { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "list" { + if db.exists(k) && db.t(k) != keyTypeList { return 0, ErrWrongType } return db.listLpush(k, v), nil @@ -217,7 +217,7 @@ func (db *RedisDB) Lpop(k string) (string, error) { if !db.exists(k) { return "", ErrKeyNotFound } - if db.t(k) != "list" { + if db.t(k) != keyTypeList { return "", ErrWrongType } return db.listLpop(k), nil @@ -240,7 +240,7 @@ func (db *RedisDB) Push(k string, v ...string) (int, error) { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "list" { + if db.exists(k) && db.t(k) != keyTypeList { return 0, ErrWrongType } return db.listPush(k, v...), nil @@ -265,7 +265,7 @@ func (db *RedisDB) Pop(k string) (string, error) { if !db.exists(k) { return "", ErrKeyNotFound } - if db.t(k) != "list" { + if db.t(k) != keyTypeList { return "", ErrWrongType } @@ -289,7 +289,7 @@ func (db *RedisDB) SetAdd(k string, elems ...string) (int, error) { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "set" { + if db.exists(k) && db.t(k) != keyTypeSet { return 0, ErrWrongType } return db.setAdd(k, elems...), nil @@ -314,7 +314,7 @@ func (db *RedisDB) Members(k string) ([]string, error) { if !db.exists(k) { return nil, ErrKeyNotFound } - if db.t(k) != "set" { + if db.t(k) != keyTypeSet { return nil, ErrWrongType } return db.setMembers(k), nil @@ -339,7 +339,7 @@ func (db *RedisDB) IsMember(k, v string) (bool, error) { if !db.exists(k) { return false, ErrKeyNotFound } - if db.t(k) != "set" { + if db.t(k) != keyTypeSet { return false, ErrWrongType } return db.setIsMember(k, v), nil @@ -358,7 +358,7 @@ func (db *RedisDB) HKeys(key string) ([]string, error) { if !db.exists(key) { return nil, ErrKeyNotFound } - if db.t(key) != "hash" { + if db.t(key) != keyTypeHash { return nil, ErrWrongType } return db.hashFields(key), nil @@ -569,7 +569,7 @@ func (db *RedisDB) SRem(k string, fields ...string) (int, error) { if !db.exists(k) { return 0, ErrKeyNotFound } - if db.t(k) != "set" { + if db.t(k) != keyTypeSet { return 0, ErrWrongType } return db.setRem(k, fields...), nil @@ -586,7 +586,7 @@ func (db *RedisDB) ZAdd(k string, score float64, member string) (bool, error) { defer db.master.Unlock() defer db.master.signal.Broadcast() - if db.exists(k) && db.t(k) != "zset" { + if db.exists(k) && db.t(k) != keyTypeSortedSet { return false, ErrWrongType } return db.ssetAdd(k, score, member), nil @@ -605,7 +605,7 @@ func (db *RedisDB) ZMembers(k string) ([]string, error) { if !db.exists(k) { return nil, ErrKeyNotFound } - if db.t(k) != "zset" { + if db.t(k) != keyTypeSortedSet { return nil, ErrWrongType } return db.ssetMembers(k), nil @@ -624,7 +624,7 @@ func (db *RedisDB) SortedSet(k string) (map[string]float64, error) { if !db.exists(k) { return nil, ErrKeyNotFound } - if db.t(k) != "zset" { + if db.t(k) != keyTypeSortedSet { return nil, ErrWrongType } return db.sortedSet(k), nil @@ -644,7 +644,7 @@ func (db *RedisDB) ZRem(k, member string) (bool, error) { if !db.exists(k) { return false, ErrKeyNotFound } - if db.t(k) != "zset" { + if db.t(k) != keyTypeSortedSet { return false, ErrWrongType } return db.ssetRem(k, member), nil @@ -663,7 +663,7 @@ func (db *RedisDB) ZScore(k, member string) (float64, error) { if !db.exists(k) { return 0, ErrKeyNotFound } - if db.t(k) != "zset" { + if db.t(k) != keyTypeSortedSet { return 0, ErrWrongType } return db.ssetScore(k, member), nil @@ -681,7 +681,7 @@ func (db *RedisDB) ZMScore(k string, members []string) ([]float64, error) { if !db.exists(k) { return nil, ErrKeyNotFound } - if db.t(k) != "zset" { + if db.t(k) != keyTypeSortedSet { return nil, ErrWrongType } return db.ssetMScore(k, members), nil @@ -783,7 +783,7 @@ func (db *RedisDB) HllAdd(k string, elems ...string) (int, error) { db.master.Lock() defer db.master.Unlock() - if db.exists(k) && db.t(k) != "hll" { + if db.exists(k) && db.t(k) != keyTypeHll { return 0, ErrWrongType } return db.hllAdd(k, elems...), nil diff --git a/miniredis.go b/miniredis.go index a9600ef..6996872 100644 --- a/miniredis.go +++ b/miniredis.go @@ -404,25 +404,25 @@ func (m *Miniredis) Dump() string { r += fmt.Sprintf("- %s\n", k) t := db.t(k) switch t { - case "string": + case keyTypeString: r += fmt.Sprintf("%s%s\n", indent, v(db.stringKeys[k])) - case "hash": + case keyTypeHash: for _, hk := range db.hashFields(k) { r += fmt.Sprintf("%s%s: %s\n", indent, hk, v(db.hashGet(k, hk))) } - case "list": + case keyTypeList: for _, lk := range db.listKeys[k] { r += fmt.Sprintf("%s%s\n", indent, v(lk)) } - case "set": + case keyTypeSet: for _, mk := range db.setMembers(k) { r += fmt.Sprintf("%s%s\n", indent, v(mk)) } - case "zset": + case keyTypeSortedSet: for _, el := range db.ssetElements(k) { r += fmt.Sprintf("%s%f: %s\n", indent, el.score, v(el.member)) } - case "stream": + case keyTypeStream: for _, entry := range db.streamKeys[k].entries { r += fmt.Sprintf("%s%s\n", indent, entry.ID) ev := entry.Values @@ -430,7 +430,7 @@ func (m *Miniredis) Dump() string { r += fmt.Sprintf("%s%s%s: %s\n", indent, indent, v(ev[2*i]), v(ev[2*i+1])) } } - case "hll": + case keyTypeHll: for _, entry := range db.hllKeys { r += fmt.Sprintf("%s%s\n", indent, v(string(entry.Bytes()))) } @@ -703,19 +703,19 @@ func (m *Miniredis) copy( } switch srcDB.t(src) { - case "string": + case keyTypeString: destDB.stringKeys[dst] = srcDB.stringKeys[src] - case "hash": + case keyTypeHash: destDB.hashKeys[dst] = copyHashKey(srcDB.hashKeys[src]) - case "list": + case keyTypeList: destDB.listKeys[dst] = copyListKey(srcDB.listKeys[src]) - case "set": + case keyTypeSet: destDB.setKeys[dst] = copySetKey(srcDB.setKeys[src]) - case "zset": + case keyTypeSortedSet: destDB.sortedsetKeys[dst] = copySortedSet(srcDB.sortedsetKeys[src]) - case "stream": + case keyTypeStream: destDB.streamKeys[dst] = srcDB.streamKeys[src].copy() - case "hll": + case keyTypeHll: destDB.hllKeys[dst] = srcDB.hllKeys[src].copy() default: panic("missing case") diff --git a/redis.go b/redis.go index f70728e..2bf3bae 100644 --- a/redis.go +++ b/redis.go @@ -12,6 +12,16 @@ import ( "github.com/alicebob/miniredis/v2/server" ) +const ( + keyTypeString = "string" + keyTypeHash = "hash" + keyTypeList = "list" + keyTypeSet = "set" + keyTypeHll = "hll" + keyTypeSortedSet = "zset" + keyTypeStream = "stream" +) + const ( msgWrongType = "WRONGTYPE Operation against a key holding the wrong kind of value" msgNotValidHllValue = "WRONGTYPE Key is not a valid HyperLogLog string value."