mirror of
https://gitee.com/johng/gf.git
synced 2024-12-04 05:07:44 +08:00
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file,
|
|
// You can obtain one at https://github.com/gogf/gf.
|
|
|
|
package dm
|
|
|
|
import (
|
|
"context"
|
|
|
|
"time"
|
|
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|
)
|
|
|
|
// ConvertValueForField converts value to the type of the record field.
|
|
func (d *Driver) ConvertValueForField(ctx context.Context, fieldType string, fieldValue interface{}) (interface{}, error) {
|
|
switch itemValue := fieldValue.(type) {
|
|
// dm does not support time.Time, it so here converts it to time string that it supports.
|
|
case time.Time:
|
|
// If the time is zero, it then updates it to nil,
|
|
// which will insert/update the value to database as "null".
|
|
if itemValue.IsZero() {
|
|
return nil, nil
|
|
}
|
|
return gtime.New(itemValue).String(), nil
|
|
|
|
// dm does not support time.Time, it so here converts it to time string that it supports.
|
|
case *time.Time:
|
|
// If the time is zero, it then updates it to nil,
|
|
// which will insert/update the value to database as "null".
|
|
if itemValue == nil || itemValue.IsZero() {
|
|
return nil, nil
|
|
}
|
|
return gtime.New(itemValue).String(), nil
|
|
}
|
|
|
|
return fieldValue, nil
|
|
}
|