Support Get time.Time #1933

Merged
lunny merged 3 commits from lunny/test_get_time into master 2021-07-11 01:30:34 +00:00
2 changed files with 20 additions and 3 deletions
Showing only changes of commit 89b0dedcb7 - Show all commits

View File

@ -82,7 +82,12 @@ func newEngine(driverName, dataSourceName string, dialect dialects.Dialect, db *
dataSourceName: dataSourceName,
db: db,
logSessionID: false,
DatabaseTZ: time.Local,
}
if dialect.URI().DBType == schemas.SQLITE {
engine.DatabaseTZ = time.UTC
} else {
engine.DatabaseTZ = time.Local
}
logger := log.NewSimpleLogger(os.Stdout)

View File

@ -35,6 +35,19 @@ func (session *Session) Get(bean interface{}) (bool, error) {
return session.get(bean)
}
func isPtrOfTime(v interface{}) bool {
if _, ok := v.(*time.Time); ok {
return true
}
el := reflect.ValueOf(v).Elem()
if el.Kind() != reflect.Struct {
return false
}
return el.Type().ConvertibleTo(schemas.TimeType)
}
func (session *Session) get(bean interface{}) (bool, error) {
defer session.resetStatement()
@ -51,8 +64,7 @@ func (session *Session) get(bean interface{}) (bool, error) {
return false, ErrObjectIsNil
}
_, isTimeStruct := bean.(*time.Time)
if beanValue.Elem().Kind() == reflect.Struct && !isTimeStruct {
if beanValue.Elem().Kind() == reflect.Struct && !isPtrOfTime(bean) {
if err := session.statement.SetRefBean(bean); err != nil {
return false, err
}