2525
2626from app .translator .core .exceptions .functions import NotSupportedFunctionException
2727from app .translator .core .mapping import SourceMapping
28- from app .translator .core .models .field import Alias , Field
2928from app .translator .core .models .functions .base import Function , ParsedFunctions , RenderedFunctions
29+ from app .translator .core .models .query_tokens .field import Alias , Field , PredefinedField
3030from app .translator .tools .utils import execute_module
3131from settings import INIT_FUNCTIONS
3232
@@ -83,7 +83,6 @@ def parse(self, func_body: str, raw: str) -> Function:
8383class FunctionRender (ABC ):
8484 function_names_map : ClassVar [dict [str , str ]] = {}
8585 order_to_render : int = 0
86- in_query_render : bool = False
8786 render_to_prefix : bool = False
8887 manager : PlatformFunctionsManager = None
8988
@@ -95,17 +94,19 @@ def set_functions_manager(self, manager: PlatformFunctionsManager) -> FunctionRe
9594 def render (self , function : Function , source_mapping : SourceMapping ) -> str :
9695 raise NotImplementedError
9796
98- @staticmethod
99- def map_field (field : Union [Alias , Field ], source_mapping : SourceMapping ) -> str :
97+ def map_field (self , field : Union [Alias , Field ], source_mapping : SourceMapping ) -> str :
10098 if isinstance (field , Alias ):
10199 return field .name
102100
103- generic_field_name = field . get_generic_field_name ( source_mapping . source_id )
104- mapped_field = source_mapping . fields_mapping . get_platform_field_name ( generic_field_name = generic_field_name )
105- if isinstance ( mapped_field , list ):
106- mapped_field = mapped_field [0 ]
101+ if isinstance ( field , Field ):
102+ mappings = self . manager . platform_functions . platform_query_render . mappings
103+ mapped_fields = mappings . map_field ( field , source_mapping )
104+ return mapped_fields [0 ]
107105
108- return mapped_field if mapped_field else field .source_name
106+ if isinstance (field , PredefinedField ):
107+ return self .manager .platform_functions .platform_query_render .map_predefined_field (field )
108+
109+ raise NotSupportedFunctionException
109110
110111
111112class PlatformFunctionsManager :
@@ -117,7 +118,6 @@ def __init__(self):
117118 self ._parsers_map : dict [str , FunctionParser ] = {} # {platform_func_name: FunctionParser}
118119
119120 self ._renders_map : dict [str , FunctionRender ] = {} # {generic_func_name: FunctionRender}
120- self ._in_query_renders_map : dict [str , FunctionRender ] = {} # {generic_func_name: FunctionRender}
121121 self ._order_to_render : dict [str , int ] = {} # {generic_func_name: int}
122122
123123 def register_render (self , render_class : type [FunctionRender ]) -> type [FunctionRender ]:
@@ -126,8 +126,6 @@ def register_render(self, render_class: type[FunctionRender]) -> type[FunctionRe
126126 for generic_function_name in render .function_names_map :
127127 self ._renders_map [generic_function_name ] = render
128128 self ._order_to_render [generic_function_name ] = render .order_to_render
129- if render .in_query_render :
130- self ._in_query_renders_map [generic_function_name ] = render
131129
132130 return render_class
133131
@@ -149,24 +147,16 @@ def get_hof_parser(self, platform_func_name: str) -> HigherOrderFunctionParser:
149147
150148 raise NotSupportedFunctionException
151149
152- def get_parser (self , platform_func_name : str ) -> FunctionParser :
150+ def get_parser (self , platform_func_name : str ) -> Optional [ FunctionParser ] :
153151 if INIT_FUNCTIONS and (parser := self ._parsers_map .get (platform_func_name )):
154152 return parser
155153
156- raise NotSupportedFunctionException
157-
158154 def get_render (self , generic_func_name : str ) -> FunctionRender :
159155 if INIT_FUNCTIONS and (render := self ._renders_map .get (generic_func_name )):
160156 return render
161157
162158 raise NotSupportedFunctionException
163159
164- def get_in_query_render (self , generic_func_name : str ) -> FunctionRender :
165- if INIT_FUNCTIONS and (render := self ._in_query_renders_map .get (generic_func_name )):
166- return render
167-
168- raise NotSupportedFunctionException
169-
170160 @property
171161 def order_to_render (self ) -> dict [str , int ]:
172162 if INIT_FUNCTIONS :
0 commit comments