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

     1  package clause
     2  
     3  type Values struct {
     4  	Columns []Column
     5  	Values  [][]interface{}
     6  }
     7  
     8  // Name from clause name
     9  func (Values) Name() string {
    10  	return "VALUES"
    11  }
    12  
    13  // Build build from clause
    14  func (values Values) Build(builder Builder) {
    15  	if len(values.Columns) > 0 {
    16  		builder.WriteByte('(')
    17  		for idx, column := range values.Columns {
    18  			if idx > 0 {
    19  				builder.WriteByte(',')
    20  			}
    21  			builder.WriteQuoted(column)
    22  		}
    23  		builder.WriteByte(')')
    24  
    25  		builder.WriteString(" VALUES ")
    26  
    27  		for idx, value := range values.Values {
    28  			if idx > 0 {
    29  				builder.WriteByte(',')
    30  			}
    31  
    32  			builder.WriteByte('(')
    33  			builder.AddVar(builder, value...)
    34  			builder.WriteByte(')')
    35  		}
    36  	} else {
    37  		builder.WriteString("DEFAULT VALUES")
    38  	}
    39  }
    40  
    41  // MergeClause merge values clauses
    42  func (values Values) MergeClause(clause *Clause) {
    43  	clause.Name = ""
    44  	clause.Expression = values
    45  }