
    Xj
                     f    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 )    )Path)Any)Session)
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deee	f         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S )TenantValidationServicedbc                     || _         d S )N)r	   )selfr	   s     W/lsinfo/ai/hellotax_ai/base_platform/app/services/platform/tenant_validation_service.py__init__z TenantValidationService.__init__   s        	tenant_id
export_dirreturnc                     dg g d}g d}|D ]>}||z  }|                                 s#|d                             d|            d|d<   ?|                     ||          }||d<   |S )	NT)validerrorswarnings)zmanifest.json
postgresqlneo4jmilvusfilesr   z	Missing: Fr   r   )existsappend_validate_postgresql)r   r   r   resultsrequired_filesitempathpg_statss           r   validate_exportz'TenantValidationService.validate_export   s     BB??TTT" 	) 	)D$D;;== )!(();T););<<<#( ,,Y
CC (r   c                    ddl m} d| }| j                             |d| d                    }|                                pd}| j                             |d|                     }|                                pd}||dS )Nr   texttenant_zESELECT COUNT(*) FROM information_schema.tables WHERE table_schema = ''4SELECT COUNT(*) FROM public.users WHERE tenant_id = )tablesusers)
sqlalchemyr%   r	   executescalar)r   r   r   r%   schema_nameresulttable_count
user_counts           r   r   z,TenantValidationService._validate_postgresql   s    ######+	++DfXcfff 
 

 mmoo*DS	SSTT
 
 ]]__)
%
;;;r   tenant_id_1tenant_id_2c                 j    |                      |          }|                      |          }||||k    dS )N)tenant_1tenant_2match)_get_tenant_stats)r   r2   r3   stats_1stats_2s        r   compare_tenantsz'TenantValidationService.compare_tenants,   s=    ((55((55#7gCUVVVr   c                    ddl m} d| }i }| j                             |d|                     }|                                pd|d<   	 | j                             |d| d                    }|                                pd|d<   n# t
          $ r d|d<   Y nw xY w	 | j                             |d| d	                    }|                                pd|d
<   n# t
          $ r d|d
<   Y nw xY w|S )Nr   r$   r&   r(   r*   zSELECT COUNT(*) FROM z).knowledge_bases WHERE is_deleted = falseknowledge_basesz-.knowledge_documents WHERE is_deleted = false	documents)r+   r%   r	   r,   r-   	Exception)r   r   r%   r.   statsr/   s         r   r8   z)TenantValidationService._get_tenant_stats1   sh   ######+	++DS	SSTT
 
  -Ag	)W__c[cccdd F (.}}';!E#$$ 	) 	) 	)'(E#$$$	)	#W__fKfff  F
 "(!5AE+ 	# 	# 	#!"E+	#s&   A B B! B!%A C& &C87C8N)__name__
__module____qualname__r   r   intr   dictstrr   r"   r   r;   r8    r   r   r   r      s        7    
 
$ 
4S> 
 
 
 
<c <t <SRUX < < < < W3 WS WT#s(^ W W W W
3 4S>      r   r   N)pathlibr   typingr   sqlalchemy.ormr   common_loggingr   rA   loggerr   rG   r   r   <module>rM      s                " " " " " " % % % % % %	H		? ? ? ? ? ? ? ? ? ?r   