§
     c•j9  ã                   óD   — d dl mZ d dlmZ d dlmZ  G d„ d¦  «        ZdS )é    )ÚUUID)ÚOptional)ÚBankTransactionc                   óF   — e Zd Zd„ Zd„ Zdeddfd„Zdedee         fd„Z	dS )	ÚBankTransactionRepositoryc                 ó   — || _         d S )N)Ú_conn)ÚselfÚconns     úEC:\Projects\DSCons\app\modules\banking\infrastructure\repositories.pyÚ__init__z"BankTransactionRepository.__init__   s   € ØˆŒ
ˆ
ˆ
ó    c                 ó”   — | j                              ¦   «         5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Na<  
                CREATE SCHEMA IF NOT EXISTS banking;
                CREATE TABLE IF NOT EXISTS banking.transactions (
                    id UUID PRIMARY KEY,
                    bank_account_no TEXT NOT NULL,
                    amount NUMERIC(18, 4) NOT NULL,
                    transaction_date TIMESTAMP WITH TIME ZONE NOT NULL,
                    description TEXT NOT NULL,
                    reconciled BOOLEAN DEFAULT FALSE,
                    reconciled_invoice_id UUID,
                    created_at TIMESTAMP WITH TIME ZONE
                );
            )r	   ÚcursorÚexecute)r
   Úcurs     r   Úensure_schemaz'BankTransactionRepository.ensure_schema	   s’   € ØŒZ×ÒÑ Ô ð 	 CØ�KŠKð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   š=½AÁAÚtxnÚreturnNc                 ód  — |                       ¦   «          | j                             ¦   «         5 }|                     dt	          |j        ¦  «        |j        |j        |j        |j	        |j
        |j        rt	          |j        ¦  «        nd |j        f¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Na¤  
                INSERT INTO banking.transactions 
                (id, bank_account_no, amount, transaction_date, description, reconciled, reconciled_invoice_id, created_at)
                VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
                ON CONFLICT (id) DO UPDATE SET
                    reconciled = EXCLUDED.reconciled,
                    reconciled_invoice_id = EXCLUDED.reconciled_invoice_id;
            )r   r	   r   r   ÚstrÚidÚbank_account_noÚamountÚtransaction_dateÚdescriptionÚ
reconciledÚreconciled_invoice_idÚ
created_at)r
   r   r   s      r   ÚsavezBankTransactionRepository.save   sò   € Ø×ÒÑÔÐØŒZ×ÒÑ Ô ð 	 CØ�KŠKð õ �C”F‘”ØÔ#Ø”
ØÔ$Ø”Ø”Ø25Ô2KÐU•�CÔ-Ñ.Ô.Ð.ÐQUØ”ð	ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ®A*B%Â%B)Â,B)Útxn_idc                 ó  — | j                              ¦   «         5 }|                     dt          |¦  «        f¦  «         |                     ¦   «         }|rt          di |¤Žcd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   d S )Nz0SELECT * FROM banking.transactions WHERE id = %s© )r	   r   r   r   Úfetchoner   )r
   r!   r   Úrows       r   Ú	get_by_idz#BankTransactionRepository.get_by_id.   sà   € ØŒZ×ÒÑ Ô ð 	. CØ�KŠKÐJÍSÐQWÉ[Ì[ÈNÑ[Ô[Ð[Ø—,’,‘.”.ˆCØð .Ý&Ð-Ð-¨Ð-Ð-ð		.ð 	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð.ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð
 ˆts   šAA:Á:A>ÂA>)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r   r   r&   r#   r   r   r   r      s{   € € € € € ðð ð ðð ð ð ˜ð ¨Dð ð ð ð ð* ð ¨°/Ô)Bð ð ð ð ð ð r   r   N)Úuuidr   Útypingr   Ú#app.modules.banking.domain.entitiesr   r   r#   r   r   ú<module>r-      sm   ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ð/ð /ð /ð /ð /ñ /ô /ð /ð /ð /r   