|
|
// Copyright 2019 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package builder
// InnerJoin sets inner join
func (b *Builder) InnerJoin(joinTable, joinCond interface{}) *Builder { return b.Join("INNER", joinTable, joinCond) }
// LeftJoin sets left join SQL
func (b *Builder) LeftJoin(joinTable, joinCond interface{}) *Builder { return b.Join("LEFT", joinTable, joinCond) }
// RightJoin sets right join SQL
func (b *Builder) RightJoin(joinTable, joinCond interface{}) *Builder { return b.Join("RIGHT", joinTable, joinCond) }
// CrossJoin sets cross join SQL
func (b *Builder) CrossJoin(joinTable, joinCond interface{}) *Builder { return b.Join("CROSS", joinTable, joinCond) }
// FullJoin sets full join SQL
func (b *Builder) FullJoin(joinTable, joinCond interface{}) *Builder { return b.Join("FULL", joinTable, joinCond) }
// Join sets join table and conditions
func (b *Builder) Join(joinType string, joinTable, joinCond interface{}, alias ...string) *Builder { aliasName := "" if len(alias) > 0 { aliasName = alias[0] } switch joinCond.(type) { case Cond: b.joins = append(b.joins, join{ joinType: joinType, joinTable: joinTable, joinCond: joinCond.(Cond), joinAlias: aliasName, }) case string: b.joins = append(b.joins, join{ joinType: joinType, joinTable: joinTable, joinCond: Expr(joinCond.(string)), joinAlias: aliasName, }) }
return b }
|