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