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] | An optional expression to test the conditions against |
Create an object with the given conditions and default value, and optional expression. 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 1142 1142: def initialize(conditions, default, expression=(no_expression=true; nil)) 1143: raise(Sequel::Error, 'CaseExpression conditions must be a hash or array of all two pairs') unless Sequel.condition_specifier?(conditions) 1144: @conditions = conditions.to_a.dup.freeze 1145: @default = default 1146: @expression = expression 1147: @no_expression = no_expression 1148: freeze 1149: end
Whether to use an expression for this CASE expression.
# File lib/sequel/sql.rb, line 1152 1152: def expression? 1153: !@no_expression 1154: end
Merge the CASE expression into the conditions, useful for databases that don‘t support CASE expressions.
# File lib/sequel/sql.rb, line 1158 1158: def with_merged_expression 1159: if expression? 1160: e = expression 1161: CaseExpression.new(conditions.map{|c, r| [::Sequel::SQL::BooleanExpression.new('=''=', e, c), r]}, default) 1162: else 1163: self 1164: end 1165: end