Skip to content

Commit 327dbe2

Browse files
committed
Improve query bild
1 parent 5e4f6d4 commit 327dbe2

File tree

4 files changed

+16
-28
lines changed

4 files changed

+16
-28
lines changed

uncoder-core/app/translator/core/render.py

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from typing import Optional, Union
2222

2323
from app.translator.const import DEFAULT_VALUE_TYPE
24-
from app.translator.core.context_vars import return_only_first_query_ctx_var
2524
from app.translator.core.custom_types.tokens import LogicalOperatorType, OperatorType
2625
from app.translator.core.custom_types.values import ValueType
2726
from app.translator.core.escape_manager import EscapeManager
@@ -192,8 +191,8 @@ class PlatformQueryRender(QueryRender):
192191

193192
field_value_map = BaseQueryFieldValue(or_token=or_token)
194193

195-
query_pattern = "{table} {query} {functions}"
196-
raw_log_field_pattern_map: dict = None
194+
query_pattern = "{prefix}{query}{functions}"
195+
raw_log_field_pattern: str = None
197196

198197
def __init__(self):
199198
self.operator_map = {
@@ -202,6 +201,12 @@ def __init__(self):
202201
LogicalOperatorType.NOT: f" {self.not_token} ",
203202
}
204203

204+
def query_concatenation(self, prefix: str, search: str, functions: str) -> str:
205+
prefix = prefix if prefix else ""
206+
search = f" {search}" if search else ""
207+
functions = f" {functions}" if functions else ""
208+
return self.query_pattern.format(prefix=prefix, query=search, functions=functions).strip()
209+
205210
def generate_prefix(self, log_source_signature: LogSourceSignature, functions_prefix: str = "") -> str: # noqa: ARG002
206211
if str(log_source_signature):
207212
return f"{log_source_signature!s} {self.and_token}"
@@ -283,8 +288,7 @@ def finalize_query(
283288
*args, # noqa: ARG002
284289
**kwargs, # noqa: ARG002
285290
) -> str:
286-
query = self.query_pattern.format(prefix=prefix, query=query, functions=functions).strip()
287-
291+
query = self.query_concatenation(prefix=prefix, search=query, functions=functions)
288292
query = self.wrap_query_with_meta_info(meta_info=meta_info, query=query)
289293
if not_supported_functions:
290294
rendered_not_supported = self.render_not_supported_functions(not_supported_functions)
@@ -325,23 +329,7 @@ def _generate_from_raw_query_container(self, query_container: RawQueryContainer)
325329
prefix="", query=query_container.query, functions="", meta_info=query_container.meta_info
326330
)
327331

328-
def process_raw_log_field(self, field: str, field_type: str) -> Optional[str]:
329-
if raw_log_field_pattern := self.raw_log_field_pattern_map.get(field_type):
330-
return raw_log_field_pattern.pattern.format(field=field)
331-
332-
def process_raw_log_field_prefix(self, field: str, source_mapping: SourceMapping) -> Optional[list]:
333-
if isinstance(field, list):
334-
list_of_prefix = []
335-
for f in field:
336-
if prepared_prefix := self.process_raw_log_field_prefix(field=f, source_mapping=source_mapping):
337-
list_of_prefix.extend(prepared_prefix)
338-
return list_of_prefix
339-
if raw_log_field_type := source_mapping.raw_log_fields.get(field):
340-
return [self.process_raw_log_field(field=field, field_type=raw_log_field_type)]
341-
342332
def generate_raw_log_fields(self, fields: list[Field], source_mapping: SourceMapping) -> str:
343-
if self.raw_log_field_pattern_map is None:
344-
return ""
345333
defined_raw_log_fields = []
346334
for field in fields:
347335
mapped_field = source_mapping.fields_mapping.get_platform_field_name(generic_field_name=field.source_name)
@@ -352,8 +340,10 @@ def generate_raw_log_fields(self, fields: list[Field], source_mapping: SourceMap
352340
)
353341
if not mapped_field and self.is_strict_mapping:
354342
raise StrictPlatformException(field_name=field.source_name, platform_name=self.details.name)
355-
if field_prefix := self.process_raw_log_field_prefix(field=mapped_field, source_mapping=source_mapping):
356-
defined_raw_log_fields.extend(field_prefix)
343+
if mapped_field not in source_mapping.raw_log_fields:
344+
continue
345+
field_prefix = self.raw_log_field_pattern.format(field=mapped_field)
346+
defined_raw_log_fields.append(field_prefix)
357347
return "\n".join(set(defined_raw_log_fields))
358348

359349
def _generate_from_tokenized_query_container(self, query_container: TokenizedQueryContainer) -> str:
@@ -384,8 +374,6 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
384374
meta_info=query_container.meta_info,
385375
source_mapping=source_mapping,
386376
)
387-
if return_only_first_query_ctx_var.get() is True:
388-
return finalized_query
389377
queries_map[source_mapping.source_id] = finalized_query
390378
if not queries_map and errors:
391379
raise errors[0]

uncoder-core/app/translator/platforms/athena/renders/athena.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,6 @@ class AthenaQueryRender(SqlQueryRender):
3535
or_token = "OR"
3636

3737
field_value_map = AthenaFieldValue(or_token=or_token)
38-
query_pattern = "{prefix} WHERE {query} {functions}"
38+
query_pattern = "{prefix} WHERE{query}{functions}"
3939
comment_symbol = "--"
4040
is_single_line_comment = True

uncoder-core/app/translator/platforms/base/aql/renders/aql.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class AQLQueryRender(PlatformQueryRender):
127127
not_token = "NOT"
128128

129129
field_value_map = AQLFieldValue(or_token=or_token)
130-
query_pattern = "{prefix} AND {query} {functions}"
130+
query_pattern = "{prefix} AND{query}{functions}"
131131

132132
def generate_prefix(self, log_source_signature: AQLLogSourceSignature, functions_prefix: str = "") -> str: # noqa: ARG002
133133
table = str(log_source_signature)

uncoder-core/app/translator/platforms/base/lucene/renders/lucene.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class LuceneQueryRender(PlatformQueryRender):
106106
and_token = "AND"
107107
not_token = "NOT"
108108

109-
query_pattern = "{query} {functions}"
109+
query_pattern = "{query}{functions}"
110110

111111
comment_symbol = "//"
112112
is_single_line_comment = True

0 commit comments

Comments
 (0)