Compare commits

..

No commits in common. 'master' and 'v1.1.2' have entirely different histories.

@ -26,9 +26,7 @@ func (star *StarRows) setAllRefValue(stc interface{}, skey string, rows int) err
tp := t.Field(i) tp := t.Field(i)
srFrd := v.Field(i) srFrd := v.Field(i)
seg := tp.Tag.Get(skey) seg := tp.Tag.Get(skey)
if seg == "" && !tp.IsExported() {
continue
}
if srFrd.Kind() == reflect.Ptr && reflect.TypeOf(srFrd.Interface()).Elem().Kind() == reflect.Struct { if srFrd.Kind() == reflect.Ptr && reflect.TypeOf(srFrd.Interface()).Elem().Kind() == reflect.Struct {
if seg == "" { if seg == "" {
continue continue
@ -51,6 +49,9 @@ func (star *StarRows) setAllRefValue(stc interface{}, skey string, rows int) err
continue continue
} }
} }
if seg == "" {
continue
}
if _, ok := star.Row(rows).columnref[seg]; !ok { if _, ok := star.Row(rows).columnref[seg]; !ok {
continue continue
} }
@ -81,10 +82,6 @@ func (star *StarRows) setAllRefValue(stc interface{}, skey string, rows int) err
v.Field(i).SetFloat(star.Row(rows).MustFloat64(seg)) v.Field(i).SetFloat(star.Row(rows).MustFloat64(seg))
case reflect.Float32: case reflect.Float32:
v.Field(i).SetFloat(float64(star.Row(rows).MustFloat32(seg))) v.Field(i).SetFloat(float64(star.Row(rows).MustFloat32(seg)))
case reflect.Slice, reflect.Array:
if t.Field(i).Type.Elem().Kind() == reflect.Uint8 {
v.Field(i).SetBytes(star.Row(rows).MustBytes(seg))
}
case reflect.Interface, reflect.Struct, reflect.Ptr: case reflect.Interface, reflect.Struct, reflect.Ptr:
inf := star.Row(rows).Result[star.columnref[seg]] inf := star.Row(rows).Result[star.columnref[seg]]
switch vtype := inf.(type) { switch vtype := inf.(type) {
@ -137,9 +134,6 @@ func getAllRefValue(stc interface{}, skey string) (map[string]interface{}, error
tp := t.Field(i) tp := t.Field(i)
srFrd := v.Field(i) srFrd := v.Field(i)
seg := tp.Tag.Get(skey) seg := tp.Tag.Get(skey)
if seg == "" && !tp.IsExported() {
continue
}
if srFrd.Kind() == reflect.Ptr && reflect.TypeOf(srFrd.Interface()).Elem().Kind() == reflect.Struct { if srFrd.Kind() == reflect.Ptr && reflect.TypeOf(srFrd.Interface()).Elem().Kind() == reflect.Struct {
if srFrd.IsNil() { if srFrd.IsNil() {
continue continue
@ -198,9 +192,6 @@ func getAllRefKey(stc interface{}, skey string) ([]string, error) {
srFrd := v.Field(i) srFrd := v.Field(i)
profile := t.Field(i) profile := t.Field(i)
seg := profile.Tag.Get(skey) seg := profile.Tag.Get(skey)
if seg == "" && !profile.IsExported() {
continue
}
if srFrd.Kind() == reflect.Ptr && reflect.TypeOf(srFrd.Interface()).Elem().Kind() == reflect.Struct { if srFrd.Kind() == reflect.Ptr && reflect.TypeOf(srFrd.Interface()).Elem().Kind() == reflect.Struct {
if srFrd.IsNil() { if srFrd.IsNil() {
continue continue

@ -9,7 +9,6 @@ type Useless struct {
Leader string `db:"leader"` Leader string `db:"leader"`
Usable bool `db:"use"` Usable bool `db:"use"`
O *Whoami `db:"---"` O *Whoami `db:"---"`
Data []byte `db:"data"`
} }
type Whoami struct { type Whoami struct {
@ -30,15 +29,10 @@ func TestUpInOrm(t *testing.T) {
func Test_SetRefVal(t *testing.T) { func Test_SetRefVal(t *testing.T) {
var hehe = Useless{ var hehe = Useless{
Leader: "no", Leader: "no",
Data: []byte{1, 2, 3},
} }
fmt.Printf("%+v\n", hehe) fmt.Printf("%+v\n", hehe)
fmt.Println(setRefValue(&hehe, "db", "leader", "sb")) fmt.Println(setRefValue(&hehe, "db", "leader", "sb"))
fmt.Printf("%+v\n", hehe) fmt.Printf("%+v\n", hehe)
fmt.Println(getAllRefKey(hehe, "db"))
fmt.Println(getAllRefValue(hehe, "db"))
fmt.Println(setRefValue(&hehe, "db", "data", []byte{4, 5, 6, 7, 8}))
fmt.Printf("%+v\n", hehe) fmt.Printf("%+v\n", hehe)
fmt.Println(getAllRefKey(hehe, "db")) fmt.Println(getAllRefKey(hehe, "db"))
fmt.Println(getAllRefValue(hehe, "db")) fmt.Println(getAllRefValue(hehe, "db"))

Loading…
Cancel
Save