refactor code

This commit is contained in:
Lunny Xiao 2021-07-19 13:11:22 +08:00
parent b38131c6d4
commit 1d98b1b295
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
1 changed files with 13 additions and 18 deletions

View File

@ -364,25 +364,24 @@ func (session *Session) doPrepare(db *core.DB, sqlStr string) (stmt *core.Stmt,
return return
} }
func (session *Session) getField(dataStruct *reflect.Value, key string, table *schemas.Table, idx int) (*reflect.Value, error) { func (session *Session) getField(dataStruct *reflect.Value, table *schemas.Table, colName string, idx int) (*schemas.Column, *reflect.Value, error) {
var col *schemas.Column var col = table.GetColumnIdx(colName, idx)
if col = table.GetColumnIdx(key, idx); col == nil { if col == nil {
return nil, ErrFieldIsNotExist{key, table.Name} return nil, nil, ErrFieldIsNotExist{colName, table.Name}
} }
fieldValue, err := col.ValueOfV(dataStruct) fieldValue, err := col.ValueOfV(dataStruct)
if err != nil { if err != nil {
return nil, err return nil, nil, err
} }
if fieldValue == nil { if fieldValue == nil {
return nil, ErrFieldIsNotValid{key, table.Name} return nil, nil, ErrFieldIsNotValid{colName, table.Name}
} }
if !fieldValue.IsValid() || !fieldValue.CanSet() { if !fieldValue.IsValid() || !fieldValue.CanSet() {
return nil, ErrFieldIsNotValid{key, table.Name} return nil, nil, ErrFieldIsNotValid{colName, table.Name}
} }
return fieldValue, nil return col, fieldValue, nil
} }
// Cell cell is a result of one column field // Cell cell is a result of one column field
@ -628,9 +627,9 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
var tempMap = make(map[string]int) var tempMap = make(map[string]int)
var pk schemas.PK var pk schemas.PK
for ii, key := range fields { for i, colName := range fields {
var idx int var idx int
var lKey = strings.ToLower(key) var lKey = strings.ToLower(colName)
var ok bool var ok bool
if idx, ok = tempMap[lKey]; !ok { if idx, ok = tempMap[lKey]; !ok {
@ -638,13 +637,9 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
} else { } else {
idx = idx + 1 idx = idx + 1
} }
tempMap[lKey] = idx tempMap[lKey] = idx
col := table.GetColumnIdx(key, idx)
var scanResult = scanResults[ii] col, fieldValue, err := session.getField(dataStruct, table, colName, idx)
fieldValue, err := session.getField(dataStruct, key, table, idx)
if err != nil { if err != nil {
if _, ok := err.(ErrFieldIsNotValid); !ok { if _, ok := err.(ErrFieldIsNotValid); !ok {
session.engine.logger.Warnf("%v", err) session.engine.logger.Warnf("%v", err)
@ -655,11 +650,11 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
continue continue
} }
if err := session.convertBeanField(col, fieldValue, scanResult, table); err != nil { if err := session.convertBeanField(col, fieldValue, scanResults[i], table); err != nil {
return nil, err return nil, err
} }
if col.IsPrimaryKey { if col.IsPrimaryKey {
pk = append(pk, scanResult) pk = append(pk, scanResults[i])
} }
} }
return pk, nil return pk, nil