forked from forgejo/forgejo
Fix label count (#8267)
* fix label count * fix vendor * fix import order * update xorm to fix bug * fix tests * fix mssql bug
This commit is contained in:
parent
7cccada51e
commit
29dda47cbb
38 changed files with 959 additions and 580 deletions
113
vendor/xorm.io/builder/builder.go
generated
vendored
113
vendor/xorm.io/builder/builder.go
generated
vendored
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue