1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2025-02-07 19:40:31 +02:00

minor types.DateTime optimizations to minimize time.Time value copies

This commit is contained in:
Gani Georgiev 2023-12-08 10:36:12 +02:00
parent 6e6c873cc6
commit 1bf7f148b0

View File

@ -45,10 +45,11 @@ func (d DateTime) IsZero() bool {
//
// The zero value is serialized to an empty string.
func (d DateTime) String() string {
if d.IsZero() {
t := d.Time()
if t.IsZero() {
return ""
}
return d.Time().UTC().Format(DefaultDateLayout)
return t.UTC().Format(DefaultDateLayout)
}
// MarshalJSON implements the [json.Marshaler] interface.
@ -74,12 +75,10 @@ func (d DateTime) Value() (driver.Value, error) {
// into the current DateTime instance.
func (d *DateTime) Scan(value any) error {
switch v := value.(type) {
case DateTime:
d.t = v.Time()
case time.Time:
d.t = v
case int, int64, int32, uint, uint64, uint32:
d.t = cast.ToTime(v)
case DateTime:
d.t = v.Time()
case string:
if v == "" {
d.t = time.Time{}
@ -91,6 +90,8 @@ func (d *DateTime) Scan(value any) error {
}
d.t = t
}
case int, int64, int32, uint, uint64, uint32:
d.t = cast.ToTime(v)
default:
str := cast.ToString(v)
if str == "" {