
    YFi              	           d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZ d dlmZmZ d dlmZ d dlmZ  G d	 d
eeeeef         Z eee      Zy)    )Session)or_)QueryPaginator)OptionalTupleUnionListDict)User)UserCreateSchemaUserUpdateSchema)UserResponseSchema)BaseRepositoryc                       e Zd ZdedefdZdedefdZdedefdZ	dedede
fd	Zdedefd
Zdddgddddfdedee   dee   dee   dee   dedededeee   ef   fdZy)UserRepositorydbpayloadc                    K   t        |j                  |j                  |j                        }t	        d|        |j                  |       |j                          |j                  |       |S w)N)nameemailpasswordz$===============db_user==============)r   r   r   r   printaddcommitrefresh)selfr   r   db_users       S/var/www/html/BankruptcyAI-uat/bankruptcy-ai/src/modules/users/repositories/user.pycreate_userzUserRepository.create_user   s^     --%%

 	4WI>?
w
		


7s   A/A1user_idc                     |j                  t              j                  t        j                  |k(        j	                         S N)queryr   filteridfirst)r   r   r    s      r   get_user_by_idzUserRepository.get_user_by_id   s-    xx~$$TWW%78>>@@    r   c                     |j                  t              j                  t        j                  |k(        j	                         S r"   )r#   r   r$   r   r&   )r   r   r   s      r   get_user_by_emailz UserRepository.get_user_by_email   s-    xx~$$TZZ5%89??AAr(   paylaodc                 <   |j                  t              j                  t        j                  |k(        j	                         }|rV|j                  d      j                         D ]  \  }}t        |||        |j                          |j                  |       |S )NT)exclude_unset)
r#   r   r$   r%   r&   
model_dumpitemssetattrr   r   )r   r   r    r+   r   keyvalues          r   update_userzUserRepository.update_user!   s    ((4.''7(:;AAC%00t0DJJL -
Ue,-IIKJJwr(   c                     |j                  t              j                  t        j                  |k(        j	                         }|r!|j                  |       |j                          |S r"   )r#   r   r$   r%   r&   deleter   )r   r   r    r   s       r   delete_userzUserRepository.delete_user*   sI    ((4.''7(:;AACIIgIIKr(   Nz-created_atF Tskiplimitsort_bysearchpaginatepagination_urluse_ormreturnc	           
      x  K   |j                  t              }	|r]|	j                  t        t        j                  j                  d| d      t        j                  j                  d| d                  }	|D 
cg c]!  }
t        t        |
j                  d            # }}
t        d |D              rt        d       |	j                  d |D         }	|r't        |	t        ||||      }i |j                         S |	j                         D cg c]  }t        j                   |       c}S c c}
w c c}w w)N%-c              3   $   K   | ]  }|d u  
 y wr"    .0cols     r   	<genexpr>z*UserRepository.get_list.<locals>.<genexpr>E   s     1ssd{1s   z$Cannot sort with unidentified columnc              3   v   K   | ]1  }|j                   j                  d       r|j                         n| 3 yw)rB   N)r   
startswithdescrE   s     r   rH   z*UserRepository.get_list.<locals>.<genexpr>I   s,     T#CHH//4chhj#=Ts   79)r#   schemaurloffsetr9   r>   )r#   r   r$   r   r   iliker   getattrlstripany
ValueErrororder_byr   r   r<   allmodel_validate)r   r   r8   r9   r:   r;   r<   r=   r>   r#   rG   
sort_order	paginatorusers                 r   get_listzUserRepository.get_list1   s     LLDIIOOaxqM2DJJ4D4DqPQ]4STE AHHgdCJJsO4H
H1j11CEETT
 &)"I ,i((*++DIIIKPD"11$7PP) I( Qs   A9D:;&D0!A0D:D5-D:)__name__
__module____qualname__r   r   r   intr'   strr*   r   r3   r6   r   r	   boolr   r   r
   rZ   rD   r(   r   r   r      s   
G 
6F 
A A3 ABG BC Bg  >N g   ##+_ $ &Q&Q sm&Q }	&Q
 c&Q &Q &Q &Q &Q 
t&'-	.&Qr(   r   N)sqlalchemy.ormr   
sqlalchemyr   src.utils.helpers.paginationr   typingr   r   r   r	   r
   src.database.models.usersr   "src.modules.users.schemas.requestsr   r   #src.modules.users.schemas.responsesr   "src.modules._lib.repositories.baser   r   user_repositoryrD   r(   r   <module>rj      sR    "  7 5 5 * Q B =LQ4)+;=OOPLQ^ !'9:r(   