
    Xj                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ  ee          Z G d d	          ZdS )
    N)Path)Any)Session)settings)AppException)
get_loggerc                       e Zd ZdefdZdededeee	f         fdZ
dedeee	f         fdZdedeee	f         fdZdedeee	f         fd	Zd
S )TenantImportServicedbc                     || _         d S )N)r   )selfr   s     S/lsinfo/ai/hellotax_ai/base_platform/app/services/platform/tenant_import_service.py__init__zTenantImportService.__init__   s        	tenant_id
export_dirreturnc                    ddl m} d| }ddlm}  |t          j                  }|j        pd}|j        pd}|j        	                    d          }	|j
        }
|j        }| j                             |d|                      | j                                         d	|i}dd l}|                    d
          pd}|dz  dz  }|                                r/t%          |          5 }|                                }d d d            n# 1 swxY w Y   |                    d|          }dd l}|                    ddd          5 }|                    |           |j        }d d d            n# 1 swxY w Y   	 |d|dt3          |          d|
d|	d|g}t5          j        ||dd          }|j        dk    rt;          d|j                   	 dd l}|                     |           n# dd l}|                     |           w xY w|dz  dz  }|                                r?|d|dt3          |          d|
d|	dt3          |          g}t5          j        ||dd          }ddiS )Nr   )texttenant_)urlparse	localhosti8  /zCREATE SCHEMA IF NOT EXISTS 
PGPASSWORDpsqlz(/opt/homebrew/opt/postgresql@15/bin/psql
postgresqlztenant_1.sqltenant_1wz.sqlF)modesuffixdeletez-hz-pz-Uz-dz-fT)envcapture_outputr   zPostgreSQL import failed: zpublic_tenant_data.sqlstatussuccess)!
sqlalchemyr   urllib.parser   r   DATABASE_URLhostnameportpathlstripusernamepasswordr   executecommitshutilwhichexistsopenreadreplacetempfileNamedTemporaryFilewritenamestr
subprocessrun
returncoder   stderrosunlink)r   r   r   r   schema_namer   parseddb_hostdb_portdb_namedb_userdb_passwordr"   r1   r   schema_filefsql_contentr7   tmptmp_filecmdresultr@   public_files                            r   import_postgresqlz%TenantImportService.import_postgresql   sV   ######+	++))))))(/00/0[+%+$$S))/oIKIIJJKKK[)||F##Q'Q </.@ 	$k"" 'affhh' ' ' ' ' ' ' ' ' ' ' ' ' ' '%--j+FFKOOO,,#fU,SS $WZ		+&&&8$ $ $ $ $ $ $ $ $ $ $ $ $ $ $$LL $TPTUUU$))&'SFM'S'STTT * 					(#### 					(#### </2JJ 	RGK  C  ^CSDQQQF)$$s1   +DDD	E22E69E6>AG- -Hc                    ddl m} |dz  dz  }|                                sddiS  |            }t          |d          5 }|                                                    d	          }d d d            n# 1 swxY w Y   |                                5 }|D ]+}|                                r|                    |           ,	 d d d            n# 1 swxY w Y   dd
iS )Nr   )Neo4jClientneo4jzimport.cypherr$   skippedutf-8encodingz;
r%   )	app.services.graph.neo4j_clientrS   r3   r4   r5   splitget_sessionstripr=   )	r   r   rS   cypher_fileneo4j_clientrJ   
statementssessionstmts	            r   import_neo4jz TenantImportService.import_neo4jW   ss   ?????? 7*_<!!## 	)i(("{}}+000 	/A..J	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/%%'' 	&7" & &::<< &KK%%%&	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& )$$s$   (A66A:=A:/CCCc                    ddl m}m} |dz  dz  }|                                sddiS |                    t
          j        t
          j                    |d          }t          |d	
          5 }t          j
        |          }d d d            n# 1 swxY w Y   |r|                    |           dt          |          dS )Nr   )
Collectionconnectionsmilvuszvectors.jsonr$   rU   )hostr*   document_vectorsrV   rW   r%   )r$   count)pymilvusrd   re   r3   connectr   MILVUS_HOSTMILVUS_PORTr4   jsonloadinsertlen)r   r   rd   re   vectors_file
collectionrJ   vectors_datas           r   import_milvusz!TenantImportService.import_milvusf   s   44444444!H,~=""$$ 	)i((!5H<PQQQZ 233
,111 	(Q9Q<<L	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	,l+++#c,.?.?@@@s   0BBBc                    ddl m} |dz  }|                                sddiS  |t          j        t          j        t          j        t          j                  }d}|                    d          D ]l}|	                                rVt          |                    |                    }|                    t          j        |t          |                     |d	z  }md
|dS )Nr   )MinioServicefilesr$   rU   )endpoint
access_key
secret_keysecure*)bucket_nameobject_name	file_path   r%   )r$   uploaded)app.services.storage.miniorw   r3   r   MINIO_ENDPOINTMINIO_ACCESS_KEYMINIO_SECRET_KEYMINIO_SECURErglobis_filer;   relative_toupload_fileMINIO_BUCKET)r   r   rw   	files_dirminior   r   r   s           r   import_filesz TenantImportService.import_filest   s   ;;;;;;(	!! 	)i((,00(	
 
 
 "-- 	 	I  "" !)"7"7	"B"BCC!! ( 5 +!)nn "   
 A#:::r   N)__name__
__module____qualname__r   r   intr   dictr;   r   rQ   rb   ru   r    r   r   r
   r
      s        7    A%3 A%D A%T#s(^ A% A% A% A%F%t %S#X % % % %A Ac3h A A A A;t ;S#X ; ; ; ; ; ;r   r
   )rn   r<   pathlibr   typingr   sqlalchemy.ormr   
app.configr   app.core.exceptionsr   common_loggingr   r   loggerr
   r   r   r   <module>r      s                     " " " " " "       , , , , , , % % % % % %	H		{; {; {; {; {; {; {; {; {; {;r   