...

Source file src/github.com/doug-martin/goqu/v9/exp/case.go

Documentation: github.com/doug-martin/goqu/v9/exp

     1  package exp
     2  
     3  type (
     4  	caseElse struct {
     5  		result interface{}
     6  	}
     7  	caseWhen struct {
     8  		caseElse
     9  		condition interface{}
    10  	}
    11  	caseExpression struct {
    12  		value         interface{}
    13  		whens         []CaseWhen
    14  		elseCondition CaseElse
    15  	}
    16  )
    17  
    18  func NewCaseElse(result interface{}) CaseElse {
    19  	return caseElse{result: result}
    20  }
    21  
    22  func (ce caseElse) Result() interface{} {
    23  	return ce.result
    24  }
    25  
    26  func NewCaseWhen(condition, result interface{}) CaseWhen {
    27  	return caseWhen{caseElse: caseElse{result: result}, condition: condition}
    28  }
    29  
    30  func (cw caseWhen) Condition() interface{} {
    31  	return cw.condition
    32  }
    33  
    34  func NewCaseExpression() CaseExpression {
    35  	return caseExpression{value: nil, whens: []CaseWhen{}, elseCondition: nil}
    36  }
    37  
    38  func (c caseExpression) Expression() Expression {
    39  	return c
    40  }
    41  
    42  func (c caseExpression) Clone() Expression {
    43  	return caseExpression{value: c.value, whens: c.whens, elseCondition: c.elseCondition}
    44  }
    45  
    46  func (c caseExpression) As(alias interface{}) AliasedExpression {
    47  	return NewAliasExpression(c, alias)
    48  }
    49  
    50  func (c caseExpression) GetValue() interface{} {
    51  	return c.value
    52  }
    53  
    54  func (c caseExpression) GetWhens() []CaseWhen {
    55  	return c.whens
    56  }
    57  
    58  func (c caseExpression) GetElse() CaseElse {
    59  	return c.elseCondition
    60  }
    61  
    62  func (c caseExpression) Value(value interface{}) CaseExpression {
    63  	c.value = value
    64  	return c
    65  }
    66  
    67  func (c caseExpression) When(condition, result interface{}) CaseExpression {
    68  	c.whens = append(c.whens, NewCaseWhen(condition, result))
    69  	return c
    70  }
    71  
    72  func (c caseExpression) Else(result interface{}) CaseExpression {
    73  	c.elseCondition = NewCaseElse(result)
    74  	return c
    75  }
    76  
    77  func (c caseExpression) Asc() OrderedExpression  { return asc(c) }
    78  func (c caseExpression) Desc() OrderedExpression { return desc(c) }
    79  

View as plain text