Class | Sequel::SQL::CaseExpression |
In: |
lib/sequel/extensions/eval_inspect.rb
lib/sequel/sql.rb |
Parent: | Object |
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 1069 1069: def initialize(conditions, default, expression=(no_expression=true; nil)) 1070: raise(Sequel::Error, 'CaseExpression conditions must be a hash or array of all two pairs') unless Sequel.condition_specifier?(conditions) 1071: @conditions, @default, @expression, @no_expression = conditions.to_a, default, expression, no_expression 1072: end
Whether to use an expression for this CASE expression.
# File lib/sequel/sql.rb, line 1075 1075: def expression? 1076: !@no_expression 1077: end
Merge the CASE expression into the conditions, useful for databases that don‘t support CASE expressions.
# File lib/sequel/sql.rb, line 1081 1081: def with_merged_expression 1082: if expression? 1083: e = expression 1084: CaseExpression.new(conditions.map{|c, r| [::Sequel::SQL::BooleanExpression.new('=''=', e, c), r]}, default) 1085: else 1086: self 1087: end 1088: end