mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
gtime: some code style refactoring (#17369)
This commit is contained in:
parent
bc7c420ee8
commit
912df2e284
@ -6,23 +6,26 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// ParseInterval parses and interval with support for all units that Grafana uses.
|
||||
var dateUnitPattern = regexp.MustCompile(`(\d+)([wdy])`)
|
||||
|
||||
// ParseInterval parses an interval with support for all units that Grafana uses.
|
||||
func ParseInterval(interval string) (time.Duration, error) {
|
||||
re := regexp.MustCompile(`(\d+)([wdy])`)
|
||||
result := re.FindSubmatch([]byte(interval))
|
||||
result := dateUnitPattern.FindSubmatch([]byte(interval))
|
||||
|
||||
if len(result) == 3 {
|
||||
num, _ := strconv.Atoi(string(result[1]))
|
||||
period := string(result[2])
|
||||
|
||||
if period == `d` {
|
||||
return time.Hour * 24 * time.Duration(num), nil
|
||||
} else if period == `w` {
|
||||
return time.Hour * 24 * 7 * time.Duration(num), nil
|
||||
} else {
|
||||
return time.Hour * 24 * 7 * 365 * time.Duration(num), nil
|
||||
}
|
||||
} else {
|
||||
if len(result) != 3 {
|
||||
return time.ParseDuration(interval)
|
||||
}
|
||||
|
||||
num, _ := strconv.Atoi(string(result[1]))
|
||||
period := string(result[2])
|
||||
|
||||
if period == `d` {
|
||||
return time.Hour * 24 * time.Duration(num), nil
|
||||
}
|
||||
|
||||
if period == `w` {
|
||||
return time.Hour * 24 * 7 * time.Duration(num), nil
|
||||
}
|
||||
|
||||
return time.Hour * 24 * 7 * 365 * time.Duration(num), nil
|
||||
}
|
||||
|
@ -15,7 +15,9 @@ func TestParseInterval(t *testing.T) {
|
||||
}{
|
||||
{interval: "1d", duration: time.Hour * 24},
|
||||
{interval: "1w", duration: time.Hour * 24 * 7},
|
||||
{interval: "2w", duration: time.Hour * 24 * 7 * 2},
|
||||
{interval: "1y", duration: time.Hour * 24 * 7 * 365},
|
||||
{interval: "5y", duration: time.Hour * 24 * 7 * 365 * 5},
|
||||
{interval: "1M", err: errors.New("time: unknown unit M in duration 1M")},
|
||||
{interval: "invalid-duration", err: errors.New("time: invalid duration invalid-duration")},
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user