parent
8439b76875
commit
d9eb2f5f36
12
convert.go
12
convert.go
|
@ -334,3 +334,15 @@ func convertInt(v interface{}) (int64, error) {
|
||||||
}
|
}
|
||||||
return 0, fmt.Errorf("unsupported type: %v", v)
|
return 0, fmt.Errorf("unsupported type: %v", v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func asBool(bs []byte) (bool, error) {
|
||||||
|
if len(bs) == 0 {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
if bs[0] == 0x00 {
|
||||||
|
return false, nil
|
||||||
|
} else if bs[0] == 0x01 {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return strconv.ParseBool(string(bs))
|
||||||
|
}
|
||||||
|
|
|
@ -303,6 +303,7 @@ func (session *Session) rows2Beans(rows *core.Rows, fields []string, fieldsCount
|
||||||
var newValue = newElemFunc(fields)
|
var newValue = newElemFunc(fields)
|
||||||
bean := newValue.Interface()
|
bean := newValue.Interface()
|
||||||
dataStruct := rValue(bean)
|
dataStruct := rValue(bean)
|
||||||
|
|
||||||
// handle beforeClosures
|
// handle beforeClosures
|
||||||
scanResults, err := session.row2Slice(rows, fields, fieldsCount, bean)
|
scanResults, err := session.row2Slice(rows, fields, fieldsCount, bean)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -312,7 +313,6 @@ func (session *Session) rows2Beans(rows *core.Rows, fields []string, fieldsCount
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = sliceValueSetFunc(&newValue, pk)
|
err = sliceValueSetFunc(&newValue, pk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -144,8 +144,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
|
||||||
case reflect.String:
|
case reflect.String:
|
||||||
fieldValue.SetString(string(data))
|
fieldValue.SetString(string(data))
|
||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
d := string(data)
|
v, err := asBool(data)
|
||||||
v, err := strconv.ParseBool(d)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("arg %v as bool: %s", key, err.Error())
|
return fmt.Errorf("arg %v as bool: %s", key, err.Error())
|
||||||
}
|
}
|
||||||
|
|
|
@ -457,10 +457,34 @@ func TestFindMapPtrString(t *testing.T) {
|
||||||
userinfo := testEngine.TableMapper.Obj2Table("Userinfo")
|
userinfo := testEngine.TableMapper.Obj2Table("Userinfo")
|
||||||
var ids []map[string]*string
|
var ids []map[string]*string
|
||||||
err := testEngine.Table(userinfo).Desc("id").Find(&ids)
|
err := testEngine.Table(userinfo).Desc("id").Find(&ids)
|
||||||
if err != nil {
|
assert.NoError(t, err)
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for _, record := range ids {
|
for _, record := range ids {
|
||||||
fmt.Println(record)
|
fmt.Println(record)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFindBit(t *testing.T) {
|
||||||
|
type FindBitStruct struct {
|
||||||
|
Id int64
|
||||||
|
Msg bool `xorm:"bit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.NoError(t, prepareEngine())
|
||||||
|
assertSync(t, new(FindBitStruct))
|
||||||
|
|
||||||
|
cnt, err := testEngine.Insert([]FindBitStruct{
|
||||||
|
{
|
||||||
|
Msg: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Msg: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 2, cnt)
|
||||||
|
|
||||||
|
var results = make([]FindBitStruct, 0, 2)
|
||||||
|
err = testEngine.Find(&results)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 2, len(results))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue