...

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

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

     1  package exp
     2  
     3  type (
     4  	expressionList struct {
     5  		operator    ExpressionListType
     6  		expressions []Expression
     7  	}
     8  )
     9  
    10  // A list of expressions that should be ORed together
    11  //    Or(I("a").Eq(10), I("b").Eq(11)) //(("a" = 10) OR ("b" = 11))
    12  func NewExpressionList(operator ExpressionListType, expressions ...Expression) ExpressionList {
    13  	el := expressionList{operator: operator}
    14  	exps := make([]Expression, 0, len(el.expressions))
    15  	for _, e := range expressions {
    16  		switch t := e.(type) {
    17  		case ExpressionList:
    18  			if !t.IsEmpty() {
    19  				exps = append(exps, e)
    20  			}
    21  		case Ex:
    22  			if len(t) > 0 {
    23  				exps = append(exps, e)
    24  			}
    25  		case ExOr:
    26  			if len(t) > 0 {
    27  				exps = append(exps, e)
    28  			}
    29  		default:
    30  			exps = append(exps, e)
    31  		}
    32  	}
    33  	el.expressions = exps
    34  	return el
    35  }
    36  
    37  func (el expressionList) Clone() Expression {
    38  	newExps := make([]Expression, 0, len(el.expressions))
    39  	for _, exp := range el.expressions {
    40  		newExps = append(newExps, exp.Clone())
    41  	}
    42  	return expressionList{operator: el.operator, expressions: newExps}
    43  }
    44  
    45  func (el expressionList) Expression() Expression {
    46  	return el
    47  }
    48  
    49  func (el expressionList) IsEmpty() bool {
    50  	return len(el.expressions) == 0
    51  }
    52  
    53  func (el expressionList) Type() ExpressionListType {
    54  	return el.operator
    55  }
    56  
    57  func (el expressionList) Expressions() []Expression {
    58  	return el.expressions
    59  }
    60  
    61  func (el expressionList) Append(expressions ...Expression) ExpressionList {
    62  	exps := make([]Expression, 0, len(el.expressions)+len(expressions))
    63  	exps = append(exps, el.expressions...)
    64  	exps = append(exps, expressions...)
    65  	return NewExpressionList(el.operator, exps...)
    66  }
    67  

View as plain text