Coverage for packages/sql-smith/src/sql_smith/builder/like_builder.py: 71%

21 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1from sql_smith.functions import criteria 

2from sql_smith.partial import LikeBegins, LikeContains, LikeEnds 

3 

4 

5class LikeBuilder: 

6 def __init__(self, statement: "StatementInterface"): 

7 self._statement = statement 

8 

9 def begins(self, value: str) -> "CriteriaInterface": 

10 return self.__like(LikeBegins(value)) 

11 

12 def not_begins(self, value: str) -> "CriteriaInterface": 

13 return self.__not_like(LikeBegins(value)) 

14 

15 def contains(self, value: str) -> "CriteriaInterface": 

16 return self.__like(LikeContains(value)) 

17 

18 def not_contains(self, value: str) -> "CriteriaInterface": 

19 return self.__not_like(LikeContains(value)) 

20 

21 def ends(self, value: str) -> "CriteriaInterface": 

22 return self.__like(LikeEnds(value)) 

23 

24 def not_ends(self, value: str) -> "CriteriaInterface": 

25 return self.__not_like(LikeEnds(value)) 

26 

27 def __like(self, value: "StatementInterface") -> "CriteriaInterface": 

28 return criteria("{} LIKE {}", self._statement, value) 

29 

30 def __not_like(self, value: "StatementInterface") -> "CriteriaInterface": 

31 return criteria("{} NOT LIKE {}", self._statement, value)