
    bj                    f    d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ dddddddZddZdS )    )annotations)
ConnectionIntegrityError)record_audit_event)	stable_idutc_now)create_alertNF)coingecko_idnetwork_chain_defaultis_stablecoinnotesconnr   	coin_namestrsymbolr
   
str | Noner   r   boolr   returnc               f   |                                                                 }|                     d|f                                          }t	          d|p|||pd          }t                      }		 |                     d|||||t          |          ||	f           n"# t          $ r}
t          d          |
d }
~
ww xY w|st          | ddd|d	d
||dd		  	         |r t          | ddd|dd||d         d           t          | ddd||||ddd           |                                  |S )Nz1SELECT asset_id FROM crypto_assets WHERE symbol=?cryptoasset a  
            INSERT INTO crypto_assets(
                asset_id, coin_name, symbol, coingecko_id, network_chain_default,
                is_stablecoin, price_provider_primary, is_active, notes, created_at
            ) VALUES (?, ?, ?, ?, ?, ?, 'CoinGecko', 1, ?, ?)
            z=crypto asset uniqueness conflict; coingecko_id must be uniquewarnungcryptocrypto_assetmissing_coingecko_idzBCrypto asset has no CoinGecko ID; valuation quality is incomplete.)r   r   )prioritycategoryentity_type	entity_idrule_idmessageevidencefingerprintcrypto_symbol_conflictz@Crypto symbol is not unique; manual asset selection is required.asset_id)r   existing_asset_id)r   r   r   r   r    r!   r"   crypto_assetscreate_crypto_asset)r   r   r
   Tsystem)sourceactionr   r   
new_values	confirmed
created_by)upperstripexecutefetchoner   r   intr   
ValueErrorr	   r   commit)r   r   r   r
   r   r   r   existing_symbolr%   nowexcs              #src/jarvis_finance/crypto/assets.pyr(   r(   
   s    \\^^!!##Fll#VY_XabbkkmmO(A	6K`KfdfggH
))Cc y&,8MsS`OaOachjmn	
 	
 	
 	
  c c cXYY_bbc 
&*X &Y??.
	
 
	
 
	
 
	
  

&,V &_Z=XYY		
 		
 		
 		
 $"!*fl[[	 	 	 	 	KKMMMOs   5+B! !
C +B;;C r%   c                z    |                      d|f                                          }|t          |          |S )Nz,SELECT * FROM crypto_assets WHERE asset_id=?)r1   r2   KeyError)r   r%   rows      r9   get_crypto_assetr=   I   s<    
,,E{
S
S
\
\
^
^C
{x   J    )r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   )r   r   r%   r   )
__future__r   sqlite3r   r   jarvis_finance.audit.logr   jarvis_finance.imports.commonr   r   jarvis_finance.quality.alertsr	   r(   r=    r>   r9   <module>rE      s    " " " " " " . . . . . . . . 7 7 7 7 7 7 < < < < < < < < 6 6 6 6 6 6  $(,< < < < < <~     r>   