Class: Sequel::Postgres::JSONBOp
- Inherits:
-
JSONBaseOp
- Object
- SQL::Expression
- SQL::GenericExpression
- SQL::Wrapper
- JSONBaseOp
- Sequel::Postgres::JSONBOp
- Defined in:
- lib/sequel/extensions/pg_json_ops.rb
Overview
Constant Summary collapse
- CONCAT =
["(".freeze, " || ".freeze, ")".freeze].freeze
- CONTAIN_ALL =
["(".freeze, " ?& ".freeze, ")".freeze].freeze
- CONTAIN_ANY =
["(".freeze, " ?| ".freeze, ")".freeze].freeze
- CONTAINS =
["(".freeze, " @> ".freeze, ")".freeze].freeze
- CONTAINED_BY =
["(".freeze, " <@ ".freeze, ")".freeze].freeze
- DELETE_PATH =
["(".freeze, " #- ".freeze, ")".freeze].freeze
- HAS_KEY =
["(".freeze, " ? ".freeze, ")".freeze].freeze
Constants inherited from JSONBaseOp
Sequel::Postgres::JSONBaseOp::GET, Sequel::Postgres::JSONBaseOp::GET_PATH, Sequel::Postgres::JSONBaseOp::GET_PATH_TEXT, Sequel::Postgres::JSONBaseOp::GET_TEXT
Instance Attribute Summary
Attributes inherited from SQL::Wrapper
Instance Method Summary collapse
-
#-(other) ⇒ Object
jsonb expression for deletion of the given argument from the current jsonb.
-
#concat(other) ⇒ Object
jsonb expression for concatenation of the given jsonb into the current jsonb.
-
#contain_all(other) ⇒ Object
Check if the receiver contains all of the keys in the given array:.
-
#contain_any(other) ⇒ Object
Check if the receiver contains any of the keys in the given array:.
-
#contained_by(other) ⇒ Object
Check if the other jsonb contains all entries in the receiver:.
-
#contains(other) ⇒ Object
Check if the receiver contains all entries in the other jsonb:.
-
#delete_path(other) ⇒ Object
Check if the other jsonb contains all entries in the receiver:.
-
#has_key?(key) ⇒ Boolean
(also: #include?)
Check if the receiver contains the given key:.
-
#pg_jsonb ⇒ Object
Return the receiver, since it is already a JSONBOp.
-
#pretty ⇒ Object
Returns a json value for the object at the given path.
-
#set(path, other, create_missing = true) ⇒ Object
Returns a json value for the object at the given path.
Methods inherited from JSONBaseOp
#[], #array_elements, #array_elements_text, #array_length, #each, #each_text, #extract, #extract_text, #get_text, #keys, #populate, #populate_set, #strip_nulls, #to_record, #to_recordset, #typeof
Methods inherited from SQL::Wrapper
Methods included from HStoreOpMethods
Methods included from RangeOpMethods
Methods included from ArrayOpMethods
Methods included from JSONOpMethods
Methods included from InetOpMethods
Methods included from PGRowOp::ExpressionMethods
Methods included from SQL::SubscriptMethods
Methods included from SQL::StringMethods
Methods included from SQL::PatternMatchMethods
Methods included from SQL::OrderMethods
Methods included from SQL::NumericMethods
Methods included from SQL::ComplexExpressionMethods
#extract, #sql_boolean, #sql_number, #sql_string
Methods included from SQL::CastMethods
#cast, #cast_numeric, #cast_string
Methods included from SQL::BooleanMethods
Methods included from SQL::AliasMethods
Methods inherited from SQL::Expression
#==, attr_reader, #eql?, #hash, inherited, #inspect, #lit, #sql_literal
Constructor Details
This class inherits a constructor from Sequel::SQL::Wrapper
Instance Method Details
#-(other) ⇒ Object
jsonb expression for deletion of the given argument from the current jsonb.
jsonb_op - "a" # (jsonb - 'a')
294 295 296 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 294 def -(other) self.class.new(super) end |
#concat(other) ⇒ Object
jsonb expression for concatenation of the given jsonb into the current jsonb.
jsonb_op.concat(:h) # (jsonb || h)
302 303 304 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 302 def concat(other) json_op(CONCAT, wrap_input_jsonb(other)) end |
#contain_all(other) ⇒ Object
Check if the receiver contains all of the keys in the given array:
jsonb_op.contain_all(:a) # (jsonb ?& a)
309 310 311 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 309 def contain_all(other) bool_op(CONTAIN_ALL, wrap_input_array(other)) end |
#contain_any(other) ⇒ Object
Check if the receiver contains any of the keys in the given array:
jsonb_op.contain_any(:a) # (jsonb ?| a)
316 317 318 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 316 def contain_any(other) bool_op(CONTAIN_ANY, wrap_input_array(other)) end |
#contained_by(other) ⇒ Object
Check if the other jsonb contains all entries in the receiver:
jsonb_op.contained_by(:h) # (jsonb <@ h)
330 331 332 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 330 def contained_by(other) bool_op(CONTAINED_BY, wrap_input_jsonb(other)) end |
#contains(other) ⇒ Object
Check if the receiver contains all entries in the other jsonb:
jsonb_op.contains(:h) # (jsonb @> h)
323 324 325 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 323 def contains(other) bool_op(CONTAINS, wrap_input_jsonb(other)) end |
#delete_path(other) ⇒ Object
Check if the other jsonb contains all entries in the receiver:
jsonb_op.delete_path(:h) # (jsonb #- h)
337 338 339 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 337 def delete_path(other) json_op(DELETE_PATH, wrap_input_array(other)) end |
#has_key?(key) ⇒ Boolean Also known as: include?
Check if the receiver contains the given key:
jsonb_op.has_key?('a') # (jsonb ? 'a')
344 345 346 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 344 def has_key?(key) bool_op(HAS_KEY, key) end |
#pg_jsonb ⇒ Object
Return the receiver, since it is already a JSONBOp.
350 351 352 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 350 def pg_jsonb self end |
#pretty ⇒ Object
Returns a json value for the object at the given path.
jsonb_op.pretty # jsonb_pretty(jsonb)
357 358 359 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 357 def pretty Sequel::SQL::StringExpression.new(:NOOP, function(:pretty)) end |
#set(path, other, create_missing = true) ⇒ Object
Returns a json value for the object at the given path.
jsonb_op.set(['a', 'b'], h) # jsonb_set(jsonb, ARRAY['a', 'b'], h, true)
jsonb_op.set(['a', 'b'], h, false) # jsonb_set(jsonb, ARRAY['a', 'b'], h, false)
365 366 367 |
# File 'lib/sequel/extensions/pg_json_ops.rb', line 365 def set(path, other, create_missing=true) self.class.new(function(:set, wrap_input_array(path), wrap_input_jsonb(other), create_missing)) end |