Skip to content
Snippets Groups Projects
Commit a72b2ef1 authored by Francé Wilke's avatar Francé Wilke
Browse files

Add ParseAbsoluteQuery

parent 2d74b782
No related branches found
Tags v1.282.0
No related merge requests found
...@@ -134,6 +134,39 @@ func AbsoluteDateStringQuery(absolute string) (string, error) { ...@@ -134,6 +134,39 @@ func AbsoluteDateStringQuery(absolute string) (string, error) {
return "", errors.Error("invalid absolute date query") return "", errors.Error("invalid absolute date query")
} }
func ParseAbsoluteQuery(absoluteQuery string, location *time.Location) (startDate, endDate time.Time, err error) {
nowValue := time.Now().UTC()
var value int64
switch {
case CheckAbsoluteRegex(Yesterday, absoluteQuery):
yesterday := nowValue.AddDate(0, 0, -1)
startDate = time.Date(yesterday.Year(), yesterday.Month(), yesterday.Day(), 0, 0, 0, 0, location)
endDate = time.Date(yesterday.Year(), yesterday.Month(), yesterday.Day(), 23, 59, 59, 999999999, location)
case CheckAbsoluteRegex(LastXHours, absoluteQuery):
value = PullAbsoluteValue(absoluteQuery)
since := nowValue.Add(time.Duration(-value) * time.Hour)
startDate = time.Date(since.Year(), since.Month(), since.Day(), since.Hour(), since.Minute(), since.Second(), since.Nanosecond(), location)
endDate = time.Date(nowValue.Year(), nowValue.Month(), nowValue.Day(), 23, 59, 59, 999999999, location)
case CheckAbsoluteRegex(LastDay, absoluteQuery):
startDate = time.Date(nowValue.Year(), nowValue.Month(), nowValue.Day(), 0, 0, 0, 0, location)
endDate = time.Date(nowValue.Year(), nowValue.Month(), nowValue.Day(), 23, 59, 59, 999999999, location)
case CheckAbsoluteRegex(LastXDays, absoluteQuery):
value = PullAbsoluteValue(absoluteQuery)
since := nowValue.AddDate(0, 0, -int(value)).Truncate(24 * time.Hour)
startDate = time.Date(since.Year(), since.Month(), since.Day(), since.Hour(), since.Minute(), since.Second(), since.Nanosecond(), location)
endDate = time.Date(nowValue.Year(), nowValue.Month(), nowValue.Day(), 23, 59, 59, 999999999, location)
case CheckAbsoluteRegex(LastMonth, absoluteQuery):
startDate = time.Date(nowValue.Year(), nowValue.Month(), 1, 0, 0, 0, 0, location)
lastDay := startDate.AddDate(0, 1, -1)
endDate = time.Date(lastDay.Year(), lastDay.Month(), lastDay.Day(), 23, 59, 59, 999999999, location)
default:
return startDate, endDate, errors.Error("invalid absolute date query")
}
return startDate, endDate, nil
}
type PageAndOrderParams struct { type PageAndOrderParams struct {
PageParams PageParams
OrderBy string `json:"order_by,omitempty"` OrderBy string `json:"order_by,omitempty"`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment