summaryrefslogtreecommitdiffstats
path: root/vendor/xorm.io/builder/builder.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/xorm.io/builder/builder.go')
-rw-r--r--vendor/xorm.io/builder/builder.go113
1 files changed, 10 insertions, 103 deletions
diff --git a/vendor/xorm.io/builder/builder.go b/vendor/xorm.io/builder/builder.go
index ffe86d4dcb..4f14222843 100644
--- a/vendor/xorm.io/builder/builder.go
+++ b/vendor/xorm.io/builder/builder.go
@@ -7,7 +7,6 @@ package builder
import (
sql2 "database/sql"
"fmt"
- "sort"
)
type optype byte
@@ -21,6 +20,7 @@ const (
unionType // union
)
+// all databasees
const (
POSTGRES = "postgres"
SQLITE = "sqlite3"
@@ -31,7 +31,7 @@ const (
type join struct {
joinType string
- joinTable string
+ joinTable interface{}
joinCond Cond
}
@@ -60,7 +60,7 @@ type Builder struct {
limitation *limit
insertCols []string
insertVals []interface{}
- updates []Eq
+ updates []UpdateCond
orderBy string
groupBy string
having string
@@ -143,18 +143,6 @@ func (b *Builder) Into(tableName string) *Builder {
return b
}
-// Join sets join table and conditions
-func (b *Builder) Join(joinType, joinTable string, 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
-}
-
// Union sets union conditions
func (b *Builder) Union(unionTp string, unionCond *Builder) *Builder {
var builder *Builder
@@ -199,31 +187,6 @@ func (b *Builder) Limit(limitN int, offset ...int) *Builder {
return b
}
-// InnerJoin sets inner join
-func (b *Builder) InnerJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("INNER", joinTable, joinCond)
-}
-
-// LeftJoin sets left join SQL
-func (b *Builder) LeftJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("LEFT", joinTable, joinCond)
-}
-
-// RightJoin sets right join SQL
-func (b *Builder) RightJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("RIGHT", joinTable, joinCond)
-}
-
-// CrossJoin sets cross join SQL
-func (b *Builder) CrossJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("CROSS", joinTable, joinCond)
-}
-
-// FullJoin sets full join SQL
-func (b *Builder) FullJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("FULL", joinTable, joinCond)
-}
-
// Select sets select SQL
func (b *Builder) Select(cols ...string) *Builder {
b.selects = cols
@@ -245,68 +208,12 @@ func (b *Builder) Or(cond Cond) *Builder {
return b
}
-type insertColsSorter struct {
- cols []string
- vals []interface{}
-}
-
-func (s insertColsSorter) Len() int {
- return len(s.cols)
-}
-func (s insertColsSorter) Swap(i, j int) {
- s.cols[i], s.cols[j] = s.cols[j], s.cols[i]
- s.vals[i], s.vals[j] = s.vals[j], s.vals[i]
-}
-
-func (s insertColsSorter) Less(i, j int) bool {
- return s.cols[i] < s.cols[j]
-}
-
-// Insert sets insert SQL
-func (b *Builder) Insert(eq ...interface{}) *Builder {
- if len(eq) > 0 {
- var paramType = -1
- for _, e := range eq {
- switch t := e.(type) {
- case Eq:
- if paramType == -1 {
- paramType = 0
- }
- if paramType != 0 {
- break
- }
- for k, v := range t {
- b.insertCols = append(b.insertCols, k)
- b.insertVals = append(b.insertVals, v)
- }
- case string:
- if paramType == -1 {
- paramType = 1
- }
- if paramType != 1 {
- break
- }
- b.insertCols = append(b.insertCols, t)
- }
- }
- }
-
- if len(b.insertCols) == len(b.insertVals) {
- sort.Sort(insertColsSorter{
- cols: b.insertCols,
- vals: b.insertVals,
- })
- }
- b.optype = insertType
- return b
-}
-
// Update sets update SQL
-func (b *Builder) Update(updates ...Eq) *Builder {
- b.updates = make([]Eq, 0, len(updates))
+func (b *Builder) Update(updates ...Cond) *Builder {
+ b.updates = make([]UpdateCond, 0, len(updates))
for _, update := range updates {
- if update.IsValid() {
- b.updates = append(b.updates, update)
+ if u, ok := update.(UpdateCond); ok && u.IsValid() {
+ b.updates = append(b.updates, u)
}
}
b.optype = updateType
@@ -354,7 +261,7 @@ func (b *Builder) ToSQL() (string, []interface{}, error) {
}
}
- var sql = w.writer.String()
+ var sql = w.String()
var err error
switch b.dialect {
@@ -383,12 +290,12 @@ func (b *Builder) ToSQL() (string, []interface{}, error) {
return sql, w.args, nil
}
-// ToBoundSQL
+// ToBoundSQL generated a bound SQL string
func (b *Builder) ToBoundSQL() (string, error) {
w := NewWriter()
if err := b.WriteTo(w); err != nil {
return "", err
}
- return ConvertToBoundSQL(w.writer.String(), w.args)
+ return ConvertToBoundSQL(w.String(), w.args)
}