Class: Hash
- Defined in:
- lib/sequel/extensions/core_extensions.rb,
lib/sequel/extensions/pg_json.rb,
lib/sequel/extensions/pg_hstore.rb
Overview
Sequel extends Hash
to add methods to implement the SQL DSL.
Direct Known Subclasses
Sequel::Model::Associations::AssociationReflection, Sequel::Model::Errors, Sequel::Postgres::HStore, Sequel::Postgres::JSONHashBase, Sequel::Postgres::PGRow::HashRow
Instance Method Summary collapse
-
#&(ce) ⇒ Object
Return a
Sequel::SQL::BooleanExpression
created from this hash, matching all of the conditions in this hash and the condition specified by the given argument. -
#case(*args) ⇒ Object
Return a
Sequel::SQL::CaseExpression
with this hash as the conditions and the given default value. -
#hstore ⇒ Object
Create a new HStore using the receiver as the input hash.
-
#pg_json ⇒ Object
Return a Sequel::Postgres::JSONHash proxy to the receiver.
-
#pg_jsonb ⇒ Object
Return a Sequel::Postgres::JSONHash proxy to the receiver.
-
#sql_expr ⇒ Object
Return a
Sequel::SQL::BooleanExpression
created from this hash, matching all of the conditions. -
#sql_negate ⇒ Object
Return a
Sequel::SQL::BooleanExpression
created from this hash, matching none of the conditions. -
#sql_or ⇒ Object
Return a
Sequel::SQL::BooleanExpression
created from this hash, matching any of the conditions. -
#|(ce) ⇒ Object
Return a
Sequel::SQL::BooleanExpression
created from this hash, matching all of the conditions in this hash or the condition specified by the given argument. -
#~ ⇒ Object
Return a
Sequel::SQL::BooleanExpression
created from this hash, not matching all of the conditions.
Instance Method Details
#&(ce) ⇒ Object
Return a Sequel::SQL::BooleanExpression
created from this hash, matching all of the conditions in this hash and the condition specified by the given argument.
{:a=>1} & :b # SQL: a = 1 AND b
{:a=>true} & ~:b # SQL: a IS TRUE AND NOT b
104 105 106 |
# File 'lib/sequel/extensions/core_extensions.rb', line 104 def &(ce) ::Sequel::SQL::BooleanExpression.new(:AND, self, ce) end |
#case(*args) ⇒ Object
Return a Sequel::SQL::CaseExpression
with this hash as the conditions and the given default value. Note that the order of the conditions will be arbitrary on ruby 1.8, so all conditions should be orthogonal.
{{:a=>[2,3]}=>1}.case(0) # SQL: CASE WHEN a IN (2, 3) THEN 1 ELSE 0 END
{:a=>1, :b=>2}.case(:d, :c) # SQL: CASE c WHEN a THEN 1 WHEN b THEN 2 ELSE d END
# or: CASE c WHEN b THEN 2 WHEN a THEN 1 ELSE d END
134 135 136 |
# File 'lib/sequel/extensions/core_extensions.rb', line 134 def case(*args) ::Sequel::SQL::CaseExpression.new(to_a, *args) end |
#hstore ⇒ Object
Create a new HStore using the receiver as the input hash. Note that the HStore created will not use the receiver as the backing store, since it has to modify the hash. To get the new backing store, use:
hash.hstore.to_hash
342 343 344 |
# File 'lib/sequel/extensions/pg_hstore.rb', line 342 def hstore Sequel::Postgres::HStore.new(self) end |
#pg_json ⇒ Object
Return a Sequel::Postgres::JSONHash proxy to the receiver. This is mostly useful as a short cut for creating JSONHash objects that didn’t come from the database.
331 332 333 |
# File 'lib/sequel/extensions/pg_json.rb', line 331 def pg_json Sequel::Postgres::JSONHash.new(self) end |
#pg_jsonb ⇒ Object
Return a Sequel::Postgres::JSONHash proxy to the receiver. This is mostly useful as a short cut for creating JSONHash objects that didn’t come from the database.
338 339 340 |
# File 'lib/sequel/extensions/pg_json.rb', line 338 def pg_jsonb Sequel::Postgres::JSONBHash.new(self) end |
#sql_expr ⇒ Object
Return a Sequel::SQL::BooleanExpression
created from this hash, matching all of the conditions. Rarely do you need to call this explicitly, as Sequel generally assumes that hashes specify this type of condition.
{:a=>true}.sql_expr # SQL: a IS TRUE
{:a=>1, :b=>[2, 3]}.sql_expr # SQL: a = 1 AND b IN (2, 3)
144 145 146 |
# File 'lib/sequel/extensions/core_extensions.rb', line 144 def sql_expr ::Sequel::SQL::BooleanExpression.from_value_pairs(self) end |
#sql_negate ⇒ Object
Return a Sequel::SQL::BooleanExpression
created from this hash, matching none of the conditions.
{:a=>true}.sql_negate # SQL: a IS NOT TRUE
{:a=>1, :b=>[2, 3]}.sql_negate # SQL: a != 1 AND b NOT IN (2, 3)
153 154 155 |
# File 'lib/sequel/extensions/core_extensions.rb', line 153 def sql_negate ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true) end |
#sql_or ⇒ Object
Return a Sequel::SQL::BooleanExpression
created from this hash, matching any of the conditions.
{:a=>true}.sql_or # SQL: a IS TRUE
{:a=>1, :b=>[2, 3]}.sql_or # SQL: a = 1 OR b IN (2, 3)
162 163 164 |
# File 'lib/sequel/extensions/core_extensions.rb', line 162 def sql_or ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR) end |
#|(ce) ⇒ Object
Return a Sequel::SQL::BooleanExpression
created from this hash, matching all of the conditions in this hash or the condition specified by the given argument.
{:a=>1} | :b # SQL: a = 1 OR b
{:a=>true} | ~:b # SQL: a IS TRUE OR NOT b
114 115 116 |
# File 'lib/sequel/extensions/core_extensions.rb', line 114 def |(ce) ::Sequel::SQL::BooleanExpression.new(:OR, self, ce) end |
#~ ⇒ Object
Return a Sequel::SQL::BooleanExpression
created from this hash, not matching all of the conditions.
~{:a=>true} # SQL: a IS NOT TRUE
~{:a=>1, :b=>[2, 3]} # SQL: a != 1 OR b NOT IN (2, 3)
123 124 125 |
# File 'lib/sequel/extensions/core_extensions.rb', line 123 def ~ ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true) end |