class Jylis::DataType::UJSON

Unordered JSON.

@see jemc.github.io/jylis/docs/types/ujson/

Public Instance Methods

clr(*keys) click to toggle source

Remove all data stored at or under the given `key`.

# File lib/jylis-rb/data_types/ujson.rb, line 32
def clr(*keys)
  unless keys.count >= 1
    raise ArgumentError.new("Must provide at least one key")
  end

  params = ["UJSON", "CLR"] + keys

  result = connection.query(*params)

  unless result == "OK"
    raise "Failed: UJSON CLR #{params.join(' ')}"
  end
end
get(*keys) click to toggle source

Get the JSON representation of the data currently held at `key`.

# File lib/jylis-rb/data_types/ujson.rb, line 12
def get(*keys)
  unless keys.count >= 1
    raise ArgumentError.new("Must provide at least one key")
  end

  params = ["UJSON", "GET"] + keys

  result = connection.query(*params)

  result == "" ? result : Oj.load(result)
end
ins(*args) click to toggle source

Insert the given `value` as a new element in the set of values stored at `key`.

@overload ins(*keys, value)

# File lib/jylis-rb/data_types/ujson.rb, line 50
def ins(*args)
  key_value_query(__method__, *args)
end
rm(*args) click to toggle source

Remove the specified `value` from the set of values stored at `key`.

@overload rm(*keys, value)

# File lib/jylis-rb/data_types/ujson.rb, line 57
def rm(*args)
  key_value_query(__method__, *args)
end
set(*args) click to toggle source

Store the given `ujson` data at the given `key`.

@overload set(*keys, value)

# File lib/jylis-rb/data_types/ujson.rb, line 27
def set(*args)
  key_value_query(__method__, *args)
end

Private Instance Methods

key_value_query(function, *args) click to toggle source

Execute a query consisting of (*keys, value) that returns “OK” on success.

@param function [String, Symbol] the Jylis function name @param args [Array] the list of keys, with the value last

# File lib/jylis-rb/data_types/ujson.rb, line 67
def key_value_query(function, *args)
  unless args.count >= 2
    raise ArgumentError.new("Must provide at least one key and the value")
  end

  function = function.to_s.upcase
  value    = args.pop
  keys     = args

  params = ["UJSON", function] + keys
  params.push Oj.dump(value)

  result = connection.query(*params)

  unless result == "OK"
    raise "Failed: UJSON #{function} #{params.join(' ')}"
  end
end