|
16 | 16 | limitations under the License.
|
17 | 17 | -----------------------------------------------------------------
|
18 | 18 | """
|
| 19 | +from typing import Union |
19 | 20 |
|
20 | 21 | from app.converter.backends.logscale.const import logscale_query_details
|
21 | 22 | from app.converter.backends.logscale.mapping import LogScaleMappings, logscale_mappings
|
|
28 | 29 | class LogScaleFieldValue(BaseQueryFieldValue):
|
29 | 30 | details: PlatformDetails = logscale_query_details
|
30 | 31 |
|
| 32 | + def apply_value(self, value: Union[str, int]): |
| 33 | + if isinstance(value, str) and '"' in value: |
| 34 | + value = value.translate(str.maketrans({'"': r'\"'})) |
| 35 | + return value |
| 36 | + |
31 | 37 | def equal_modifier(self, field, value):
|
32 | 38 | if isinstance(value, list):
|
33 | 39 | return f"({self.or_token.join(self.equal_modifier(field=field, value=v) for v in value)})"
|
34 |
| - return f'{field}="{value}"' |
| 40 | + return f'{field}="{self.apply_value(value)}"' |
35 | 41 |
|
36 | 42 | def contains_modifier(self, field, value):
|
37 | 43 | if isinstance(value, list):
|
38 | 44 | return f"({self.or_token.join(self.contains_modifier(field=field, value=v) for v in value)})"
|
39 |
| - return f'{field}="*{value}*"' |
| 45 | + return f'{field}="*{self.apply_value(value)}*"' |
40 | 46 |
|
41 | 47 | def endswith_modifier(self, field, value):
|
42 | 48 | if isinstance(value, list):
|
43 | 49 | return f"({self.or_token.join(self.endswith_modifier(field=field, value=v) for v in value)})"
|
44 |
| - return f'{field}="*{value}"' |
| 50 | + return f'{field}="*{self.apply_value(value)}"' |
45 | 51 |
|
46 | 52 | def startswith_modifier(self, field, value):
|
47 | 53 | if isinstance(value, list):
|
48 | 54 | return f"({self.or_token.join(self.startswith_modifier(field=field, value=v) for v in value)})"
|
49 |
| - return f'{field}="{value}*"' |
| 55 | + return f'{field}="{self.apply_value(value)}*"' |
50 | 56 |
|
51 | 57 | def regex_modifier(self, field, value):
|
52 | 58 | if isinstance(value, list):
|
53 | 59 | return f"({self.or_token.join(self.regex_modifier(field=field, value=v) for v in value)})"
|
54 |
| - return f'{field}="/{value}/"' |
| 60 | + return f'{field}="/{self.apply_value(value)}/"' |
55 | 61 |
|
56 | 62 | def keywords(self, field, value):
|
57 | 63 | if isinstance(value, list):
|
58 | 64 | return f"({self.or_token.join(self.keywords(field=field, value=v) for v in value)})"
|
59 |
| - return f'"{value}"' |
| 65 | + return f'"{self.apply_value(value)}"' |
60 | 66 |
|
61 | 67 |
|
62 | 68 | class LogScaleQueryRender(BaseQueryRender):
|
|
0 commit comments