|
17 | 17 | ----------------------------------------------------------------- |
18 | 18 | """ |
19 | 19 |
|
20 | | -fromtypingimportUnion |
21 | | - |
22 | 20 | fromapp.translator.constimportDEFAULT_VALUE_TYPE |
| 21 | +fromapp.translator.core.custom_types.valuesimportValueType |
23 | 22 | fromapp.translator.core.mappingimportLogSourceSignature |
24 | 23 | fromapp.translator.core.renderimportBaseFieldValueRender,PlatformQueryRender |
| 24 | +fromapp.translator.platforms.base.sql.str_value_managerimportsql_str_value_manager |
25 | 25 |
|
26 | 26 |
|
27 | 27 | classSqlFieldValueRender(BaseFieldValueRender): |
| 28 | +str_value_manager=sql_str_value_manager |
| 29 | + |
| 30 | +@staticmethod |
| 31 | +def_wrap_str_value(value:str)->str: |
| 32 | +returnf"'{value}'" |
| 33 | + |
28 | 34 | defequal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
29 | 35 | ifisinstance(value,list): |
30 | 36 | returnf"({self.or_token.join([self.equal_modifier(field=field,value=v)forvinvalue])})" |
31 | | -returnf"{field} ='{value}'" |
| 37 | +returnf"{field} ={self._pre_process_value(field,value,wrap_str=True)}" |
32 | 38 |
|
33 | | -defless_modifier(self,field:str,value:Union[int,str])->str: |
34 | | -returnf"{field} < '{value}'" |
| 39 | +defnot_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
| 40 | +ifisinstance(value,list): |
| 41 | +returnf"({self.or_token.join([self.not_equal_modifier(field=field,value=v)forvinvalue])})" |
| 42 | +returnf"{field} !={self._pre_process_value(field,value,wrap_str=True)}" |
35 | 43 |
|
36 | | -defless_or_equal_modifier(self,field:str,value:Union[int,str])->str: |
37 | | -returnf"{field} <= '{value}'" |
| 44 | +defless_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
| 45 | +returnf"{field} <{self._pre_process_value(field,value,wrap_str=True)}" |
38 | 46 |
|
39 | | -defgreater_modifier(self,field:str,value:Union[int,str])->str: |
40 | | -returnf"{field}> '{value}'" |
| 47 | +defless_or_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
| 48 | +returnf"{field}<={self._pre_process_value(field,value,wrap_str=True)}" |
41 | 49 |
|
42 | | -defgreater_or_equal_modifier(self,field:str,value:Union[int,str])->str: |
43 | | -returnf"{field} >= '{value}'" |
| 50 | +defgreater_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
| 51 | +returnf"{field} >{self._pre_process_value(field,value,wrap_str=True)}" |
44 | 52 |
|
45 | | -defnot_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
46 | | -ifisinstance(value,list): |
47 | | -returnf"({self.or_token.join([self.not_equal_modifier(field=field,value=v)forvinvalue])})" |
48 | | -returnf"{field} != '{value}'" |
| 53 | +defgreater_or_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
| 54 | +returnf"{field} >={self._pre_process_value(field,value,wrap_str=True)}" |
49 | 55 |
|
50 | 56 | defcontains_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
51 | 57 | ifisinstance(value,list): |
52 | 58 | returnf"({self.or_token.join(self.contains_modifier(field=field,value=v)forvinvalue)})" |
53 | | -returnf"{field}ILIKE '%{value}%' ESCAPE '\\'" |
| 59 | +returnf"{field}like '%{self._pre_process_value(field,value)}%'" |
54 | 60 |
|
55 | 61 | defendswith_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
56 | 62 | ifisinstance(value,list): |
57 | 63 | returnf"({self.or_token.join(self.endswith_modifier(field=field,value=v)forvinvalue)})" |
58 | | -returnf"{field}ILIKE '%{value}' ESCAPE '\\'" |
| 64 | +returnf"{field}like '%{self._pre_process_value(field,value)}'" |
59 | 65 |
|
60 | 66 | defstartswith_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
61 | 67 | ifisinstance(value,list): |
62 | 68 | returnf"({self.or_token.join(self.startswith_modifier(field=field,value=v)forvinvalue)})" |
63 | | -returnf"{field}ILIKE '{value}%' ESCAPE '\\'" |
| 69 | +returnf"{field}like '{self._pre_process_value(field,value)}%'" |
64 | 70 |
|
65 | 71 | defregex_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str: |
66 | 72 | ifisinstance(value,list): |
67 | 73 | returnf"({self.or_token.join(self.regex_modifier(field=field,value=v)forvinvalue)})" |
68 | | -returnf"{field} ILIKE '{value}' ESCAPE '\\'" |
| 74 | +regex_str=self._pre_process_value(field,value,value_type=ValueType.regex_value,wrap_str=True) |
| 75 | +returnf"regexp_like({field},{regex_str})" |
69 | 76 |
|
70 | 77 |
|
71 | 78 | classSqlQueryRender(PlatformQueryRender): |
|