
    h@                         d dl m Z  d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZ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 d d
lmZ d dlmZ d dlm Z   G d de      Z! G d de      Z" G d de      Z#y)    )datetime)Union)HTTPException)OAuth2PasswordRequestForm)	BaseModelField)INTEGER	TIMESTAMPVARCHAR
ForeignKeyselecttext)MappedSessionmapped_columnrelationshipobject_session)Base)TblAdmin)TblSeafarers)CustomModel)hybrid_propertyc                       e Zd ZU  ed      Zedz  ed<    ed      Zedz  ed<    ed      Z	edz  ed<    ed      Z
edz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed	<   y)
	UsersBaseNdefaultusr_id	user_namepasswordrole_id	entity_id
created_at
updated_at)__name__
__module____qualname__r   r   int__annotations__r   strr   r    r!   r"   r   r#        1/var/www/html/beacon-api/app/models/main/users.pyr   r      s    t,FC$J,!$/IsTz/ .HcDj.-GS4Z-!$/IsTz/"'"5J45"'"5J45r+   r   c                   R    e Zd ZU  ed      Zedz  ed<    ed      Zedz  ed<   y)UsersFilterNr   r   r   )	r$   r%   r&   r   r   r'   r(   r   r)   r*   r+   r,   r.   r.      s(    t,FC$J,!$/IsTz/r+   r.   c            	          e Zd ZU dZ ededd      Zee   e	d<    ed e
d      dd      Zee   e	d<    ed	 e
d      dd      Zee   e	d	<    ee ed
      d      Zee   e	d<    eed      Zee   e	d<    eded ed            Zee   e	d<    eded ed            Zee   e	d<    edd      Zed        Zedededd fd       Zedededefd       Zedeee e!f   dededz  fd       Z"ededededd fd       Z#y) TblUsers	tbl_usersr   T)primary_keyautoincrementr      N)nullableserver_defaultr   ztbl_role.role_id)r5   r    r!   usr_created_AtFzcurrent_timestamp()r"   r#   z"NULL ON UPDATE current_timestamp()TblRoleusers)back_populatesc                    t        |       }|| j                  | j                  y | j                  dv r:t        t              j                  t        j                  | j                  k(        }nJ| j                  dk(  r:t        t              j                  t        j                  | j                  k(        }ny |j                  |      j                         S )N>               )r   r!   r    r   r   whereadmin_idr   seafarer_idexecutescalar_one_or_none)selfsessionstmts      r,   entityzTblUsers.entity)   s     &?dnn48L<<9$(#))(*;*;t~~*MND\\Q,'--l.F.F$...XYDt$7799r+   datadbreturnc                 x    |j                         } | di |}|j                  |       |j                          |S )Nr*   )
model_dumpaddflush)clsrI   rJ   	data_dictnew_datas        r,   createzTblUsers.create6   s5    OO%	##
x

r+   c                     |j                  |       j                  | j                  |k(        j                         }|st	        dd      t
        j                  |      S Ni  zUser not found)status_codedetail)queryfilterr   firstr   r   model_validate)rP   r   rJ   get_datas       r,   
get_usr_idzTblUsers.get_usr_id>   sN    88C=''

f(<=CCEC8HII''11r+   requestc                 P   t        |t              rd|j                  i}nAt        |t              r|j	                  d      }nt        |t
              r|}nt        d       |j                  |       j                  di |j                         }|sy t        di |j                  S )Nr   T)exclude_nonez5Unsupported request type passed to get_by_user_filterr*   )
isinstancer   usernamer   rM   dict	TypeErrorrX   	filter_byrZ   r   __dict__)rP   r^   rJ   filter_datausers        r,   get_by_user_filterzTblUsers.get_by_user_filterE   s    g89&(8(89K+!,,$,?K&!KSTT&rxx}&&55;;=)4==))r+   c                 F   |j                  |       j                  | j                  |k(        j                         }|st	        dd      |j                         }|j                         D ]  \  }}t        |||        |j                  |       |j                          |S rU   )
rX   rY   r   rZ   r   rM   itemssetattrrN   rO   )rP   r   rI   rJ   r\   rQ   keyvalues           r,   updatezTblUsers.updateT   s    88C=''

f(<=CCEC8HIIOO%	#//+JCHc5) ,
x

r+   )$r$   r%   r&   __tablename__r   r	   r   r   r'   r(   r   r   r)   r   r   r    r!   r
   r   r"   r#   r   roler   rH   classmethodr   r   rS   r]   r   rc   r.   r   ri   ro   r*   r+   r,   r0   r0      s   M''t[_`FF3K`*;tdhiIvc{i)*gclTbfgHfSkg(*=O2P[_`GVC[`*7TBIvc{B+,<iRWhl  nC  iD  EJs  E+L)dcg  iM  dN  OJs  O	':D
: 
: )  Z   2 2 2Y 2 2 *dKAZ.Z([ *`g *lux|l| * * 	C 	y 	g 	* 	 	r+   r0   N)$r   typingr   fastapir   fastapi.securityr   pydanticr   r   
sqlalchemyr	   r
   r   r   r   r   sqlalchemy.ormr   r   r   r   r   app.models.mainr   app.models.main.adminr   app.models.main.seafarerr   app.utils.schemas_utilsr   sqlalchemy.ext.hybridr   r   r.   r0   r*   r+   r,   <module>r~      sU      ! 6 % L L U U   * 1 / 16 60+ 0Bt Br+   