Class | Sequel::SQL::CaseExpression |
In: |
lib/sequel/sql.rb
lib/sequel/extensions/eval_inspect.rb |
Parent: | GenericExpression |
conditions | [R] | An array of all two pairs with the first element specifying the condition and the second element specifying the result if the condition matches. |
default | [R] | The default value if no conditions match. |
expression | [R] | The expression to test the conditions against |
Create an object with the given conditions and default value. An expression can be provided to test each condition against, instead of having all conditions represent their own boolean expression.
# File lib/sequel/sql.rb, line 1093 1093: def initialize(conditions, default, expression=(no_expression=true; nil)) 1094: raise(Sequel::Error, 'CaseExpression conditions must be a hash or array of all two pairs') unless Sequel.condition_specifier?(conditions) 1095: @conditions, @default, @expression, @no_expression = conditions.to_a, default, expression, no_expression 1096: end
Whether to use an expression for this CASE expression.
# File lib/sequel/sql.rb, line 1099 1099: def expression? 1100: !@no_expression 1101: end
Merge the CASE expression into the conditions, useful for databases that don‘t support CASE expressions.
# File lib/sequel/sql.rb, line 1105 1105: def with_merged_expression 1106: if expression? 1107: e = expression 1108: CaseExpression.new(conditions.map{|c, r| [::Sequel::SQL::BooleanExpression.new('=''=', e, c), r]}, default) 1109: else 1110: self 1111: end 1112: end