insert.go 755 B

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