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

Add ParseAbsoluteQuery

parent 2d74b782
Branches
Tags v1.282.0
No related merge requests found
......@@ -134,6 +134,39 @@ func AbsoluteDateStringQuery(absolute string) (string, error) {
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 {
PageParams
OrderBy string `json:"order_by,omitempty"`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment