summaryrefslogtreecommitdiffstats
path: root/vendor/xorm.io/builder/builder_join.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/xorm.io/builder/builder_join.go')
-rw-r--r--vendor/xorm.io/builder/builder_join.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/xorm.io/builder/builder_join.go b/vendor/xorm.io/builder/builder_join.go
new file mode 100644
index 0000000000..a6604c5f6e
--- /dev/null
+++ b/vendor/xorm.io/builder/builder_join.go
@@ -0,0 +1,42 @@
+// 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{}) *Builder {
+ switch joinCond.(type) {
+ case Cond:
+ b.joins = append(b.joins, join{joinType, joinTable, joinCond.(Cond)})
+ case string:
+ b.joins = append(b.joins, join{joinType, joinTable, Expr(joinCond.(string))})
+ }
+
+ return b
+}