Sequel extends Hash
to add methods
to implement the SQL DSL.
Public Instance methods
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
# File lib/sequel/extensions/core_extensions.rb, line 106 def &(ce) ::Sequel::SQL::BooleanExpression.new(:AND, self, ce) end
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
# File lib/sequel/extensions/core_extensions.rb, line 136 def case(*args) ::Sequel::SQL::CaseExpression.new(to_a, *args) end
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)
# File lib/sequel/extensions/core_extensions.rb, line 146 def sql_expr ::Sequel::SQL::BooleanExpression.from_value_pairs(self) end
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)
# File lib/sequel/extensions/core_extensions.rb, line 155 def sql_negate ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :AND, true) end
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)
# File lib/sequel/extensions/core_extensions.rb, line 164 def sql_or ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR) end
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
# 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)
# File lib/sequel/extensions/core_extensions.rb, line 125 def ~ ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true) end