feat: add precise task business key and creation time queries
This commit is contained in:
@@ -60,7 +60,7 @@ func registerTasks(mux *http.ServeMux, s *service.Service) {
|
||||
return nil, 0, fault.Invalid("invalid query encoding")
|
||||
}
|
||||
for k, v := range q {
|
||||
if len(v) != 1 || (k != "queue_id" && k != "state" && k != "limit" && k != "cursor") {
|
||||
if len(v) != 1 || (k != "queue_id" && k != "state" && k != "limit" && k != "cursor" && k != "business_key" && k != "created_from" && k != "created_before") {
|
||||
return nil, 0, fault.Invalid("invalid query parameter")
|
||||
}
|
||||
}
|
||||
@@ -72,7 +72,20 @@ func registerTasks(mux *http.ServeMux, s *service.Service) {
|
||||
return nil, 0, fault.Invalid("invalid limit")
|
||||
}
|
||||
}
|
||||
out, err := s.ListTasks(r.Context(), t, service.ListInput{QueueID: core.ID(q.Get("queue_id")), State: pulse.TaskState(q.Get("state")), Limit: limit, Cursor: q.Get("cursor")})
|
||||
in := service.ListInput{QueueID: core.ID(q.Get("queue_id")), State: pulse.TaskState(q.Get("state")), Limit: limit, Cursor: q.Get("cursor"), BusinessKey: q.Get("business_key")}
|
||||
if q.Has("business_key") && in.BusinessKey == "" {
|
||||
return nil, 0, fault.Invalid("business_key filter must not be empty")
|
||||
}
|
||||
for name, field := range map[string]**time.Time{"created_from": &in.CreatedFrom, "created_before": &in.CreatedBefore} {
|
||||
if q.Has(name) {
|
||||
v, err := time.Parse(time.RFC3339Nano, q.Get(name))
|
||||
if err != nil {
|
||||
return nil, 0, fault.Invalid("invalid creation time bound")
|
||||
}
|
||||
*field = &v
|
||||
}
|
||||
}
|
||||
out, err := s.ListTasks(r.Context(), t, in)
|
||||
return out, 200, err
|
||||
}))
|
||||
mux.HandleFunc("POST /v1/tasks/{command}", wrap(func(r *http.Request, t auth.Token) (any, int, error) {
|
||||
|
||||
Reference in New Issue
Block a user