
    {h                     ~    S SK rS SK Jr  S SKrS SKrS SKJr  0 rS\S'   S\S'   S\S	'   S
\S'   S\S'    " S S5      rg)    N)Error)datetime	localhostdb_host	dailyratedb_namerootdb_username db_passwordi  db_portc                   |    \ rS rSrS rS rS rS rS rS r	S r
SS	 jrSS
 jrS rSS jrS rSS jrSS jrSrg)EasySQL   c                     S U l         S U l        SU l        SU l        U R                  U l        SU l        [        R                  " U R                  [        R                  S9  g )NTzlog/EasySQL.logzEasySQL Error -> )filenamelevel)
db_conn	db_cursor
enable_loglog_filedefault_error_functionerror_functione_msg_startloggingbasicConfigERRORselfs    (C:\DailyRate\Backend\api\core\EasySQL.py__init__EasySQL.__init__   sL    )"99.T]]'--H    c                     U R                   U-   nU R                  (       a?  [        R                  " 5       R	                  S5      n[
        R                  " U SU 35        U R                  U5        g )Nz%d/%m/%Y %H:%M:%Sz -> )r   r   r   nowstrftimer   errorr   )r   msgfull_msg	timestamps       r    throw_errorEasySQL.throw_error   sU    ##c)?? //0CDIMMYKtH:67H%r#   c                      [        SU 35        g )NzDEFAULTS :) => )print)r   r(   s     r    r   EasySQL.default_error_function%   s    u%&r#   c                     [         S   U l        [         S   U l        [         S   U l        [         S   U l        [         S   U l        g)Nr   r   r
   r   r   T)paramsr   r   r
   r   r   r   s    r    db_initEasySQL.db_init(   sC    i(i(!-0!-0i(r#   c                 Z    [         R                  R                  U R                  U R                  U R
                  U R                  U R                  S9U l        U R                  R                  SS9U l
        g! [         a'  nU R                  S[        U5       35         S nAgS nAff = f)N)hostuserpassworddatabaseportT)
dictionaryzDB Connection Error : F)mysql	connectorconnectr   r
   r   r   r   r   cursorr   r   r+   str)r   es     r    
db_connectEasySQL.db_connect0   s    	 ??22\\%%))\\ 3 DL "\\00D0ADN 	5c!fX>?	s   A6A9 9
B*B%%B*c                     [        U[        5      (       a  g[        U[        5      (       a  g[        U[        5      (       a  gg)Nidsb)
isinstanceintfloatr?   )r   values     r    get_bind_typeEasySQL.get_bind_type?   s5    eS!!u%%s##r#   c                 B    [         R                  " SU5      (       a  U$ S$ )Nz^[a-zA-Z0-9_]+$F)rematch)r   strings     r    sanitise_stringEasySQL.sanitise_stringI   s    "4f==vH5Hr#   c                     U(       d  g[        U[        5      (       a  U R                  U5      $ SR                  U Vs/ s H	  nSU S3PM     sn5      $ s  snf )N*, `)rH   r?   rR   join)r   columnscols      r    build_columnsEasySQL.build_columnsL   sO    %%''0099G<GS#ajG<==<s   Ac                     U(       d  S/ S4$ / n/ nUR                  5        H*  u  pVUR                  U S35        UR                  U5        M,     SU S3R                  U5      U4$ )Nr    = %s )itemsappendrX   )r   
conditions
logic_typesql_conditionsvalueskeyrK   s          r    build_conditionsEasySQL.build_conditionsT   sq    r2:$**,JC!!SE-0MM%  - :,a %%n5v==r#   c                   ^  U R                   R                  SU S35        U R                   R                  5        Vs/ s H  o3S   PM	     snm[        U[        5      (       a  [        UR                  5       5      nOUn[        U4S jU 5       5      $ s  snf ! [         a'  nU R                  S[        U5       35         S nAgS nAff = f)NzSHOW COLUMNS FROM `rW   Fieldc              3   ,   >#    U  H	  oT;   v   M     g 7f)N ).0rZ   valids     r    	<genexpr>+EasySQL.validate_columns.<locals>.<genexpr>f   s     5ue|us   zvalidate_columns error: F)r   executefetchallrH   dictlistkeysall	Exceptionr+   r?   )r   
table_namerY   rowcheckr@   rn   s         @r    validate_columnsEasySQL.validate_columns^   s    
	NN""%8A#FG-1^^-D-D-FG-Fc\-FGE'4((W\\^,5u555 H  	7Ax@A	s)   ;B BAB B 
C$CCNc                 V   U R                  U5      nU(       d  U R                  S5        gU(       a  US:X  d  US/:X  a  / nSnOQ[        U[        5      (       a  U/nU R	                  X5      (       d  U R                  S5        gU R                  U5      nSU SU 3n/ nU(       a  U R                  X45      u  pUSU 3-  n U R                  R                  Xg5        U R                  R                  5       $ ! [         a'  n	U R                  S	[        U	5       35         S n	A	gS n	A	ff = f)
NInvalid table nameFr   rU   zColumn Name ErrorzSELECT z FROM  WHERE zStatement Execution Failure: )rR   r+   rH   r?   r{   r[   rg   r   rq   rr   rw   )
r   rx   rY   rb   rc   col_strsqlr1   cond_strr@   s
             r    selectEasySQL.selectk   s    ))*5
12 'R-7rd?GG'3''")((==  !45((1Gyzl3#44ZLHWXJ''C	NN""3/>>**,, 	<SVHEF	s   4C7 7
D(D##D(c                    U R                  U5      nU(       a  U R                  X5      (       d  U R                  S5        gSR                  UR	                  5       5      nSR                  S/[        U5      -  5      n[        UR                  5       5      nSU SU SU S3n U R                  R                  Xe5        U R                  R                  5         g	! [         a'  nU R                  S
[        U5       35         S nAgS nAff = f)NInvalid table or column nameFrV   z%szINSERT INTO z (z
) VALUES ()TzInsert Serious Error: )rR   r{   r+   rX   ru   lenrt   re   r   rq   r   commitrw   r?   )r   rx   dataru   placeholdersre   r   r@   s           r    insertEasySQL.insert   s    ))*5
!6!6z!H!H;<yy%yy$#d)!34dkkm$ZL4&
<.J	NN""3/LL! 	5c!fX>?	s   $5C 
D$DDc                 H   U R                  U5      nU(       a  U R                  X5      (       d  U R                  S5        gSR                  U Vs/ s H  oU S3PM	     sn5      n[	        UR                  5       5      nU R                  X45      u  pSU SU SU 3n
 U R                  R                  XU	-   5        U R                  R                  5         U R                  R                  $ s  snf ! [         a'  nU R                  S[        U5       35         S nAgS nAff = f)	Nr   FrV   r^   zUPDATE z SET r   zUpdate Serious Error: )rR   r{   r+   rX   rt   re   rg   r   rq   r   r   rowcountrw   r?   )r   rx   r   rb   rc   k
set_clausere   cond_clausecond_valuesr   r@   s               r    updateEasySQL.update   s   ))*5
!6!6z!H!H;<YYT:T#UT:;
dkkm$#'#8#8#P 
|5GK=I	NN""3(<=LL!>>***  ;  	5c!fX>?	s   C+AC0 0
D!:DD!c                    U R                  U5      nU(       d  U R                  S5        gU R                  X5      (       d  U R                  S5        gU R                  X#5      u  pESU SU 3n U R                  R                  Xe5        U R                  R                  5         U R                  R                  $ ! [         a'  nU R                  S[        U5       35         S nAgS nAff = f)Nr~   Fz$Invalid column name(s) in conditionszDELETE FROM r   zDelete Serious Error: )rR   r+   r{   rg   r   rq   r   r   r   rw   r?   )r   rx   rb   rc   r   r   r   r@   s           r    deleteEasySQL.delete   s    ))*5
12$$Z<<CD#'#8#8#P ZL}=	NN""34LL!>>*** 	5c!fX>?	s   /A
B: :
C+C&&C+)r   r   r   r   r   r   r
   r   r   r   r   )r   )AND)r   Nr   )__name__
__module____qualname____firstlineno__r!   r+   r   r2   rA   rL   rR   r[   rg   r{   r   r   r   r   __static_attributes__rl   r#   r    r   r      sK    I&'I>> D&(r#   r   )mysql.connectorr;   r   rO   r   r   r1   r   rl   r#   r    <module>r      sY   
  ! 	  	y y } } y t tr#   