orm fix 1. support Limit when use QuerySeter.One 2. return Local time
Showing
1 changed file
with
9 additions
and
8 deletions
| ... | @@ -497,15 +497,15 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi | ... | @@ -497,15 +497,15 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi |
| 497 | } | 497 | } |
| 498 | 498 | ||
| 499 | if errTyp { | 499 | if errTyp { |
| 500 | panic(fmt.Sprintf("wrong object type `%s` for rows scan, need *[]*%s or *%s", ind.Type(), mi.fullName, mi.fullName)) | 500 | if one { |
| 501 | panic(fmt.Sprintf("wrong object type `%s` for rows scan, need *%s", val.Type(), mi.fullName)) | ||
| 502 | } else { | ||
| 503 | panic(fmt.Sprintf("wrong object type `%s` for rows scan, need *[]*%s or *[]%s", val.Type(), mi.fullName, mi.fullName)) | ||
| 504 | } | ||
| 501 | } | 505 | } |
| 502 | 506 | ||
| 503 | rlimit := qs.limit | 507 | rlimit := qs.limit |
| 504 | offset := qs.offset | 508 | offset := qs.offset |
| 505 | if one { | ||
| 506 | rlimit = 0 | ||
| 507 | offset = 0 | ||
| 508 | } | ||
| 509 | 509 | ||
| 510 | Q := d.ins.TableQuote() | 510 | Q := d.ins.TableQuote() |
| 511 | 511 | ||
| ... | @@ -704,7 +704,7 @@ func (d *dbBase) setColsValues(mi *modelInfo, ind *reflect.Value, cols []string, | ... | @@ -704,7 +704,7 @@ func (d *dbBase) setColsValues(mi *modelInfo, ind *reflect.Value, cols []string, |
| 704 | panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error())) | 704 | panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error())) |
| 705 | } | 705 | } |
| 706 | 706 | ||
| 707 | _, err = d.setFieldValue(fi, value, &field) | 707 | _, err = d.setFieldValue(fi, value, field) |
| 708 | 708 | ||
| 709 | if err != nil { | 709 | if err != nil { |
| 710 | panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error())) | 710 | panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error())) |
| ... | @@ -786,6 +786,7 @@ setValue: | ... | @@ -786,6 +786,7 @@ setValue: |
| 786 | s = s[:19] | 786 | s = s[:19] |
| 787 | } | 787 | } |
| 788 | t, err = time.ParseInLocation(format_DateTime, s, tz) | 788 | t, err = time.ParseInLocation(format_DateTime, s, tz) |
| 789 | t = t.In(DefaultTimeLoc) | ||
| 789 | } | 790 | } |
| 790 | if err != nil && s != "0000-00-00" && s != "0000-00-00 00:00:00" { | 791 | if err != nil && s != "0000-00-00" && s != "0000-00-00 00:00:00" { |
| 791 | tErr = err | 792 | tErr = err |
| ... | @@ -864,7 +865,7 @@ end: | ... | @@ -864,7 +865,7 @@ end: |
| 864 | 865 | ||
| 865 | } | 866 | } |
| 866 | 867 | ||
| 867 | func (d *dbBase) setFieldValue(fi *fieldInfo, value interface{}, field *reflect.Value) (interface{}, error) { | 868 | func (d *dbBase) setFieldValue(fi *fieldInfo, value interface{}, field reflect.Value) (interface{}, error) { |
| 868 | 869 | ||
| 869 | fieldType := fi.fieldType | 870 | fieldType := fi.fieldType |
| 870 | isNative := fi.isFielder == false | 871 | isNative := fi.isFielder == false |
| ... | @@ -921,7 +922,7 @@ setValue: | ... | @@ -921,7 +922,7 @@ setValue: |
| 921 | mf := reflect.New(fi.relModelInfo.addrField.Elem().Type()) | 922 | mf := reflect.New(fi.relModelInfo.addrField.Elem().Type()) |
| 922 | field.Set(mf) | 923 | field.Set(mf) |
| 923 | f := mf.Elem().Field(fi.relModelInfo.fields.pk.fieldIndex) | 924 | f := mf.Elem().Field(fi.relModelInfo.fields.pk.fieldIndex) |
| 924 | field = &f | 925 | field = f |
| 925 | goto setValue | 926 | goto setValue |
| 926 | } | 927 | } |
| 927 | } | 928 | } | ... | ... |
-
Please register or sign in to post a comment