from.go 630 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package clause
  2. // From from clause
  3. type From struct {
  4. Tables []Table
  5. Joins []Join
  6. }
  7. // Name from clause name
  8. func (from From) Name() string {
  9. return "FROM"
  10. }
  11. // Build build from clause
  12. func (from From) Build(builder Builder) {
  13. if len(from.Tables) > 0 {
  14. for idx, table := range from.Tables {
  15. if idx > 0 {
  16. builder.WriteByte(',')
  17. }
  18. builder.WriteQuoted(table)
  19. }
  20. } else {
  21. builder.WriteQuoted(currentTable)
  22. }
  23. for _, join := range from.Joins {
  24. builder.WriteByte(' ')
  25. join.Build(builder)
  26. }
  27. }
  28. // MergeClause merge from clause
  29. func (from From) MergeClause(clause *Clause) {
  30. clause.Expression = from
  31. }