Class: Rooq::CaseExpression

Inherits:
Expression show all
Extended by:
T::Sig
Defined in:
lib/rooq/expression.rb

Overview

CASE WHEN expression

Constant Summary collapse

CasePair =
T.type_alias { [Condition, Expression] }

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Expression

#%, #*, #+, #-, #/, #as, #asc, #between, #desc, #eq, #gt, #gte, #in, #is_not_null, #is_null, #like, #lt, #lte, #ne, #to_sql

Constructor Details

#initializevoid



429
430
431
432
# File 'lib/rooq/expression.rb', line 429

def initialize
  @cases = T.let([], T::Array[CasePair])
  @else_result = T.let(nil, T.nilable(Expression))
end

Instance Attribute Details

#casesArray<CasePair> (readonly)

Returns:



423
424
425
# File 'lib/rooq/expression.rb', line 423

def cases
  @cases
end

#else_resultExpression? (readonly)

Returns:



426
427
428
# File 'lib/rooq/expression.rb', line 426

def else_result
  @else_result
end

Instance Method Details

#else(result) ⇒ CaseExpression

Parameters:

Returns:



443
444
445
446
447
448
449
# File 'lib/rooq/expression.rb', line 443

def else(result)
  new_case = CaseExpression.new
  new_case.instance_variable_set(:@cases, @cases.dup)
  new_case.instance_variable_set(:@else_result, result)
  new_case.freeze
  new_case
end

#when(condition, result) ⇒ CaseExpression

Parameters:

Returns:



435
436
437
438
439
440
# File 'lib/rooq/expression.rb', line 435

def when(condition, result)
  new_case = CaseExpression.new
  new_case.instance_variable_set(:@cases, @cases + [[condition, result]])
  new_case.instance_variable_set(:@else_result, @else_result)
  new_case
end