class Sequel::Postgres::JSONBOp
JSONBaseOp subclass for the jsonb type.
In the method documentation examples, assume that:
jsonb_op = Sequel.pg_jsonb(:jsonb)
Constants
- CONTAINED_BY
- CONTAINS
- CONTAIN_ALL
- CONTAIN_ANY
- HAS_KEY
Public Instance Methods
contain_all(other)
click to toggle source
Check if the receiver contains all of the keys in the given array:
jsonb_op.contain_all(:a) # (jsonb ?& a)
# File lib/sequel/extensions/pg_json_ops.rb, line 270 def contain_all(other) bool_op(CONTAIN_ALL, wrap_input_array(other)) end
contain_any(other)
click to toggle source
Check if the receiver contains any of the keys in the given array:
jsonb_op.contain_any(:a) # (jsonb ?| a)
# File lib/sequel/extensions/pg_json_ops.rb, line 277 def contain_any(other) bool_op(CONTAIN_ANY, wrap_input_array(other)) end
contained_by(other)
click to toggle source
Check if the other jsonb contains all entries in the receiver:
jsonb_op.contained_by(:h) # (jsonb <@ h)
# File lib/sequel/extensions/pg_json_ops.rb, line 291 def contained_by(other) bool_op(CONTAINED_BY, wrap_input_jsonb(other)) end
contains(other)
click to toggle source
Check if the receiver contains all entries in the other jsonb:
jsonb_op.contains(:h) # (jsonb @> h)
# File lib/sequel/extensions/pg_json_ops.rb, line 284 def contains(other) bool_op(CONTAINS, wrap_input_jsonb(other)) end
has_key?(key)
click to toggle source
Check if the receiver contains the given key:
jsonb_op.has_key?('a') # (jsonb ? 'a')
# File lib/sequel/extensions/pg_json_ops.rb, line 298 def has_key?(key) bool_op(HAS_KEY, key) end
Also aliased as: include?
pg_jsonb()
click to toggle source
Return the receiver, since it is already a JSONBOp.
# File lib/sequel/extensions/pg_json_ops.rb, line 304 def pg_jsonb self end
Private Instance Methods
bool_op(str, other)
click to toggle source
Return a placeholder literal with the given str and args, wrapped in a boolean expression, used by operators that return booleans.
# File lib/sequel/extensions/pg_json_ops.rb, line 312 def bool_op(str, other) Sequel::SQL::BooleanExpression.new(:NOOP, Sequel::SQL::PlaceholderLiteralString.new(str, [value, other])) end
function_name(name)
click to toggle source
The jsonb type functions are prefixed with jsonb_
# File lib/sequel/extensions/pg_json_ops.rb, line 335 def function_name(name) "jsonb_#{name}" end
wrap_input_array(obj)
click to toggle source
Wrap argument in a PGArray if it is an array
# File lib/sequel/extensions/pg_json_ops.rb, line 317 def wrap_input_array(obj) if obj.is_a?(Array) && Sequel.respond_to?(:pg_array) Sequel.pg_array(obj) else obj end end
wrap_input_jsonb(obj)
click to toggle source
Wrap argument in a JSONBArray or JSONBHash if it is an array or hash.
# File lib/sequel/extensions/pg_json_ops.rb, line 326 def wrap_input_jsonb(obj) if Sequel.respond_to?(:pg_jsonb) && (obj.is_a?(Array) || obj.is_a?(Hash)) Sequel.pg_jsonb(obj) else obj end end