github.com/systematiccaos/gorm@v1.22.6/clause/returning.go (about)

     1  package clause
     2  
     3  type Returning struct {
     4  	Columns []Column
     5  }
     6  
     7  // Name where clause name
     8  func (returning Returning) Name() string {
     9  	return "RETURNING"
    10  }
    11  
    12  // Build build where clause
    13  func (returning Returning) Build(builder Builder) {
    14  	if len(returning.Columns) > 0 {
    15  		for idx, column := range returning.Columns {
    16  			if idx > 0 {
    17  				builder.WriteByte(',')
    18  			}
    19  
    20  			builder.WriteQuoted(column)
    21  		}
    22  	} else {
    23  		builder.WriteByte('*')
    24  	}
    25  }
    26  
    27  // MergeClause merge order by clauses
    28  func (returning Returning) MergeClause(clause *Clause) {
    29  	if v, ok := clause.Expression.(Returning); ok {
    30  		returning.Columns = append(v.Columns, returning.Columns...)
    31  	}
    32  
    33  	clause.Expression = returning
    34  }