From 9fae95b906a46d9315100e5c40b3f67a4cfd32ad Mon Sep 17 00:00:00 2001 From: Anton Nesterov Date: Thu, 8 Aug 2024 19:44:12 +0200 Subject: [PATCH] [wip] impove filter interfaces Signed-off-by: Anton Nesterov --- pkg/dal/convert.go | 10 ++++------ pkg/dal/convert_test.go | 4 ++-- pkg/dal/types.go | 10 ++++++++++ pkg/filters/context.go | 2 +- pkg/filters/types.go | 3 ++- 5 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 pkg/dal/types.go diff --git a/pkg/dal/convert.go b/pkg/dal/convert.go index f38b7b5..9aa2d1b 100644 --- a/pkg/dal/convert.go +++ b/pkg/dal/convert.go @@ -1,21 +1,19 @@ package dal import ( - "fmt" "strings" filters "l12.xyz/dal/filters" ) -func CovertFind(find filters.Find, ctx filters.Context) string { +func CovertFind(find Find, ctx Context) string { expressions := []string{} for key, value := range find { - values, err := filters.Convert(ctx.New(map[string]string{ + context := ctx.New(CtxOpts{ "FieldName": key, - }), value) + }) + values, _ := filters.Convert(context, value) expressions = append(expressions, values) - fmt.Println(err) - } return strings.Join(expressions, " AND ") } diff --git a/pkg/dal/convert_test.go b/pkg/dal/convert_test.go index 3dff398..ca0d2b2 100644 --- a/pkg/dal/convert_test.go +++ b/pkg/dal/convert_test.go @@ -7,10 +7,10 @@ import ( ) func TestConvertFind(t *testing.T) { - find := f.Find{ + find := Find{ "test": "1", "test2": "2", - "test3": f.Filter{ + "test3": Filter{ "$ne": 1, }, } diff --git a/pkg/dal/types.go b/pkg/dal/types.go new file mode 100644 index 0000000..92cde6f --- /dev/null +++ b/pkg/dal/types.go @@ -0,0 +1,10 @@ +package dal + +import ( + filters "l12.xyz/dal/filters" +) + +type Find = filters.Find +type Filter = filters.Filter +type Context = filters.Context +type CtxOpts = filters.CtxOpts diff --git a/pkg/filters/context.go b/pkg/filters/context.go index 0903363..d4e0f83 100644 --- a/pkg/filters/context.go +++ b/pkg/filters/context.go @@ -14,7 +14,7 @@ type SQLiteContext struct { FieldName string } -func (c SQLiteContext) New(opts map[string]string) Context { +func (c SQLiteContext) New(opts CtxOpts) Context { ta := opts["TableAlias"] if ta == "" { ta = c.TableAlias diff --git a/pkg/filters/types.go b/pkg/filters/types.go index f61f73b..ff99d6f 100644 --- a/pkg/filters/types.go +++ b/pkg/filters/types.go @@ -1,7 +1,8 @@ package filters +type CtxOpts map[string]string type Context interface { - New(opts map[string]string) Context + New(opts CtxOpts) Context GetFieldName() string NormalizeValue(interface{}) interface{} }