Join add struct support

This commit is contained in:
Lunny Xiao 2018-04-08 17:21:58 +08:00
parent 84d678f941
commit c3b84c6ae2
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
1 changed files with 15 additions and 6 deletions

View File

@ -766,12 +766,13 @@ func (statement *Statement) Join(joinOP string, tablename interface{}, condition
var table string
if l > 0 {
f := t[0]
v := rValue(f)
t := v.Type()
if t.Kind() == reflect.String {
switch f.(type) {
case string:
table = f.(string)
} else if t.Kind() == reflect.Struct {
table = statement.Engine.tbName(v)
case TableName:
table = f.(TableName).TableName()
default:
// FIXME: error
}
}
if l > 1 {
@ -782,8 +783,16 @@ func (statement *Statement) Join(joinOP string, tablename interface{}, condition
}
case TableName:
fmt.Fprintf(&buf, tablename.(TableName).TableName())
case string:
fmt.Fprintf(&buf, tablename.(string))
default:
fmt.Fprintf(&buf, statement.Engine.Quote(fmt.Sprintf("%v", tablename)))
v := rValue(tablename)
t := v.Type()
if t.Kind() == reflect.Struct {
fmt.Fprintf(&buf, statement.Engine.tbName(v))
} else {
fmt.Fprintf(&buf, statement.Engine.Quote(fmt.Sprintf("%v", tablename)))
}
}
fmt.Fprintf(&buf, " ON %v", condition)