internal/time/duration.go (25 lines of code) (raw):
package time
import (
"encoding/json"
"time"
)
const Second = time.Second //nolint:revive // it's not a suffix
type Duration struct {
time.Duration
}
func (d Duration) MarshalJSON() ([]byte, error) {
return json.Marshal(d.String()) //nolint:wrapcheck // ignore
}
func (d *Duration) UnmarshalJSON(b []byte) error {
var s string
err := json.Unmarshal(b, &s)
if err != nil {
return err //nolint:wrapcheck // ignore
}
duration, err := time.ParseDuration(s)
if err != nil {
return err //nolint:wrapcheck // ignore
}
d.Duration = duration
return nil
}