Class: Sequel::SQLite::JSONBaseOp
- Inherits:
-
Sequel::SQL::Wrapper
- Object
- Sequel::SQL::Expression
- Sequel::SQL::GenericExpression
- Sequel::SQL::Wrapper
- Sequel::SQLite::JSONBaseOp
- Defined in:
- lib/sequel/extensions/sqlite_json_ops.rb
Overview
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)
Instance Attribute Summary
Attributes inherited from Sequel::SQL::Wrapper
Instance Method Summary collapse
-
#[](key) ⇒ Object
(also: #get)
Returns an expression for getting the JSON array element or object field at the specified path as a SQLite value.
-
#array_length(*args) ⇒ Object
Returns an expression for the length of the JSON array, or the JSON array at the given path.
-
#each(*args) ⇒ Object
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.
-
#extract(*a) ⇒ Object
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.
-
#get_json(key) ⇒ Object
Returns an expression for getting the JSON array element or object field at the specified path as a JSON value.
-
#insert(path, value, *args) ⇒ Object
Returns an expression for creating new entries at the given paths in the JSON array or object, but not overwriting existing entries.
-
#json ⇒ Object
(also: #minify)
Returns an expression for a minified version of the JSON.
-
#jsonb ⇒ Object
Returns the JSONB format of the JSON.
-
#patch(json_patch) ⇒ Object
Returns an expression for updating the JSON object using the RFC 7396 MergePatch algorithm.
-
#remove(path, *paths) ⇒ Object
Returns an expression for removing entries at the given paths from the JSON array or object.
-
#replace(path, value, *args) ⇒ Object
Returns an expression for replacing entries at the given paths in the JSON array or object, but not creating new entries.
-
#set(path, value, *args) ⇒ Object
Returns an expression for creating or replacing entries at the given paths in the JSON array or object.
-
#tree(*args) ⇒ Object
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.
-
#type(*args) ⇒ Object
(also: #typeof)
Returns an expression for the type of the JSON value or the JSON value at the given path.
-
#valid ⇒ Object
Returns a boolean expression for whether the JSON is valid or not.
Methods inherited from Sequel::SQL::Wrapper
Methods included from Sequel::SQL::IsDistinctFrom::Methods
Methods included from JSONOpMethods
#sqlite_json_op, #sqlite_jsonb_op
Methods included from Postgres::HStoreOpMethods
Methods included from Postgres::RangeOpMethods
Methods included from Postgres::ArrayOpMethods
Methods included from Postgres::JSONOpMethods
Methods included from Postgres::InetOpMethods
Methods included from Postgres::PGRowOp::ExpressionMethods
Methods included from Sequel::SQL::SubscriptMethods
Methods included from Sequel::SQL::StringMethods
#escaped_ilike, #escaped_like, #ilike, #like
Methods included from Sequel::SQL::PatternMatchMethods
Methods included from Sequel::SQL::OrderMethods
Methods included from Sequel::SQL::NumericMethods
Methods included from Sequel::SQL::ComplexExpressionMethods
#sql_boolean, #sql_number, #sql_string
Methods included from Sequel::SQL::CastMethods
#cast, #cast_numeric, #cast_string
Methods included from Sequel::SQL::BooleanMethods
Methods included from Sequel::SQL::AliasMethods
Methods inherited from Sequel::SQL::Expression
#==, attr_reader, #clone, #eql?, #hash, inherited, #inspect
Constructor Details
This class inherits a constructor from Sequel::SQL::Wrapper
Instance Method Details
#[](key) ⇒ Object Also known as: get
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]')
91 92 93 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 91 def [](key) json_op(GET, key) end |
#array_length(*args) ⇒ Object
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]')
101 102 103 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 101 def array_length(*args) Sequel::SQL::NumericExpression.new(:NOOP, SQL::Function.new(:json_array_length, self, *args)) end |
#each(*args) ⇒ Object
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')
111 112 113 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 111 def each(*args) SQL::Function.new(:json_each, self, *args) end |
#extract(*a) ⇒ Object
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')
121 122 123 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 121 def extract(*a) function(:extract, *a) end |
#get_json(key) ⇒ Object
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]')
132 133 134 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 132 def get_json(key) self.class.new(json_op(GET_JSON, key)) end |
#insert(path, value, *args) ⇒ Object
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)
141 142 143 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 141 def insert(path, value, *args) wrapped_function(:insert, path, value, *args) end |
#json ⇒ Object Also known as: minify
Returns an expression for a minified version of the JSON.
json_op.json # json(json)
148 149 150 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 148 def json JSONOp.new(SQL::Function.new(:json, self)) end |
#jsonb ⇒ Object
Returns the JSONB format of the JSON.
json_op.jsonb # jsonb(json)
156 157 158 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 156 def jsonb JSONBOp.new(SQL::Function.new(:jsonb, self)) end |
#patch(json_patch) ⇒ Object
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}')
163 164 165 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 163 def patch(json_patch) wrapped_function(:patch, json_patch) end |
#remove(path, *paths) ⇒ Object
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')
171 172 173 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 171 def remove(path, *paths) wrapped_function(:remove, path, *paths) end |
#replace(path, value, *args) ⇒ Object
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)
180 181 182 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 180 def replace(path, value, *args) wrapped_function(:replace, path, value, *args) end |
#set(path, value, *args) ⇒ Object
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)
189 190 191 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 189 def set(path, value, *args) wrapped_function(:set, path, value, *args) end |
#tree(*args) ⇒ Object
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')
198 199 200 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 198 def tree(*args) SQL::Function.new(:json_tree, self, *args) end |
#type(*args) ⇒ Object Also known as: typeof
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]')
206 207 208 |
# File 'lib/sequel/extensions/sqlite_json_ops.rb', line 206 def type(*args) Sequel::SQL::StringExpression.new(:NOOP, SQL::Function.new(:json_type, self, *args)) end |