mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
feat: add user search query param on last_seen (#8139)
* feat: add sql filter for before/after on last_seen column
This commit is contained in:
@ -111,14 +111,35 @@ func (p *QueryParamParser) UUIDs(vals url.Values, def []uuid.UUID, queryParam st
|
||||
})
|
||||
}
|
||||
|
||||
func (p *QueryParamParser) Time(vals url.Values, def time.Time, queryParam string, format string) time.Time {
|
||||
func (p *QueryParamParser) Time(vals url.Values, def time.Time, queryParam, layout string) time.Time {
|
||||
return p.timeWithMutate(vals, def, queryParam, layout, nil)
|
||||
}
|
||||
|
||||
// Time uses the default time format of RFC3339Nano and always returns a UTC time.
|
||||
func (p *QueryParamParser) Time3339Nano(vals url.Values, def time.Time, queryParam string) time.Time {
|
||||
layout := time.RFC3339Nano
|
||||
return p.timeWithMutate(vals, def, queryParam, layout, func(term string) string {
|
||||
// All search queries are forced to lowercase. But the RFC format requires
|
||||
// upper case letters. So just uppercase the term.
|
||||
return strings.ToUpper(term)
|
||||
})
|
||||
}
|
||||
|
||||
func (p *QueryParamParser) timeWithMutate(vals url.Values, def time.Time, queryParam, layout string, mutate func(term string) string) time.Time {
|
||||
v, err := parseQueryParam(p, vals, func(term string) (time.Time, error) {
|
||||
return time.Parse(format, term)
|
||||
if mutate != nil {
|
||||
term = mutate(term)
|
||||
}
|
||||
t, err := time.Parse(layout, term)
|
||||
if err != nil {
|
||||
return time.Time{}, err
|
||||
}
|
||||
return t.UTC(), nil
|
||||
}, def, queryParam)
|
||||
if err != nil {
|
||||
p.Errors = append(p.Errors, codersdk.ValidationError{
|
||||
Field: queryParam,
|
||||
Detail: fmt.Sprintf("Query param %q must be a valid date format (%s): %s", queryParam, format, err.Error()),
|
||||
Detail: fmt.Sprintf("Query param %q must be a valid date format (%s): %s", queryParam, layout, err.Error()),
|
||||
})
|
||||
}
|
||||
return v
|
||||
|
Reference in New Issue
Block a user