
    HCi	                     D    d dl m Z mZ d dlmZmZ d dlmZ  G d d      Zy)    )datetimetimezone)Sessionselect)UserSessionc            
           e Zd Zedededefd       Zededededz  fd       Zededededz  fd	       Z	e	 ddeded
edz  ddfd       Z
edededdfd       Zedededdfd       Zy)UserSessionRepositorysessionuser_sessionreturnc                 j    | j                  |       | j                          | j                  |       |S N)addcommitrefresh)r
   r   s     T/var/www/html/story-book/Story-Book-python-api/app/repositories/user_session_repo.pycreatezUserSessionRepository.create   s*    L!%    tokenNc                 (   t        t              j                  t        j                  |k(  t        j                  dk(  t        j
                  t        j                  t        j                        kD        }| j                  |      j                         S NF)r   r   whererefresh_token
is_revoked
expires_atr   nowr   utcexecfirst)r
   r   stmts      r   get_by_refresh_tokenz*UserSessionRepository.get_by_refresh_token   sh    k"((%%.""e+""X\\(,,%??

 ||D!''))r   
session_idc                 (   t        t              j                  t        j                  |k(  t        j                  dk(  t        j
                  t        j                  t        j                        kD        }| j                  |      j                         S r   )r   r   r   r"   r   r   r   r   r   r   r   r   )r
   r"   r    s      r   get_active_by_session_idz.UserSessionRepository.get_active_by_session_id   sh    k"((""j0""e+""X\\(,,%??

 ||D!''))r   replaced_by_tokenc                 b    d|_         ||_        | j                  |       | j                          y NT)r   r%   r   r   )r
   r   r%   s      r   revokezUserSessionRepository.revoke    s*     #'):&L!r   user_idc                 "   t        t              j                  t        j                  |k(  t        j                  dk(        }| j                  |      j                         }|D ]  }d|_        | j                  |        | j                          y )NFT)	r   r   r   r)   r   r   allr   r   )r
   r)   r    sessionsss        r   revoke_all_for_userz)UserSessionRepository.revoke_all_for_user+   st    k"((7*""e+
 <<%))+AALKKN  	r   c                 B   t        j                  t        j                        }t	        t
              j                  t
        j                  |k(  t
        j                  dk(        }| j                  |      j                         D ]  }| j                  |        t	        t
              j                  t
        j                  |k(  t
        j                  |k        }| j                  |      j                         D ]  }| j                  |        | j                          y r'   )r   r   r   r   r   r   r   r)   r   r   r+   deleter   r   )r
   r)   r   stmt1r-   stmt2s         r   cleanup_user_sessionsz+UserSessionRepository.cleanup_user_sessions7   s    ll8<<({#))7*""d*
 e$((*ANN1 + {#))7*""S(
 e$((*ANN1 +r   r   )__name__
__module____qualname__staticmethodr   r   r   strr!   r$   r(   intr.   r3    r   r   r	   r	      s    { {   *g *c *kD>P * * *' *s *{UYGY * *  )-! : 
	  	W 	s 	t 	 	 w    r   r	   N)r   r   sqlmodelr   r   app.models.user_sessionr   r	   r:   r   r   <module>r=      s    ' $ /C Cr   