Class Hash
In: lib/sequel/extensions/pg_json.rb
lib/sequel/extensions/pg_hstore.rb
lib/sequel/extensions/core_extensions.rb
Parent: Object

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

Methods

&   case   hstore   pg_json   pg_jsonb   sql_expr   sql_negate   sql_or   |   ~  

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

[Source]

     # File lib/sequel/extensions/core_extensions.rb, line 106
106:   def &(ce)
107:     ::Sequel::SQL::BooleanExpression.new(:AND, self, ce)
108:   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

[Source]

     # File lib/sequel/extensions/core_extensions.rb, line 136
136:   def case(*args)
137:     ::Sequel::SQL::CaseExpression.new(to_a, *args)
138:   end

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

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 342
342:     def hstore
343:       Sequel::Postgres::HStore.new(self)
344:     end

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.

[Source]

     # File lib/sequel/extensions/pg_json.rb, line 329
329:     def pg_json
330:       Sequel::Postgres::JSONHash.new(self)
331:     end

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.

[Source]

     # File lib/sequel/extensions/pg_json.rb, line 336
336:     def pg_jsonb
337:       Sequel::Postgres::JSONBHash.new(self)
338:     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)

[Source]

     # File lib/sequel/extensions/core_extensions.rb, line 146
146:   def sql_expr
147:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self)
148:   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)

[Source]

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

[Source]

     # File lib/sequel/extensions/core_extensions.rb, line 164
164:   def sql_or
165:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR)
166:   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

[Source]

     # File lib/sequel/extensions/core_extensions.rb, line 116
116:   def |(ce)
117:     ::Sequel::SQL::BooleanExpression.new(:OR, self, ce)
118:   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)

[Source]

     # File lib/sequel/extensions/core_extensions.rb, line 125
125:   def ~
126:     ::Sequel::SQL::BooleanExpression.from_value_pairs(self, :OR, true)
127:   end

[Validate]