Movatterモバイル変換


[0]ホーム

URL:


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

Commit3e2c071

Browse files
authored
Merge pull request#206 from UncoderIO/gis-7011
sql str value manager
2 parents416f5ca +ebc3e81 commit3e2c071

File tree

18 files changed

+177
-101
lines changed

18 files changed

+177
-101
lines changed

‎uncoder-core/app/translator/core/str_value_manager.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,11 @@ class StrValueManager:
182182
container_spec_symbols_map:ClassVar[dict[type[BaseSpecSymbol],str]]=CONTAINER_SPEC_SYMBOLS_MAP
183183

184184
@staticmethod
185-
deffrom_str_to_container(value:str)->StrValue:
185+
deffrom_str_to_container(
186+
value:str,
187+
value_type:str=ValueType.value,# noqa: ARG004
188+
escape_symbol:Optional[str]=None,# noqa: ARG004
189+
)->StrValue:
186190
returnStrValue(value=value,split_value=[value])
187191

188192
deffrom_re_str_to_container(self,value:str)->StrValue:

‎uncoder-core/app/translator/core/tokenizer.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,7 @@ def search_multi_value(
162162

163163
def_get_field_value_match(self,query:str,operator:str,field_name:str,value_pattern:str)->re.Match:
164164
field_value_pattern=self.get_field_value_pattern(operator,field_name,value_pattern)
165-
field_value_regex=re.compile(field_value_pattern,re.IGNORECASE)
166-
field_value_match=re.match(field_value_regex,query)
165+
field_value_match=re.match(field_value_pattern,query,re.IGNORECASE)
167166
iffield_value_matchisNone:
168167
raiseTokenizerGeneralException(error=f"Value couldn't be found in query part:{query}")
169168

‎uncoder-core/app/translator/platforms/anomali/renders/anomali.py‎

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -17,65 +17,37 @@
1717
-----------------------------------------------------------------
1818
"""
1919
fromapp.translator.constimportDEFAULT_VALUE_TYPE
20-
fromapp.translator.core.custom_types.valuesimportValueType
2120
fromapp.translator.core.models.platform_detailsimportPlatformDetails
22-
fromapp.translator.core.renderimportBaseFieldValueRender,PlatformQueryRender
21+
fromapp.translator.core.renderimportPlatformQueryRender
2322
fromapp.translator.managersimportrender_manager
2423
fromapp.translator.platforms.anomali.constimportanomali_query_details
2524
fromapp.translator.platforms.anomali.mappingimportAnomaliMappings,anomali_query_mappings
26-
fromapp.translator.platforms.base.sql.str_value_managerimportsql_str_value_manager
25+
fromapp.translator.platforms.base.sql.renders.sqlimportSqlFieldValueRender
2726

2827

29-
classAnomaliFieldValueRender(BaseFieldValueRender):
28+
classAnomaliFieldValueRender(SqlFieldValueRender):
3029
details:PlatformDetails=anomali_query_details
31-
str_value_manager=sql_str_value_manager
32-
33-
@staticmethod
34-
def_wrap_str_value(value:str)->str:
35-
returnf"'{value}'"
36-
37-
defequal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
38-
ifisinstance(value,list):
39-
returnf"({self.or_token.join([self.equal_modifier(field=field,value=v)forvinvalue])})"
40-
returnf"{field} ={self._pre_process_value(field,value,wrap_str=True)}"
41-
42-
defnot_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
43-
ifisinstance(value,list):
44-
returnf"({self.or_token.join([self.not_equal_modifier(field=field,value=v)forvinvalue])})"
45-
returnf"{field} !={self._pre_process_value(field,value,wrap_str=True)}"
46-
47-
defless_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
48-
returnf"{field} <{self._pre_process_value(field,value,wrap_str=True)}"
49-
50-
defless_or_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
51-
returnf"{field} <={self._pre_process_value(field,value,wrap_str=True)}"
52-
53-
defgreater_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
54-
returnf"{field} >{self._pre_process_value(field,value,wrap_str=True)}"
55-
56-
defgreater_or_equal_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
57-
returnf"{field} >={self._pre_process_value(field,value,wrap_str=True)}"
5830

5931
defcontains_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
6032
ifisinstance(value,list):
6133
returnf"({self.or_token.join(self.contains_modifier(field=field,value=v)forvinvalue)})"
62-
returnf"{field} like '%{self._pre_process_value(field,value)}%'"
34+
35+
value=f"'%{self._pre_process_value(field,value)}%'"
36+
returnf"{field} like{value}"
6337

6438
defendswith_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
6539
ifisinstance(value,list):
6640
returnf"({self.or_token.join(self.endswith_modifier(field=field,value=v)forvinvalue)})"
67-
returnf"{field} like '%{self._pre_process_value(field,value)}'"
41+
42+
value=f"'%{self._pre_process_value(field,value)}'"
43+
returnf"{field} like{value}"
6844

6945
defstartswith_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
7046
ifisinstance(value,list):
7147
returnf"({self.or_token.join(self.startswith_modifier(field=field,value=v)forvinvalue)})"
72-
returnf"{field} like '{self._pre_process_value(field,value)}%'"
7348

74-
defregex_modifier(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
75-
ifisinstance(value,list):
76-
returnf"({self.or_token.join(self.regex_modifier(field=field,value=v)forvinvalue)})"
77-
regex_str=self._pre_process_value(field,value,value_type=ValueType.regex_value,wrap_str=True)
78-
returnf"regexp_like({field},{regex_str})"
49+
value=f"'{self._pre_process_value(field,value)}%'"
50+
returnf"{field} like{value}"
7951

8052
defkeywords(self,field:str,value:DEFAULT_VALUE_TYPE)->str:
8153
returnf'message contains "{self._pre_process_value(field,value)}"'

‎uncoder-core/app/translator/platforms/base/aql/str_value_manager.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"""
1919

2020
importcopy
21-
fromtypingimportClassVar
21+
fromtypingimportClassVar,Optional
2222

2323
fromapp.translator.core.custom_types.valuesimportValueType
2424
fromapp.translator.core.str_value_managerimport (
@@ -55,7 +55,12 @@ class AQLStrValueManager(StrValueManager):
5555
"%":UnboundLenWildCard,
5656
}
5757

58-
deffrom_str_to_container(self,value:str)->StrValue:
58+
deffrom_str_to_container(
59+
self,
60+
value:str,
61+
value_type:str=ValueType.value,# noqa: ARG002
62+
escape_symbol:Optional[str]=None,# noqa: ARG002
63+
)->StrValue:
5964
split= []
6065
prev_char=None
6166
forcharinvalue:

‎uncoder-core/app/translator/platforms/base/lucene/str_value_manager.py‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
-----------------------------------------------------------------
1818
"""
1919

20-
fromtypingimportClassVar
20+
fromtypingimportClassVar,Optional
2121

22+
fromapp.translator.core.custom_types.valuesimportValueType
2223
fromapp.translator.core.str_value_managerimport (
2324
BaseSpecSymbol,
2425
ReAnySymbol,
@@ -68,7 +69,12 @@ class LuceneStrValueManager(StrValueManager):
6869
}
6970
re_str_spec_symbols_map=RE_STR_SPEC_SYMBOLS_MAP
7071

71-
deffrom_str_to_container(self,value:str)->StrValue:
72+
deffrom_str_to_container(
73+
self,
74+
value:str,
75+
value_type:str=ValueType.value,# noqa: ARG002
76+
escape_symbol:Optional[str]=None,# noqa: ARG002
77+
)->StrValue:
7278
split= []
7379
prev_char=None
7480
forcharinvalue:

‎uncoder-core/app/translator/platforms/base/spl/renders/spl.py‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ def _wrap_str_value(value: str) -> str:
3434
returnf'"{value}"'
3535

3636
def_pre_process_value(
37-
self,field:str,value:Union[int,str,StrValue],value_type:str=ValueType.value,wrap_str:bool=False
37+
self,
38+
field:str,
39+
value:Union[bool,int,str,StrValue],
40+
value_type:str=ValueType.value,
41+
wrap_str:bool=False,
42+
wrap_int:bool=False,# noqa: ARG002
3843
)->Union[int,str]:
3944
value=super()._pre_process_value(field,value,value_type=value_type,wrap_str=wrap_str)
4045
returnself._wrap_str_value(str(value))ifnotisinstance(value,str)elsevalue

‎uncoder-core/app/translator/platforms/base/spl/str_value_manager.py‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
limitations under the License.
1717
-----------------------------------------------------------------
1818
"""
19-
fromtypingimportClassVar
19+
fromtypingimportClassVar,Optional
2020

21+
fromapp.translator.core.custom_types.valuesimportValueType
2122
fromapp.translator.core.str_value_managerimportBaseSpecSymbol,StrValue,StrValueManager,UnboundLenWildCard
2223
fromapp.translator.platforms.base.spl.escape_managerimportspl_escape_manager
2324

@@ -26,7 +27,12 @@ class SplStrValueManager(StrValueManager):
2627
escape_manager=spl_escape_manager
2728
str_spec_symbols_map:ClassVar[dict[str,type[BaseSpecSymbol]]]= {"*":UnboundLenWildCard}
2829

29-
deffrom_str_to_container(self,value:str)->StrValue:
30+
deffrom_str_to_container(
31+
self,
32+
value:str,
33+
value_type:str=ValueType.value,# noqa: ARG002
34+
escape_symbol:Optional[str]=None,# noqa: ARG002
35+
)->StrValue:
3036
split= []
3137
prev_char=None
3238
forcharinvalue:

‎uncoder-core/app/translator/platforms/base/sql/custom_types/__init__.py‎

Whitespace-only changes.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
fromapp.translator.core.custom_types.valuesimportValueType
2+
3+
4+
classSQLValueType(ValueType):
5+
like_value="like_value"

‎uncoder-core/app/translator/platforms/base/sql/escape_manager.py‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
fromtypingimportClassVar
22

3-
fromapp.translator.core.custom_types.valuesimportValueType
43
fromapp.translator.core.escape_managerimportEscapeManager
54
fromapp.translator.core.models.escape_detailsimportEscapeDetails
5+
fromapp.translator.platforms.base.sql.custom_types.valuesimportSQLValueType
66

77

88
classSQLEscapeManager(EscapeManager):
99
escape_map:ClassVar[dict[str,list[EscapeDetails]]]= {
10-
ValueType.value: [EscapeDetails(pattern=r"(')",escape_symbols=r"'\1")],
11-
ValueType.regex_value: [
10+
SQLValueType.value: [EscapeDetails(pattern=r"(')",escape_symbols=r"'\1")],
11+
SQLValueType.like_value: [EscapeDetails(pattern=r"(['%_\\])",escape_symbols=r"\\\1")],
12+
SQLValueType.regex_value: [
1213
EscapeDetails(pattern=r"([$^*+()\[\]{}|.?\-\\])",escape_symbols=r"\\\1"),
1314
EscapeDetails(pattern=r"(')",escape_symbols=r"'\1"),
1415
],

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp