44from typing import Any
55
66from syncmaster .config import Settings
7- from syncmaster .db .models import Connection , Transfer
7+ from syncmaster .db .models import Connection , Run
88from syncmaster .dto .connections import (
99 HDFSConnectionDTO ,
1010 HiveConnectionDTO ,
2121)
2222from syncmaster .exceptions .connection import ConnectionTypeNotRecognizedError
2323from syncmaster .worker .handlers .base import Handler
24+ from syncmaster .worker .handlers .db .hive import HiveHandler
25+ from syncmaster .worker .handlers .db .oracle import OracleHandler
26+ from syncmaster .worker .handlers .db .postgres import PostgresHandler
2427from syncmaster .worker .handlers .file .hdfs import HDFSHandler
2528from syncmaster .worker .handlers .file .s3 import S3Handler
26- from syncmaster .worker .handlers .hive import HiveHandler
27- from syncmaster .worker .handlers .oracle import OracleHandler
28- from syncmaster .worker .handlers .postgres import PostgresHandler
2929
3030logger = logging .getLogger (__name__ )
3131
@@ -65,47 +65,40 @@ class TransferController:
6565
6666 def __init__ (
6767 self ,
68- transfer : Transfer ,
68+ run : Run ,
6969 source_connection : Connection ,
7070 source_auth_data : dict ,
7171 target_connection : Connection ,
7272 target_auth_data : dict ,
7373 settings : Settings ,
7474 ):
75+ self .run = run
76+ self .settings = settings
7577 self .source_handler = self .get_handler (
7678 connection_data = source_connection .data ,
77- transfer_params = transfer .source_params ,
79+ transfer_params = run . transfer .source_params ,
7880 connection_auth_data = source_auth_data ,
7981 )
8082 self .target_handler = self .get_handler (
8183 connection_data = target_connection .data ,
82- transfer_params = transfer .target_params ,
84+ transfer_params = run . transfer .target_params ,
8385 connection_auth_data = target_auth_data ,
8486 )
85- spark = settings .CREATE_SPARK_SESSION_FUNCTION (
86- settings ,
87- target = self .target_handler .connection_dto ,
87+
88+ def perform_transfer (self ) -> None :
89+ spark = self .settings .CREATE_SPARK_SESSION_FUNCTION (
90+ settings = self .settings ,
91+ run = self .run ,
8892 source = self .source_handler .connection_dto ,
93+ target = self .target_handler .connection_dto ,
8994 )
9095
91- self .source_handler .set_spark (spark )
92- self .target_handler .set_spark (spark )
93- logger .info ("source connection = %s" , self .source_handler )
94- logger .info ("target connection = %s" , self .target_handler )
95-
96- def start_transfer (self ) -> None :
97- self .source_handler .init_connection ()
98- self .source_handler .init_reader ()
99-
100- self .target_handler .init_connection ()
101- self .target_handler .init_writer ()
102- logger .info ("Source and target were initialized" )
103-
104- df = self .target_handler .normalize_column_name (self .source_handler .read ())
105- logger .info ("Data has been read" )
96+ with spark :
97+ self .source_handler .connect (spark )
98+ self .target_handler .connect (spark )
10699
107- self .target_handler . write ( df )
108- logger . info ( "Data has been inserted" )
100+ df = self .source_handler . read ( )
101+ self . target_handler . write ( df )
109102
110103 def get_handler (
111104 self ,
@@ -114,7 +107,8 @@ def get_handler(
114107 transfer_params : dict [str , Any ],
115108 ) -> Handler :
116109 connection_data .update (connection_auth_data )
117- handler_type = connection_data ["type" ]
110+ handler_type = connection_data .pop ("type" )
111+ transfer_params .pop ("type" , None )
118112
119113 if connection_handler_proxy .get (handler_type , None ) is None :
120114 raise ConnectionTypeNotRecognizedError
0 commit comments