func dumpSetOp(conn *client.Conn, args []string) { op, err := setop.NewSetOpParser(args[2]).Parse() if err != nil { fmt.Println(err) } else { for _, res := range conn.SetExpression(setop.SetExpression{Dest: []byte(args[1]), Op: op}) { printSetOpRes(res) } } }
func describeTree(conn *client.Conn, args []string) { if bytes, err := hex.DecodeString(args[1]); err != nil { fmt.Println(err) } else { if result, err := conn.DescribeTree(bytes); err != nil { fmt.Println(err) } else { fmt.Println(result) } } }
func getActives(w http.ResponseWriter, r *http.Request, c *client.Conn) { var result []common.Message for _, item := range c.Slice(activeObjectsKey, nil, nil, true, true) { result = append(result, common.Message{ Object: string(item.Key), }) } w.Header().Set("Content-Type", "application/json; charset=UTF-8") if err := json.NewEncoder(w).Encode(result); err != nil { panic(err) } }
func getViews(w http.ResponseWriter, r *http.Request, c *client.Conn) { uid := mux.Vars(r)["user_id"] vKey := uViewsKey(uid) var result []common.Message for _, item := range c.Slice(vKey, nil, nil, true, true) { result = append(result, common.Message{ Type: common.View, User: uid, Object: string(item.Key), }) } w.Header().Set("Content-Type", "application/json; charset=UTF-8") if err := json.NewEncoder(w).Encode(result); err != nil { panic(err) } }
func testDump(t *testing.T, c *client.Conn) { ch, wa := c.Dump() ch <- [2][]byte{[]byte("testDumpk1"), []byte("testDumpv1")} ch <- [2][]byte{[]byte("testDumpk2"), []byte("testDumpv2")} close(ch) wa.Wait() if val, ex := c.Get([]byte("testDumpk1")); !ex || bytes.Compare(val, []byte("testDumpv1")) != 0 { t.Errorf("wrong value") } if val, ex := c.Get([]byte("testDumpk2")); !ex || bytes.Compare(val, []byte("testDumpv2")) != 0 { t.Errorf("wrong value") } }
func describeAllTrees(conn *client.Conn, args []string) { fmt.Print(conn.DescribeAllTrees()) }
func subConfigure(conn *client.Conn, args []string) { conn.SubAddConfiguration([]byte(args[1]), args[2], args[3]) }
func del(conn *client.Conn, args []string) { conn.Del([]byte(args[1])) }
func slice(conn *client.Conn, args []string) { for i, item := range conn.Slice([]byte(args[1]), []byte(args[2]), []byte(args[3]), true, false) { fmt.Printf("%v: %v => %v\n", i, string(item.Key), decode(item.Value)) } }
func put(conn *client.Conn, args []string) { conn.Put([]byte(args[1]), encode(args[2])) }
func subClear(conn *client.Conn, args []string) { conn.SubClear([]byte(args[1])) }
func nextIndex(conn *client.Conn, args []string) { if key, value, index, existed := conn.NextIndex([]byte(args[1]), *(mustAtoi(args[2]))); existed { fmt.Printf("%v: %v => %v\n", index, string(key), decode(value)) } }
func dump(conn *client.Conn, args []string) { dump, wait := conn.Dump() linedump(dump, wait) }
func show(conn *client.Conn) { fmt.Println(conn.Describe()) }
func count(conn *client.Conn, args []string) { fmt.Println(conn.Count([]byte(args[1]), []byte(args[2]), []byte(args[3]), true, false)) }
func indexOf(conn *client.Conn, args []string) { if index, existed := conn.IndexOf([]byte(args[1]), []byte(args[2])); existed { fmt.Println(index) } }
func size(conn *client.Conn, args []string) { fmt.Println(conn.Size()) }
func reverseSliceLen(conn *client.Conn, args []string) { for _, item := range conn.ReverseSliceLen([]byte(args[1]), []byte(args[2]), true, *(mustAtoi(args[3]))) { fmt.Printf("%v => %v\n", string(item.Key), decode(item.Value)) } }
func subGet(conn *client.Conn, args []string) { if value, existed := conn.SubGet([]byte(args[1]), []byte(args[2])); existed { fmt.Printf("%v\n", decode(value)) } }
func next(conn *client.Conn, args []string) { if key, value, existed := conn.Next([]byte(args[1])); existed { fmt.Printf("%v => %v\n", string(key), decode(value)) } }
func clear(conn *client.Conn, args []string) { conn.Clear() }
func mirrorLast(conn *client.Conn, args []string) { if key, value, existed := conn.MirrorLast([]byte(args[1])); existed { fmt.Println(decode(key), "=>", string(value)) } }
func subDump(conn *client.Conn, args []string) { dump, wait := conn.SubDump([]byte(args[1])) linedump(dump, wait) }
func subSize(conn *client.Conn, args []string) { fmt.Println(conn.SubSize([]byte(args[1]))) }
func subPut(conn *client.Conn, args []string) { conn.SubPut([]byte(args[1]), []byte(args[2]), encode(args[3])) }
func subPrev(conn *client.Conn, args []string) { if key, value, existed := conn.SubPrev([]byte(args[1]), []byte(args[2])); existed { fmt.Printf("%v => %v\n", string(key), decode(value)) } }
func subDel(conn *client.Conn, args []string) { conn.SubDel([]byte(args[1]), []byte(args[2])) }
func describeAll(conn *client.Conn, args []string) { for _, description := range conn.DescribeAllNodes() { fmt.Println(description.Describe()) } }
func last(conn *client.Conn, args []string) { if key, value, existed := conn.Last([]byte(args[1])); existed { fmt.Println(string(key), "=>", decode(value)) } }
func sliceIndex(conn *client.Conn, args []string) { for _, item := range conn.SliceIndex([]byte(args[1]), mustAtoi(args[2]), mustAtoi(args[3])) { fmt.Printf("%v: %v => %v\n", item.Index, string(item.Key), decode(item.Value)) } }