|
20 | 20 | from typing import Union |
21 | 21 |
|
22 | 22 | from app.translator.const import DEFAULT_VALUE_TYPE |
| 23 | +from app.translator.core.custom_types.values import ValueType |
23 | 24 | from app.translator.core.exceptions.render import UnsupportedRenderMethod |
24 | 25 | from app.translator.core.render import BaseFieldValueRender, PlatformQueryRender |
25 | | -from app.translator.platforms.base.spl.escape_manager import spl_escape_manager |
| 26 | +from app.translator.core.str_value_manager import StrValue |
| 27 | +from app.translator.platforms.base.spl.str_value_manager import spl_str_value_manager |
26 | 28 |
|
27 | 29 |
|
28 | 30 | class SplFieldValueRender(BaseFieldValueRender): |
29 | | - escape_manager = spl_escape_manager |
| 31 | + str_value_manager = spl_str_value_manager |
| 32 | + |
| 33 | + @staticmethod |
| 34 | + def _wrap_str_value(value: str) -> str: |
| 35 | + return f'"{value}"' |
| 36 | + |
| 37 | + def _pre_process_value( |
| 38 | + self, field: str, value: Union[int, str, StrValue], value_type: str = ValueType.value, wrap_str: bool = False |
| 39 | + ) -> Union[int, str]: |
| 40 | + value = super()._pre_process_value(field, value, value_type=value_type, wrap_str=wrap_str) |
| 41 | + return self._wrap_str_value(str(value)) if not isinstance(value, str) else value |
30 | 42 |
|
31 | 43 | def equal_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: |
32 | 44 | if isinstance(value, list): |
33 | 45 | return f"({self.or_token.join([self.equal_modifier(field=field, value=v) for v in value])})" |
34 | | - return f'{field}="{self.apply_value(value)}"' |
| 46 | + return f"{field}={self._pre_process_value(field, value, wrap_str=True)}" |
35 | 47 |
|
36 | 48 | def less_modifier(self, field: str, value: Union[int, str]) -> str: |
37 | | - return f'{field}<"{self.apply_value(value)}"' |
| 49 | + return f"{field}<{self._pre_process_value(field, value, wrap_str=True)}" |
38 | 50 |
|
39 | 51 | def less_or_equal_modifier(self, field: str, value: Union[int, str]) -> str: |
40 | | - return f'{field}<="{self.apply_value(value)}"' |
| 52 | + return f"{field}<={self._pre_process_value(field, value, wrap_str=True)}" |
41 | 53 |
|
42 | 54 | def greater_modifier(self, field: str, value: Union[int, str]) -> str: |
43 | | - return f'{field}>"{self.apply_value(value)}"' |
| 55 | + return f"{field}>{self._pre_process_value(field, value, wrap_str=True)}" |
44 | 56 |
|
45 | 57 | def greater_or_equal_modifier(self, field: str, value: Union[int, str]) -> str: |
46 | | - return f'{field}>="{self.apply_value(value)}"' |
| 58 | + return f"{field}>={self._pre_process_value(field, value, wrap_str=True)}" |
47 | 59 |
|
48 | 60 | def not_equal_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: |
49 | 61 | if isinstance(value, list): |
50 | 62 | return f"({self.or_token.join([self.not_equal_modifier(field=field, value=v) for v in value])})" |
51 | | - return f'{field}!="{self.apply_value(value)}"' |
| 63 | + return f"{field}!={self._pre_process_value(field, value, wrap_str=True)}" |
52 | 64 |
|
53 | 65 | def contains_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: |
54 | 66 | if isinstance(value, list): |
55 | 67 | return f"({self.or_token.join([self.contains_modifier(field=field, value=v) for v in value])})" |
56 | | - return f'{field}="*{self.apply_value(value)}*"' |
| 68 | + return f'{field}="*{self._pre_process_value(field, value)}*"' |
57 | 69 |
|
58 | 70 | def endswith_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: |
59 | 71 | if isinstance(value, list): |
60 | 72 | return f"({self.or_token.join([self.endswith_modifier(field=field, value=v) for v in value])})" |
61 | | - return f'{field}="*{self.apply_value(value)}"' |
| 73 | + return f'{field}="*{self._pre_process_value(field, value)}"' |
62 | 74 |
|
63 | 75 | def startswith_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: |
64 | 76 | if isinstance(value, list): |
65 | 77 | return f"({self.or_token.join([self.startswith_modifier(field=field, value=v) for v in value])})" |
66 | | - return f'{field}="{self.apply_value(value)}*"' |
| 78 | + return f'{field}="{self._pre_process_value(field, value)}*"' |
67 | 79 |
|
68 | 80 | def keywords(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: |
69 | 81 | if isinstance(value, list): |
70 | 82 | return f"({self.or_token.join(self.keywords(field=field, value=v) for v in value)})" |
71 | | - return f'"{self.apply_value(value)}"' |
| 83 | + return f"{self._pre_process_value(field, value, wrap_str=True)}" |
72 | 84 |
|
73 | 85 | def regex_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: # noqa: ARG002 |
74 | 86 | raise UnsupportedRenderMethod(platform_name=self.details.name, method="Regex Expression") |
|
0 commit comments