From 532855d85000b7174f6c8600252fe8893723d897 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 21 Mar 2021 18:48:41 +0100 Subject: [PATCH] Fix filter for task index --- pkg/models/task_collection_test.go | 13 +++++++++++++ pkg/models/tasks.go | 21 +++++++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/pkg/models/task_collection_test.go b/pkg/models/task_collection_test.go index 0e879ee4d90..2f50fecf789 100644 --- a/pkg/models/task_collection_test.go +++ b/pkg/models/task_collection_test.go @@ -985,6 +985,19 @@ func TestTaskCollection_ReadAll(t *testing.T) { }, wantErr: false, }, + { + name: "filter by index", + fields: fields{ + FilterBy: []string{"index"}, + FilterValue: []string{"5"}, + FilterComparator: []string{"equals"}, + }, + args: defaultArgs, + want: []*Task{ + task5, + }, + wantErr: false, + }, } for _, tt := range tests { diff --git a/pkg/models/tasks.go b/pkg/models/tasks.go index b7045317cec..f0d06b72ad2 100644 --- a/pkg/models/tasks.go +++ b/pkg/models/tasks.go @@ -178,33 +178,34 @@ func (t *Task) ReadAll(s *xorm.Session, a web.Auth, search string, page int, per } func getFilterCond(f *taskFilter, includeNulls bool) (cond builder.Cond, err error) { + field := "`" + f.field + "`" switch f.comparator { case taskFilterComparatorEquals: - cond = &builder.Eq{f.field: f.value} + cond = &builder.Eq{field: f.value} case taskFilterComparatorNotEquals: - cond = &builder.Neq{f.field: f.value} + cond = &builder.Neq{field: f.value} case taskFilterComparatorGreater: - cond = &builder.Gt{f.field: f.value} + cond = &builder.Gt{field: f.value} case taskFilterComparatorGreateEquals: - cond = &builder.Gte{f.field: f.value} + cond = &builder.Gte{field: f.value} case taskFilterComparatorLess: - cond = &builder.Lt{f.field: f.value} + cond = &builder.Lt{field: f.value} case taskFilterComparatorLessEquals: - cond = &builder.Lte{f.field: f.value} + cond = &builder.Lte{field: f.value} case taskFilterComparatorLike: val, is := f.value.(string) if !is { - return nil, ErrInvalidTaskFilterValue{Field: f.field, Value: f.value} + return nil, ErrInvalidTaskFilterValue{Field: field, Value: f.value} } - cond = &builder.Like{f.field, "%" + val + "%"} + cond = &builder.Like{field, "%" + val + "%"} case taskFilterComparatorIn: - cond = builder.In(f.field, f.value) + cond = builder.In(field, f.value) case taskFilterComparatorInvalid: // Nothing to do } if includeNulls { - cond = builder.Or(cond, &builder.IsNull{f.field}) + cond = builder.Or(cond, &builder.IsNull{field}) } return