
    Pkjj                    ~    d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 h dZ
dd
ZdddddddddZddZd dZd!dZdS )"    )annotations)
ConnectionIntegrityError)record_audit_event)	stable_idutc_now>   Bank/BrokerHardware WalletSoftware WalletDeFiExchange	Sonstigeswallet_typestrreturnNonec                `    | t           vr$t          dt          t                                d S )Nzwallet_type must be one of )VALID_WALLET_TYPES
ValueErrorsorted)r   s    $src/jarvis_finance/crypto/wallets.py_validate_wallet_typer      s6    ,,,Sv>P7Q7QSSTTT -,    N)wallet_addressplatform_providernetwork_chainownerlast_verified_atnotesconnr   wallet_namer   
str | Noner   r   r   r   r   c               D   t          |           t                      }	t          d|          }
	 |                     d|
|||||||||	f
           n"# t          $ r}t          d          |d }~ww xY wt          | ddd|
||ddd	
           |                                  |
S )Nwalleta  
            INSERT INTO crypto_wallets(
                wallet_id, wallet_name, wallet_type, platform_provider, network_chain,
                wallet_address, owner, is_active, last_verified_at, notes, created_at
            ) VALUES (?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?)
            wallet_name must be uniquecrypto_walletscreate_walletcrypto_wallet)r!   r   Tsystemsourceactionentity_type	entity_id
new_values	confirmed
created_by)r   r   r   executer   r   r   commit)r    r!   r   r   r   r   r   r   r   now	wallet_idexcs               r   r'   r'      s     +&&&
))C(K00I@ [2C]Tbdik{  ~C  EH  I	
 	
 	
 	
  @ @ @566C?@##.{KK	 	 	 	 	KKMMMs    A 
A/A**A/r5   c                z    |                      d|f                                          }|t          |          |S )Nz.SELECT * FROM crypto_wallets WHERE wallet_id=?)r2   fetchoneKeyError)r    r5   rows      r   
get_walletr;   @   s<    
,,G)
V
V
_
_
a
aC
{y!!!Jr   c           
        h dd|v rt          |d                    fd|                                D             }|sd S t                      |d<   d                    d |D                       }	 |                     d| dg |                                |R            n"# t          $ r}t          d	          |d }~ww xY wt          | d
dd||dd           | 	                                 d S )N>	   r   r   	is_activer!   r   r   r   r   r   r   c                $    i | ]\  }}|v 	||S  r?   ).0kvalloweds      r   
<dictcomp>z!update_wallet.<locals>.<dictcomp>K   s$    >>>dagQr   
updated_atz, c              3      K   | ]	}| d V  
dS )z=?Nr?   )r@   rA   s     r   	<genexpr>z update_wallet.<locals>.<genexpr>O   s(      44qHHH444444r   zUPDATE crypto_wallets SET z WHERE wallet_id=?r%   r&   update_walletr(   Tr)   r*   )
r   itemsr   joinr2   valuesr   r   r   r3   )r    r5   changescleanassignmentsr6   rC   s         @r   rH   rH   G   sL    X  X  XGgm4555>>>>gmmoo>>>E !))E,))44e44444K@Q+QQQSoUZUaUaUcUcSoenSoSopppp @ @ @566C?@#	 	 	 	 	KKMMMMMs   41B& &
C0C  Cnotec               r    |                                 st          d          t          | |d|           d S )Nz!deactivate wallet requires a noter   )r=   r   )stripr   rH   )r    r5   rO   s      r   deactivate_walletrR   a   s>    ::<< ><===$	Qd;;;;;;r   )r   r   r   r   )r    r   r!   r   r   r   r   r"   r   r"   r   r"   r   r"   r   r"   r   r"   r   r   )r    r   r5   r   )r    r   r5   r   r   r   )r    r   r5   r   rO   r   r   r   )
__future__r   sqlite3r   r   jarvis_finance.audit.logr   jarvis_finance.imports.commonr   r   r   r   r'   r;   rH   rR   r?   r   r   <module>rW      s    " " " " " " . . . . . . . . 7 7 7 7 7 7 < < < < < < < <   U U U U "&$( $#'& & & & & &R      4< < < < < <r   