From f2916135163577ba59eb510cd00a82d720d95a97 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Thu, 30 Apr 2020 06:54:56 +0200 Subject: [PATCH] Rename RecordFilter's Filter to Query for consistency --- api/compose/spec.json | 8 +++++++- api/compose/spec/record.json | 8 +++++++- compose/repository/record.go | 4 ++-- compose/repository/record_test.go | 2 +- compose/rest/record.go | 26 ++++++++++++++++++-------- compose/rest/request/record.go | 25 +++++++++++++++++++++++++ compose/service/record.go | 4 ++-- compose/service/service.go | 4 ++-- compose/types/record.go | 2 +- docs/compose/README.md | 3 ++- pkg/mail/mail.go | 1 - 11 files changed, 67 insertions(+), 20 deletions(-) diff --git a/api/compose/spec.json b/api/compose/spec.json index 49c51459c..d14d4b019 100644 --- a/api/compose/spec.json +++ b/api/compose/spec.json @@ -734,11 +734,17 @@ "path": "/", "parameters": { "get": [ + { + "name": "query", + "type": "string", + "required": false, + "title": "Record filtering query" + }, { "name": "filter", "type": "string", "required": false, - "title": "Filtering condition" + "title": "Filtering condition (same as query, deprecated)" }, {"type": "uint", "name": "limit", "title": "Limit"}, {"type": "uint", "name": "offset", "title": "Offset"}, diff --git a/api/compose/spec/record.json b/api/compose/spec/record.json index cb012fdc0..4908aa046 100644 --- a/api/compose/spec/record.json +++ b/api/compose/spec/record.json @@ -64,10 +64,16 @@ "Path": "/", "Parameters": { "get": [ + { + "name": "query", + "required": false, + "title": "Record filtering query", + "type": "string" + }, { "name": "filter", "required": false, - "title": "Filtering condition", + "title": "Filtering condition (same as query, deprecated)", "type": "string" }, { diff --git a/compose/repository/record.go b/compose/repository/record.go index 5f1491767..f65c3d8ca 100644 --- a/compose/repository/record.go +++ b/compose/repository/record.go @@ -173,7 +173,7 @@ func (r record) buildQuery(module *types.Module, f types.RecordFilter) (query sq } // Parse filters. - if f.Filter != "" { + if f.Query != "" { var ( // Filter parser fp = ql.NewParser() @@ -206,7 +206,7 @@ func (r record) buildQuery(module *types.Module, f types.RecordFilter) (query sq return i, nil } - if fn, err = fp.ParseExpression(f.Filter); err != nil { + if fn, err = fp.ParseExpression(f.Query); err != nil { return } else if filterSql, filterArgs, err := fn.ToSql(); err != nil { return query, err diff --git a/compose/repository/record_test.go b/compose/repository/record_test.go index 435a74c53..01a4631c2 100644 --- a/compose/repository/record_test.go +++ b/compose/repository/record_test.go @@ -31,7 +31,7 @@ func TestRecordFinder(t *testing.T) { match: []string{"SELECT r.id, r.module_id, r.rel_namespace, r.owned_by, r.created_at, r.created_by, r.updated_at, r.updated_by, r.deleted_at, r.deleted_by FROM compose_record AS r WHERE r.deleted_at IS NULL AND r.module_id = ? AND r.rel_namespace = ?"}, }, { - f: types.RecordFilter{Filter: "id = 5 AND foo = 7"}, + f: types.RecordFilter{Query: "id = 5 AND foo = 7"}, match: []string{ "r.id = 5", "rv_foo.value = 7"}, diff --git a/compose/rest/record.go b/compose/rest/record.go index f18bee854..e7337ebdd 100644 --- a/compose/rest/record.go +++ b/compose/rest/record.go @@ -76,20 +76,30 @@ func (ctrl *Record) List(ctx context.Context, r *request.RecordList) (interface{ var ( m *types.Module err error + + rf = types.RecordFilter{ + NamespaceID: r.NamespaceID, + ModuleID: r.ModuleID, + Sort: r.Sort, + + PageFilter: rh.Paging(r), + } ) if m, err = ctrl.module.With(ctx).FindByID(r.NamespaceID, r.ModuleID); err != nil { return nil, err } - rr, filter, err := ctrl.record.With(ctx).Find(types.RecordFilter{ - NamespaceID: r.NamespaceID, - ModuleID: r.ModuleID, - Filter: r.Filter, - Sort: r.Sort, + if r.Query != "" { + // Query param takes preference + rf.Query = r.Query + } else if r.Filter != "" { + // Backward compatibility + // Filter param is deprecated + rf.Query = r.Filter + } - PageFilter: rh.Paging(r), - }) + rr, filter, err := ctrl.record.With(ctx).Find(rf) return ctrl.makeFilterPayload(ctx, m, rr, filter, err) } @@ -329,7 +339,7 @@ func (ctrl *Record) Export(ctx context.Context, r *request.RecordExport) (interf f = types.RecordFilter{ NamespaceID: r.NamespaceID, ModuleID: r.ModuleID, - Filter: r.Filter, + Query: r.Filter, } contentType string diff --git a/compose/rest/request/record.go b/compose/rest/request/record.go index ebb5fd51e..2d35b0b2b 100644 --- a/compose/rest/request/record.go +++ b/compose/rest/request/record.go @@ -130,6 +130,10 @@ var _ RequestFiller = NewRecordReport() // RecordList request parameters type RecordList struct { + hasQuery bool + rawQuery string + Query string + hasFilter bool rawFilter string Filter string @@ -172,6 +176,7 @@ func NewRecordList() *RecordList { func (r RecordList) Auditable() map[string]interface{} { var out = map[string]interface{}{} + out["query"] = r.Query out["filter"] = r.Filter out["limit"] = r.Limit out["offset"] = r.Offset @@ -212,6 +217,11 @@ func (r *RecordList) Fill(req *http.Request) (err error) { post[name] = string(param[0]) } + if val, ok := get["query"]; ok { + r.hasQuery = true + r.rawQuery = val + r.Query = val + } if val, ok := get["filter"]; ok { r.hasFilter = true r.rawFilter = val @@ -1408,6 +1418,21 @@ func (r *RecordReport) GetModuleID() uint64 { return r.ModuleID } +// HasQuery returns true if query was set +func (r *RecordList) HasQuery() bool { + return r.hasQuery +} + +// RawQuery returns raw value of query parameter +func (r *RecordList) RawQuery() string { + return r.rawQuery +} + +// GetQuery returns casted value of query parameter +func (r *RecordList) GetQuery() string { + return r.Query +} + // HasFilter returns true if filter was set func (r *RecordList) HasFilter() bool { return r.hasFilter diff --git a/compose/service/record.go b/compose/service/record.go index a92aa9f6b..9584b3241 100644 --- a/compose/service/record.go +++ b/compose/service/record.go @@ -823,8 +823,8 @@ func (svc record) Organize(namespaceID, moduleID, recordID uint64, posField, pos // the place we're moving our record to. // and sort the set with sorting field set, _, err = svc.recordRepo.Find(module, types.RecordFilter{ - Filter: fmt.Sprintf("%s(%s >= %d)", filter, posField, recordOrderPlace), - Sort: posField, + Query: fmt.Sprintf("%s(%s >= %d)", filter, posField, recordOrderPlace), + Sort: posField, }) log.Info("reordering other records", zap.Int("count", len(set))) diff --git a/compose/service/service.go b/compose/service/service.go index fa0baa173..75adecc5b 100644 --- a/compose/service/service.go +++ b/compose/service/service.go @@ -169,8 +169,8 @@ func RegisterIteratorProviders() { "compose:record", func(ctx context.Context, f map[string]string, h eventbus.HandlerFn, action string) error { rf := types.RecordFilter{ - Filter: f["query"], - Sort: f["sort"], + Query: f["query"], + Sort: f["sort"], } rf.ParsePagination(f) diff --git a/compose/types/record.go b/compose/types/record.go index 97c9852ad..15c0293be 100644 --- a/compose/types/record.go +++ b/compose/types/record.go @@ -30,7 +30,7 @@ type ( RecordFilter struct { ModuleID uint64 `json:"moduleID,string"` NamespaceID uint64 `json:"namespaceID,string"` - Filter string `json:"query"` + Query string `json:"query"` Sort string `json:"sort"` // Standard paging fields & helpers diff --git a/docs/compose/README.md b/docs/compose/README.md index b199f15ab..2c3dad016 100644 --- a/docs/compose/README.md +++ b/docs/compose/README.md @@ -870,7 +870,8 @@ Compose records | Parameter | Type | Method | Description | Default | Required? | | --------- | ---- | ------ | ----------- | ------- | --------- | -| filter | string | GET | Filtering condition | N/A | NO | +| query | string | GET | Record filtering query | N/A | NO | +| filter | string | GET | Filtering condition (same as query, deprecated) | N/A | NO | | limit | uint | GET | Limit | N/A | NO | | offset | uint | GET | Offset | N/A | NO | | page | uint | GET | Page number (1-based) | N/A | NO | diff --git a/pkg/mail/mail.go b/pkg/mail/mail.go index e9ae6178f..f04add437 100644 --- a/pkg/mail/mail.go +++ b/pkg/mail/mail.go @@ -75,7 +75,6 @@ func New() *gomail.Message { // Sends message with SMTP dialer func Send(message *gomail.Message, dd ...Dialer) (err error) { - for _, d := range append(dd, defaultDialer) { if d == nil { continue