Skip to content

Commit 4d405f1

Browse files
Merge pull request #48 from yfievez/dev/yfievez/implem_ilike
feat(filter):Add ILIKE filter
2 parents 06ded05 + dadc40f commit 4d405f1

13 files changed

+89
-0
lines changed

filterapply_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,3 +266,19 @@ func TestFilterApply_Like(t *testing.T) {
266266
assert.Nil(t, err)
267267
assert.Len(t, models, 2)
268268
}
269+
270+
func TestFilterApply_ILike(t *testing.T) {
271+
killDb, err := testdata.SetupTestDatabase("test")
272+
defer killDb()
273+
assert.Nil(t, err)
274+
dbp, err := yaorm.NewDBProvider(context.TODO(), "test")
275+
assert.Nil(t, err)
276+
category := &testdata.TwoI{Name: "category"}
277+
saveModel(t, dbp, category)
278+
category2 := &testdata.TwoI{Name: "categoryY"}
279+
saveModel(t, dbp, category2)
280+
281+
models, err := yaorm.GenericSelectAll(dbp, testdata.NewTwoIFilter().Name(yaormfilter.ILike("categor%")))
282+
assert.Nil(t, err)
283+
assert.Len(t, models, 2)
284+
}

yaormfilter/boolfilter.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ func (f *BoolFilter) Like(v interface{}) ValueFilter {
4242
return f
4343
}
4444

45+
// ILike is not applicable on bool
46+
func (f *BoolFilter) ILike(v interface{}) ValueFilter {
47+
return f
48+
}
49+
4550
// Nil adds a nil filter
4651
func (f *BoolFilter) Nil(v bool) ValueFilter {
4752
f.nil(v)

yaormfilter/boolfilter_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ func TestBoolFilter_Like(t *testing.T) {
3333
assert.Equal(t, filter, filter.Like(true))
3434
}
3535

36+
func TestBoolFilter_ILike(t *testing.T) {
37+
filter := yaormfilter.NewBoolFilter()
38+
assert.Equal(t, filter, filter.ILike(true))
39+
}
40+
3641
func TestBoolFilter_Nil(t *testing.T) {
3742
filter := yaormfilter.NewBoolFilter()
3843
assert.Equal(t, filter, filter.Nil(true))

yaormfilter/datefilter.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ func (f *DateFilter) Like(v interface{}) ValueFilter {
4747
return f
4848
}
4949

50+
// ILike is not applicable on Date
51+
func (f *DateFilter) ILike(v interface{}) ValueFilter {
52+
return f
53+
}
54+
5055
// Nil applies a nil filter on Date
5156
func (f *DateFilter) Nil(v bool) ValueFilter {
5257
f.nil(v)

yaormfilter/datefilter_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ func TestDateFilter_Like(t *testing.T) {
3434
assert.Equal(t, filter, filter.Like(time.Now()))
3535
}
3636

37+
func TestDateFilter_ILike(t *testing.T) {
38+
filter := yaormfilter.NewDateFilter()
39+
assert.Equal(t, filter, filter.ILike(time.Now()))
40+
}
41+
3742
func TestDateFilter_Nil(t *testing.T) {
3843
filter := yaormfilter.NewDateFilter()
3944
assert.Equal(t, filter, filter.Nil(true))

yaormfilter/int64filter.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ func (f *Int64Filter) Like(v interface{}) ValueFilter {
4242
return f
4343
}
4444

45+
// ILike is not applicable on int64
46+
func (f *Int64Filter) ILike(v interface{}) ValueFilter {
47+
return f
48+
}
49+
4550
// Nil adds a nil filter
4651
func (f *Int64Filter) Nil(v bool) ValueFilter {
4752
f.nil(v)

yaormfilter/int64filter_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ func TestInt64Filter_Like(t *testing.T) {
3333
assert.Equal(t, filter, filter.Like(int64(12)))
3434
}
3535

36+
func TestInt64Filter_ILike(t *testing.T) {
37+
filter := yaormfilter.NewInt64Filter()
38+
assert.Equal(t, filter, filter.ILike(int64(12)))
39+
}
40+
3641
func TestInt64Filter_Nil(t *testing.T) {
3742
filter := yaormfilter.NewInt64Filter()
3843
assert.Equal(t, filter, filter.Nil(true))

yaormfilter/nilfilter.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ func (f *NilFilter) Like(v interface{}) ValueFilter {
2525
return f
2626
}
2727

28+
// ILike is not applicable on Date
29+
func (f *NilFilter) ILike(v interface{}) ValueFilter {
30+
return f
31+
}
32+
2833
// Nil applies a nil filter on Date
2934
func (f *NilFilter) Nil(v bool) ValueFilter {
3035
f.nil(v)

yaormfilter/stringfilter.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,17 @@ func (f *StringFilter) Like(v interface{}) ValueFilter {
4848
return f
4949
}
5050

51+
// ILike adds a Like filter
52+
func (f *StringFilter) ILike(v interface{}) ValueFilter {
53+
underlyingValue := tools.GetNonPtrValue(v)
54+
// make sure we have a string
55+
if underlyingValue.Kind() != reflect.String {
56+
panic("Value in StringFilter is not a string")
57+
}
58+
f.ilike(underlyingValue.Interface())
59+
return f
60+
}
61+
5162
// Nil adds a nil filter
5263
func (f *StringFilter) Nil(v bool) ValueFilter {
5364
f.nil(v)

yaormfilter/stringfilter_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ func TestStringFilter_Like(t *testing.T) {
3434
assert.Equal(t, filter, filter.Like(str))
3535
}
3636

37+
func TestStringFilter_ILike(t *testing.T) {
38+
filter := yaormfilter.NewStringFilter()
39+
str := "bla"
40+
assert.Equal(t, filter, filter.ILike(str))
41+
}
42+
3743
func TestStringFilter_Nil(t *testing.T) {
3844
filter := yaormfilter.NewStringFilter()
3945
assert.Equal(t, filter, filter.Nil(true))

0 commit comments

Comments
 (0)