Refactor getInterfaceAsSql

This commit is contained in:
Jinzhu 2014-11-11 13:36:12 +08:00
parent 828bf5d5fd
commit b32c5badd2
1 changed files with 5 additions and 44 deletions

View File

@ -1,6 +1,6 @@
package gorm
import "strconv"
import "fmt"
type search struct {
db *DB
@ -125,54 +125,15 @@ func (s *search) table(name string) *search {
}
func (s *search) getInterfaceAsSql(value interface{}) (str string) {
var s_num int64
var u_num uint64
var isString, unsigned bool = false, false
switch value.(type) {
case string:
str = value.(string)
isString = true
case int:
s_num = int64(value.(int))
case int8:
s_num = int64(value.(int8))
case int16:
s_num = int64(value.(int16))
case int32:
s_num = int64(value.(int32))
case int64:
s_num = int64(value.(int64))
case uint:
u_num = uint64(value.(uint))
unsigned = true
case uint8:
u_num = uint64(value.(uint8))
unsigned = true
case uint16:
u_num = uint64(value.(uint16))
unsigned = true
case uint32:
u_num = uint64(value.(uint32))
unsigned = true
case uint64:
u_num = uint64(value.(uint64))
unsigned = true
case string, int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
str = fmt.Sprintf("%v", value)
default:
s.db.err(InvalidSql)
}
if !isString {
if unsigned {
str = strconv.FormatUint(u_num, 10)
} else {
if s_num < 0 {
str = ""
} else {
str = strconv.FormatInt(s_num, 10)
}
}
if str == "-1" {
return ""
}
return
}