diff --git a/store/adapters/rdbms/filters.gen.go b/store/adapters/rdbms/filters.gen.go index 31809d11e..9a7566a8a 100644 --- a/store/adapters/rdbms/filters.gen.go +++ b/store/adapters/rdbms/filters.gen.go @@ -1072,6 +1072,12 @@ func ReportFilter(f systemType.ReportFilter) (ee []goqu.Expression, _ systemType ee = append(ee, goqu.I("id").In(f.LabeledIDs)) } + if f.Query != "" { + ee = append(ee, goqu.Or( + goqu.C("handle").ILike("%"+f.Query+"%"), + )) + } + return ee, f, err } diff --git a/system/report.cue b/system/report.cue index 971e16c92..4f18fd567 100644 --- a/system/report.cue +++ b/system/report.cue @@ -47,6 +47,7 @@ report: { deleted: {goType: "filter.State", storeIdent: "deleted_at"} } + query: ["handle"] byValue: ["handle", "report_id"] byNilState: ["deleted"] } diff --git a/system/rest.yaml b/system/rest.yaml index 6d2b64605..a1632a5b0 100644 --- a/system/rest.yaml +++ b/system/rest.yaml @@ -1645,6 +1645,10 @@ endpoints: required: false title: Report handle type: string + - name: query + required: false + title: Report query + type: string - name: deleted required: false title: Exclude (0, default), include (1) or return only (2) deleted reports diff --git a/system/rest/report.go b/system/rest/report.go index cca2389e5..65a8d24b3 100644 --- a/system/rest/report.go +++ b/system/rest/report.go @@ -72,6 +72,7 @@ func (ctrl *Report) List(ctx context.Context, r *request.ReportList) (interface{ err error f = types.ReportFilter{ Handle: r.Handle, + Query: r.Query, Labels: r.Labels, Deleted: filter.State(r.Deleted), } diff --git a/system/rest/request/report.go b/system/rest/request/report.go index fcd63097b..32df7d1ec 100644 --- a/system/rest/request/report.go +++ b/system/rest/request/report.go @@ -42,6 +42,11 @@ type ( // Report handle Handle string + // Query GET parameter + // + // Report query + Query string + // Deleted GET parameter // // Exclude (0, default), include (1) or return only (2) deleted reports @@ -202,6 +207,7 @@ func NewReportList() *ReportList { func (r ReportList) Auditable() map[string]interface{} { return map[string]interface{}{ "handle": r.Handle, + "query": r.Query, "deleted": r.Deleted, "labels": r.Labels, "limit": r.Limit, @@ -216,6 +222,11 @@ func (r ReportList) GetHandle() string { return r.Handle } +// Auditable returns all auditable/loggable parameters +func (r ReportList) GetQuery() string { + return r.Query +} + // Auditable returns all auditable/loggable parameters func (r ReportList) GetDeleted() uint { return r.Deleted @@ -259,6 +270,12 @@ func (r *ReportList) Fill(req *http.Request) (err error) { return err } } + if val, ok := tmp["query"]; ok && len(val) > 0 { + r.Query, err = val[0], nil + if err != nil { + return err + } + } if val, ok := tmp["deleted"]; ok && len(val) > 0 { r.Deleted, err = payload.ParseUint(val[0]), nil if err != nil { diff --git a/system/types/report.go b/system/types/report.go index eda13882e..b22d872c8 100644 --- a/system/types/report.go +++ b/system/types/report.go @@ -132,6 +132,7 @@ type ( ReportID []uint64 `json:"reportID"` Handle string `json:"handle"` + Query string `json:"query"` Deleted filter.State `json:"deleted"`