diff options
Diffstat (limited to 'vendor/xorm.io/builder/builder.go')
-rw-r--r-- | vendor/xorm.io/builder/builder.go | 113 |
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) } |