...

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

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

     1  package exp
     2  
     3  type sqlWindowExpression struct {
     4  	name          IdentifierExpression
     5  	parent        IdentifierExpression
     6  	partitionCols ColumnListExpression
     7  	orderCols     ColumnListExpression
     8  }
     9  
    10  func NewWindowExpression(window, parent IdentifierExpression, partitionCols, orderCols ColumnListExpression) WindowExpression {
    11  	if partitionCols == nil {
    12  		partitionCols = NewColumnListExpression()
    13  	}
    14  	if orderCols == nil {
    15  		orderCols = NewColumnListExpression()
    16  	}
    17  	return sqlWindowExpression{
    18  		name:          window,
    19  		parent:        parent,
    20  		partitionCols: partitionCols,
    21  		orderCols:     orderCols,
    22  	}
    23  }
    24  
    25  func (we sqlWindowExpression) clone() sqlWindowExpression {
    26  	return sqlWindowExpression{
    27  		name:          we.name,
    28  		parent:        we.parent,
    29  		partitionCols: we.partitionCols.Clone().(ColumnListExpression),
    30  		orderCols:     we.orderCols.Clone().(ColumnListExpression),
    31  	}
    32  }
    33  
    34  func (we sqlWindowExpression) Clone() Expression {
    35  	return we.clone()
    36  }
    37  
    38  func (we sqlWindowExpression) Expression() Expression {
    39  	return we
    40  }
    41  
    42  func (we sqlWindowExpression) Name() IdentifierExpression {
    43  	return we.name
    44  }
    45  
    46  func (we sqlWindowExpression) HasName() bool {
    47  	return we.name != nil
    48  }
    49  
    50  func (we sqlWindowExpression) Parent() IdentifierExpression {
    51  	return we.parent
    52  }
    53  
    54  func (we sqlWindowExpression) HasParent() bool {
    55  	return we.parent != nil
    56  }
    57  
    58  func (we sqlWindowExpression) PartitionCols() ColumnListExpression {
    59  	return we.partitionCols
    60  }
    61  
    62  func (we sqlWindowExpression) HasPartitionBy() bool {
    63  	return we.partitionCols != nil && !we.partitionCols.IsEmpty()
    64  }
    65  
    66  func (we sqlWindowExpression) OrderCols() ColumnListExpression {
    67  	return we.orderCols
    68  }
    69  
    70  func (we sqlWindowExpression) HasOrder() bool {
    71  	return we.orderCols != nil && !we.orderCols.IsEmpty()
    72  }
    73  
    74  func (we sqlWindowExpression) PartitionBy(cols ...interface{}) WindowExpression {
    75  	ret := we.clone()
    76  	ret.partitionCols = NewColumnListExpression(cols...)
    77  	return ret
    78  }
    79  
    80  func (we sqlWindowExpression) OrderBy(cols ...interface{}) WindowExpression {
    81  	ret := we.clone()
    82  	ret.orderCols = NewColumnListExpression(cols...)
    83  	return ret
    84  }
    85  
    86  func (we sqlWindowExpression) Inherit(parent string) WindowExpression {
    87  	ret := we.clone()
    88  	ret.parent = ParseIdentifier(parent)
    89  	return ret
    90  }
    91  

View as plain text