class Hash

  1. lib/sequel/extensions/core_extensions.rb
  2. lib/sequel/extensions/pg_hstore.rb
  3. lib/sequel/extensions/pg_json.rb
  4. show all

Sequel extends Hash to add methods to implement the SQL DSL.

Methods

Public Instance

  1. &
  2. case
  3. hstore
  4. pg_json
  5. sql_expr
  6. sql_negate
  7. sql_or
  8. |
  9. ~

Public Instance methods

& (ce)

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
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 106
def &(ce)
  ::Sequel::SQL::BooleanExpression.new(:AND, self, ce)
end
case (*args)

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
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 136
def case(*args)
  ::Sequel::SQL::CaseExpression.new(to_a, *args)
end
hstore ()

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
[show source]
# File lib/sequel/extensions/pg_hstore.rb, line 341
def hstore
  Sequel::Postgres::HStore.new(self)
end
pg_json ()

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.

[show source]
# File lib/sequel/extensions/pg_json.rb, line 227
def pg_json
  Sequel::Postgres::JSONHash.new(self)
end
sql_expr ()

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)
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 146
def sql_expr
  ::Sequel::SQL::BooleanExpression.from_value_pairs(self)
end
sql_negate ()

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)
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 155
def sql_negate
  ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true)
end
sql_or ()

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)
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 164
def sql_or
  ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR)
end
| (ce)

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
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 116
def |(ce)
  ::Sequel::SQL::BooleanExpression.new(:OR, self, ce)
end
~ ()

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)
[show source]
# File lib/sequel/extensions/core_extensions.rb, line 125
def ~
  ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true)
end