|
@@ -6,23 +6,26 @@ import (
|
|
|
"time"
|
|
"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) {
|
|
func ParseInterval(interval string) (time.Duration, error) {
|
|
|
- re := regexp.MustCompile(`(\d+)([wdy])`)
|
|
|
|
|
- result := re.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 {
|
|
|
|
|
|
|
+ result := dateUnitPattern.FindSubmatch([]byte(interval))
|
|
|
|
|
+
|
|
|
|
|
+ if len(result) != 3 {
|
|
|
return time.ParseDuration(interval)
|
|
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
|
|
|
}
|
|
}
|