update.go 731 B

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