update vendor

This commit is contained in:
Qiu Jian
2018-12-10 11:16:34 +08:00
parent 5759bf872a
commit f4e3201b3a
4 changed files with 29 additions and 12 deletions

9
Gopkg.lock generated
View File

@@ -1368,19 +1368,19 @@
[[projects]]
branch = "master"
digest = "1:35bcee3fd56603e5a4900825378bf75a81f30cf94b43a575841772eaed5963a0"
digest = "1:2fdf064ae928c1b311e67ec51e856ce655abc39e8eacf5e6b3f7bd0417fac0a6"
name = "yunion.io/x/sqlchemy"
packages = ["."]
pruneopts = "UT"
revision = "75c341b1221002e2aa33b13c5de2a75196dfe233"
revision = "e22221d5efcc667e68b0fdeed19958e788c3ad63"
[[projects]]
branch = "master"
digest = "1:bbaf572e68e5dad4045e1e424af29838882c620df391fa1631dd8dc851c87a95"
digest = "1:97c47d46b272f535bc6760672a3dd4512bf66fb4463cb70547178e21cf9078f7"
name = "yunion.io/x/structarg"
packages = ["."]
pruneopts = "UT"
revision = "c95bf78846decd8dea379e925410f2895fb20076"
revision = "1a162c0cfa82905f20a795e9ac530bf27f9a0549"
[solve-meta]
analyzer-name = "dep"
@@ -1434,6 +1434,7 @@
"github.com/coredns/coredns/request",
"github.com/fatih/color",
"github.com/go-sql-driver/mysql",
"github.com/golang-plus/errors",
"github.com/golang-plus/uuid",
"github.com/googollee/go-socket.io",
"github.com/gorilla/mux",

View File

@@ -177,7 +177,7 @@ type SIsNotEmptyCondition struct {
}
func (c *SIsNotEmptyCondition) WhereClause() string {
return fmt.Sprintf("LENGTH(%s) > 0", c.field.Reference())
return fmt.Sprintf("%s IS NOT NULL AND LENGTH(%s) > 0", c.field.Reference(), c.field.Reference())
}
func IsNotEmpty(f IQueryField) ICondition {

View File

@@ -38,8 +38,14 @@ func NewFunctionField(name string, funcexp string, fields ...IQueryField) SFunct
return ff
}
func COUNT(name string) IQueryField {
ff := NewFunctionField(name, "COUNT(*)")
func COUNT(name string, field ...IQueryField) IQueryField {
var expr string
if len(field) == 0 {
expr = "COUNT(*)"
} else {
expr = "COUNT(%s)"
}
ff := NewFunctionField(name, expr, field...)
return &ff
}

View File

@@ -87,7 +87,7 @@ func NewArgumentParser(target interface{}, prog, desc, epilog string) (*Argument
epilog: epilog, target: target}
target_type := reflect.TypeOf(target).Elem()
target_value := reflect.ValueOf(target).Elem()
e := parser.addStructArgument(target_type, target_value)
e := parser.addStructArgument("", target_type, target_value)
if e != nil {
return nil, e
}
@@ -165,7 +165,7 @@ const (
TAG_ALIAS = "alias"
)
func (this *ArgumentParser) addStructArgument(tp reflect.Type, val reflect.Value) error {
func (this *ArgumentParser) addStructArgument(prefix string, tp reflect.Type, val reflect.Value) error {
for i := 0; i < tp.NumField(); i++ {
v := val.Field(i)
if !v.CanSet() {
@@ -173,12 +173,16 @@ func (this *ArgumentParser) addStructArgument(tp reflect.Type, val reflect.Value
}
f := tp.Field(i)
if f.Type.Kind() == reflect.Struct {
e := this.addStructArgument(f.Type, v)
p := prefix
if !f.Anonymous {
p += f.Name + "-"
}
e := this.addStructArgument(p, f.Type, v)
if e != nil {
return e
}
} else {
e := this.addArgument(f, v)
e := this.addArgument(prefix, f, v)
if e != nil {
return e
}
@@ -187,13 +191,14 @@ func (this *ArgumentParser) addStructArgument(tp reflect.Type, val reflect.Value
return nil
}
func (this *ArgumentParser) addArgument(f reflect.StructField, v reflect.Value) error {
func (this *ArgumentParser) addArgument(prefix string, f reflect.StructField, v reflect.Value) error {
tagMap := utils.TagMap(f.Tag)
help := tagMap[TAG_HELP]
token, ok := tagMap[TAG_TOKEN]
if !ok {
token = f.Name
}
token = prefix + token
shorttoken := tagMap[TAG_SHORT_TOKEN]
alias := tagMap[TAG_ALIAS]
metavar := tagMap[TAG_METAVAR]
@@ -344,6 +349,11 @@ func (this *ArgumentParser) AddArgument(arg Argument) error {
}
this.posArgs = append(this.posArgs, arg)
} else {
for _, argOld := range this.optArgs {
if argOld.Token() == arg.Token() {
return fmt.Errorf("Duplicate argument %s", argOld.Token())
}
}
// Put required at the end and try to be stable
if arg.IsRequired() {
this.optArgs = append(this.optArgs, arg)