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

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