1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package clause
- type JoinType string
- const (
- CrossJoin JoinType = "CROSS"
- InnerJoin JoinType = "INNER"
- LeftJoin JoinType = "LEFT"
- RightJoin JoinType = "RIGHT"
- )
- // Join join clause for from
- type Join struct {
- Type JoinType
- Table Table
- ON Where
- Using []string
- Expression Expression
- }
- func (join Join) Build(builder Builder) {
- if join.Expression != nil {
- join.Expression.Build(builder)
- } else {
- if join.Type != "" {
- builder.WriteString(string(join.Type))
- builder.WriteByte(' ')
- }
- builder.WriteString("JOIN ")
- builder.WriteQuoted(join.Table)
- if len(join.ON.Exprs) > 0 {
- builder.WriteString(" ON ")
- join.ON.Build(builder)
- } else if len(join.Using) > 0 {
- builder.WriteString(" USING (")
- for idx, c := range join.Using {
- if idx > 0 {
- builder.WriteByte(',')
- }
- builder.WriteQuoted(c)
- }
- builder.WriteByte(')')
- }
- }
- }
|