Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 56e68f3

Browse files
feat: refactor logical filters and add tests (elchicodepython#17)
1 parent 4a3d123 commit 56e68f3

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

‎nocodb/filters/logical.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,20 @@ def __init__(self, *filters: List[WhereFilter]):
77
self.__filters = filters
88

99
def get_where(self) -> str:
10-
return (
11-
"("
12-
+ "~or".join([filter.get_where() for filter in self.__filters])
13-
+ ")"
14-
)
10+
return f"({'~or'.join([filter.get_where() for filter in self.__filters])})"
1511

1612

1713
class And(WhereFilter):
1814
def __init__(self, *filters: List[WhereFilter]):
1915
self.__filters = filters
2016

2117
def get_where(self) -> str:
22-
return (
23-
"("
24-
+ "~and".join([filter.get_where() for filter in self.__filters])
25-
+ ")"
26-
)
18+
return f"({'~and'.join([filter.get_where() for filter in self.__filters])})"
2719

2820

2921
class Not(WhereFilter):
3022
def __init__(self, filter: WhereFilter):
3123
self.__filter = filter
3224

3325
def get_where(self) -> str:
34-
return "~not"+self.__filter.get_where()
26+
return f"~not{self.__filter.get_where()}"

‎nocodb/filters/logical_test.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from nocodb import filters
2+
3+
4+
def test_or_with_two_filters():
5+
filter1 = filters.EqFilter("column1", "value1")
6+
filter2 = filters.EqFilter("column2", "value2")
7+
or_filter = filters.Or(filter1, filter2)
8+
assert or_filter.get_where() == "((column1,eq,value1)~or(column2,eq,value2))"
9+
10+
11+
def test_and_with_two_filters():
12+
filter1 = filters.And(filters.EqFilter("column1", "value1"))
13+
filter2 = filters.And(filters.EqFilter("column2", "value2"))
14+
and_filter = filters.And(filter1, filter2)
15+
assert and_filter.get_where() == "(((column1,eq,value1))~and((column2,eq,value2)))"
16+
17+
18+
def test_not_filter():
19+
filter = filters.EqFilter("column", "value")
20+
not_filter = filters.Not(filter)
21+
assert not_filter.get_where() == "~not(column,eq,value)"

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /