JSONBaseOp
is an abstract base wrapper class for a object that defines methods that return Sequel
expression objects representing SQLite
json operators and functions. It is subclassed by both JSONOp
and JSONBOp
for json and jsonb specific behavior.
In the method documentation examples, assume that:
json_op = Sequel.sqlite_json_op(:json)
Methods
Public Instance
Public Instance methods
Returns an expression for getting the JSON array element or object field at the specified path as a SQLite
value.
json_op[1] # (json ->> 1) json_op['a'] # (json ->> 'a') json_op['$.a.b'] # (json ->> '$.a.b') json_op['$[1][2]'] # (json ->> '$[1][2]')
# File lib/sequel/extensions/sqlite_json_ops.rb 91 def [](key) 92 json_op(GET, key) 93 end
Returns an expression for the length of the JSON array, or the JSON array at the given path.
json_op.array_length # json_array_length(json) json_op.array_length('$[1]') # json_array_length(json, '$[1]')
# File lib/sequel/extensions/sqlite_json_ops.rb 101 def array_length(*args) 102 Sequel::SQL::NumericExpression.new(:NOOP, SQL::Function.new(:json_array_length, self, *args)) 103 end
Returns an expression for a set of information extracted from the top-level members of the JSON array or object, or the top-level members of the JSON array or object at the given path.
json_op.each # json_each(json) json_op.each('$.a') # json_each(json, '$.a')
# File lib/sequel/extensions/sqlite_json_ops.rb 111 def each(*args) 112 SQL::Function.new(:json_each, self, *args) 113 end
Returns an expression for the JSON array element or object field at the specified path as a SQLite
value, but only accept paths as arguments, and allow the use of multiple paths.
json_op.extract('$.a') # json_extract(json, '$.a') json_op.extract('$.a', '$.b') # json_extract(json, '$.a', '$.b')
# File lib/sequel/extensions/sqlite_json_ops.rb 121 def extract(*a) 122 function(:extract, *a) 123 end
Returns an expression for getting the JSON array element or object field at the specified path as a JSON value.
json_op.get_json(1) # (json -> 1) json_op.get_json('a') # (json -> 'a') json_op.get_json('$.a.b') # (json -> '$.a.b') json_op.get_json('$[1][2]') # (json -> '$[1][2]')
# File lib/sequel/extensions/sqlite_json_ops.rb 132 def get_json(key) 133 self.class.new(json_op(GET_JSON, key)) 134 end
Returns an expression for creating new entries at the given paths in the JSON array or object, but not overwriting existing entries.
json_op.insert('$.a', 1) # json_insert(json, '$.a', 1) json_op.insert('$.a', 1, '$.b', 2) # json_insert(json, '$.a', 1, '$.b', 2)
# File lib/sequel/extensions/sqlite_json_ops.rb 141 def insert(path, value, *args) 142 wrapped_function(:insert, path, value, *args) 143 end
Returns an expression for a minified version of the JSON.
json_op.json # json(json)
# File lib/sequel/extensions/sqlite_json_ops.rb 148 def json 149 JSONOp.new(SQL::Function.new(:json, self)) 150 end
Returns the JSONB format of the JSON.
json_op.jsonb # jsonb(json)
# File lib/sequel/extensions/sqlite_json_ops.rb 156 def jsonb 157 JSONBOp.new(SQL::Function.new(:jsonb, self)) 158 end
Returns an expression for updating the JSON object using the RFC 7396 MergePatch algorithm
json_op.patch('{"a": 1, "b": null}') # json_patch(json, '{"a": 1, "b": null}')
# File lib/sequel/extensions/sqlite_json_ops.rb 163 def patch(json_patch) 164 wrapped_function(:patch, json_patch) 165 end
Returns an expression for removing entries at the given paths from the JSON array or object.
json_op.remove('$.a') # json_remove(json, '$.a') json_op.remove('$.a', '$.b') # json_remove(json, '$.a', '$.b')
# File lib/sequel/extensions/sqlite_json_ops.rb 171 def remove(path, *paths) 172 wrapped_function(:remove, path, *paths) 173 end
Returns an expression for replacing entries at the given paths in the JSON array or object, but not creating new entries.
json_op.replace('$.a', 1) # json_replace(json, '$.a', 1) json_op.replace('$.a', 1, '$.b', 2) # json_replace(json, '$.a', 1, '$.b', 2)
# File lib/sequel/extensions/sqlite_json_ops.rb 180 def replace(path, value, *args) 181 wrapped_function(:replace, path, value, *args) 182 end
Returns an expression for creating or replacing entries at the given paths in the JSON array or object.
json_op.set('$.a', 1) # json_set(json, '$.a', 1) json_op.set('$.a', 1, '$.b', 2) # json_set(json, '$.a', 1, '$.b', 2)
# File lib/sequel/extensions/sqlite_json_ops.rb 189 def set(path, value, *args) 190 wrapped_function(:set, path, value, *args) 191 end
Returns an expression for a set of information extracted from the JSON array or object, or the JSON array or object at the given path.
json_op.tree # json_tree(json) json_op.tree('$.a') # json_tree(json, '$.a')
# File lib/sequel/extensions/sqlite_json_ops.rb 198 def tree(*args) 199 SQL::Function.new(:json_tree, self, *args) 200 end
Returns an expression for the type of the JSON value or the JSON value at the given path.
json_op.type # json_type(json) json_op.type('$[1]') # json_type(json, '$[1]')
# File lib/sequel/extensions/sqlite_json_ops.rb 206 def type(*args) 207 Sequel::SQL::StringExpression.new(:NOOP, SQL::Function.new(:json_type, self, *args)) 208 end
Returns a boolean expression for whether the JSON is valid or not.
# File lib/sequel/extensions/sqlite_json_ops.rb 212 def valid 213 Sequel::SQL::BooleanExpression.new(:NOOP, SQL::Function.new(:json_valid, self)) 214 end