class Sequel::SQLite::JSONBaseOp

  1. lib/sequel/extensions/sqlite_json_ops.rb
Superclass: Sequel::SQL::Wrapper

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)

Public Instance Aliases

get -> []
minify -> json
typeof -> type

Public Instance methods

[](key)

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]')
[show source]
   # File lib/sequel/extensions/sqlite_json_ops.rb
91 def [](key)
92   json_op(GET, key)
93 end
array_length(*args)

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]')
[show source]
    # 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
each(*args)

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')
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
111 def each(*args)
112   SQL::Function.new(:json_each, self, *args)
113 end
extract(*a)

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')
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
121 def extract(*a)
122   function(:extract, *a)
123 end
get_json(key)

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]')
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
132 def get_json(key)
133   self.class.new(json_op(GET_JSON, key))
134 end
insert(path, value, *args)

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)
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
141 def insert(path, value, *args)
142   wrapped_function(:insert, path, value, *args)
143 end
json()

Returns an expression for a minified version of the JSON.

json_op.json   # json(json)
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
148 def json
149   JSONOp.new(SQL::Function.new(:json, self))
150 end
jsonb()

Returns the JSONB format of the JSON.

json_op.jsonb   # jsonb(json)
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
156 def jsonb
157   JSONBOp.new(SQL::Function.new(:jsonb, self))
158 end
patch(json_patch)

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}')
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
163 def patch(json_patch)
164   wrapped_function(:patch, json_patch)
165 end
remove(path, *paths)

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')
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
171 def remove(path, *paths)
172   wrapped_function(:remove, path, *paths)
173 end
replace(path, value, *args)

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)
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
180 def replace(path, value, *args)
181   wrapped_function(:replace, path, value, *args)
182 end
set(path, value, *args)

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)
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
189 def set(path, value, *args)
190   wrapped_function(:set, path, value, *args)
191 end
tree(*args)

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')
[show source]
    # File lib/sequel/extensions/sqlite_json_ops.rb
198 def tree(*args)
199   SQL::Function.new(:json_tree, self, *args)
200 end
type(*args)

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]')
[show source]
    # 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
valid()

Returns a boolean expression for whether the JSON is valid or not.

[show source]
    # 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