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

     1  package clause
     2  
     3  type Update struct {
     4  	Modifier string
     5  	Table    Table
     6  }
     7  
     8  // Name update clause name
     9  func (update Update) Name() string {
    10  	return "UPDATE"
    11  }
    12  
    13  // Build build update clause
    14  func (update Update) Build(builder Builder) {
    15  	if update.Modifier != "" {
    16  		builder.WriteString(update.Modifier)
    17  		builder.WriteByte(' ')
    18  	}
    19  
    20  	if update.Table.Name == "" {
    21  		builder.WriteQuoted(currentTable)
    22  	} else {
    23  		builder.WriteQuoted(update.Table)
    24  	}
    25  }
    26  
    27  // MergeClause merge update clause
    28  func (update Update) MergeClause(clause *Clause) {
    29  	if v, ok := clause.Expression.(Update); ok {
    30  		if update.Modifier == "" {
    31  			update.Modifier = v.Modifier
    32  		}
    33  		if update.Table.Name == "" {
    34  			update.Table = v.Table
    35  		}
    36  	}
    37  	clause.Expression = update
    38  }