@@ -737,6 +737,122 @@ def entire_update_many_by_query(
737737 # fastapi_response=response,
738738 # session=session)
739739
740+ @classmethod
741+ def find_one_foreign_tree (cls , api , * ,
742+ query_service ,
743+ parsing_service ,
744+ execute_service ,
745+ async_mode ,
746+ path ,
747+ response_model ,
748+ dependencies ,
749+ request_query_model ,
750+ request_url_param_model ,
751+ function_name ,
752+ db_session ):
753+
754+ if async_mode :
755+ @api .get (path , dependencies = dependencies , response_model = response_model , name = function_name )
756+ async def async_get_one_with_foreign_tree (response : Response ,
757+ request : Request ,
758+ url_param = Depends (request_url_param_model ),
759+ query = Depends (request_query_model ),
760+ session = Depends (
761+ db_session )
762+ ):
763+ target_model = request .url .path .split ("/" )[- 2 ]
764+ join = query .__dict__ .pop ('join_foreign_table' , None )
765+ stmt = query_service .get_many_with_foreign_pk (query = query .__dict__ , join_mode = join ,
766+ target_model = target_model )
767+
768+ query_result = await execute_service .async_execute (session , stmt )
769+
770+ parsed_response = await parsing_service .async_find_one (response_model = response_model ,
771+ sql_execute_result = query_result ,
772+ fastapi_response = response ,
773+ join_mode = join ,
774+ session = session )
775+ return parsed_response
776+ else :
777+ @api .get (path , dependencies = dependencies , response_model = response_model , name = function_name )
778+ def get_one_with_foreign_tree (response : Response ,
779+ request : Request ,
780+ url_param = Depends (request_url_param_model ),
781+ query = Depends (request_query_model ),
782+ session = Depends (
783+ db_session )
784+ ):
785+ target_model = request .url .path .split ("/" )[- 2 ]
786+ join = query .__dict__ .pop ('join_foreign_table' , None )
787+
788+ stmt = query_service .get_many_with_foreign_pk (query = query .__dict__ , join_mode = join ,
789+ target_model = target_model )
790+ query_result = execute_service .execute (session , stmt )
791+ parsed_response = parsing_service .find_one (response_model = response_model ,
792+ sql_execute_result = query_result ,
793+ fastapi_response = response ,
794+ join_mode = join ,
795+ session = session )
796+ return parsed_response
797+
798+ @classmethod
799+ def find_many_foreign_tree (cls , api , * ,
800+ query_service ,
801+ parsing_service ,
802+ execute_service ,
803+ async_mode ,
804+ path ,
805+ response_model ,
806+ dependencies ,
807+ request_query_model ,
808+ request_url_param_model ,
809+ function_name ,
810+ db_session ):
811+
812+ if async_mode :
813+ @api .get (path , dependencies = dependencies , response_model = response_model , name = function_name )
814+ async def async_get_many_with_foreign_tree (response : Response ,
815+ request : Request ,
816+ url_param = Depends (request_url_param_model ),
817+ query = Depends (request_query_model ),
818+ session = Depends (
819+ db_session )
820+ ):
821+ target_model = request .url .path .split ("/" )[- 1 ]
822+ join = query .__dict__ .pop ('join_foreign_table' , None )
823+ stmt = query_service .get_many (query = query .__dict__ , join_mode = join , abstract_param = url_param ,
824+ target_model = target_model )
825+
826+ query_result = await execute_service .async_execute (session , stmt )
827+
828+ parsed_response = await parsing_service .async_find_many (response_model = response_model ,
829+ sql_execute_result = query_result ,
830+ fastapi_response = response ,
831+ join_mode = join ,
832+ session = session )
833+ return parsed_response
834+ else :
835+ @api .get (path , dependencies = dependencies , response_model = response_model , name = function_name )
836+ def get_many_with_foreign_tree (response : Response ,
837+ request : Request ,
838+ url_param = Depends (request_url_param_model ),
839+ query = Depends (request_query_model ),
840+ session = Depends (
841+ db_session )
842+ ):
843+ target_model = request .url .path .split ("/" )[- 1 ]
844+ join = query .__dict__ .pop ('join_foreign_table' , None )
845+ stmt = query_service .get_many (query = query .__dict__ , join_mode = join , abstract_param = url_param .__dict__ ,
846+ target_model = target_model )
847+ query_result = execute_service .execute (session , stmt )
848+ parsed_response = parsing_service .find_many (response_model = response_model ,
849+ sql_execute_result = query_result ,
850+ fastapi_response = response ,
851+ join_mode = join ,
852+ session = session )
853+
854+ return parsed_response
855+
740856
741857class SQLAlchemyPGSQLRouteSource (SQLAlchemyGeneralSQLBaseRouteSource ):
742858 '''
0 commit comments