
    :jg                         d Z ddlmZmZmZmZmZ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ZddlmZ  G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)z
User-related database models
    )
ColumnInteger
BigIntegerStringBooleanDateTimeDateText
ForeignKeyDECIMAL)relationship)func)UUIDN)Basec                   l    e Zd ZdZ eedd      Z e ed      dd      Z ee	      Z
 edd	      Zy
)UserRole
user_rolesTprimary_keyindex   FuniquenullableUserroleback_populatesN)__name__
__module____qualname____tablename__r   r   role_idr   	role_namer
   descriptionr   users     1/var/www/bookbeach.app/backend/app/models/user.pyr   r      s>     MW$d;Gvbz$?I,K 7Er(   r   c                       e Zd ZdZ eedd      Z e ed      dd      Z e ed      d      Z	 e ed	            Z
 eed
      Z edd      Zy)Language	languagesTr      Fr   2   r     defaultr   preferred_languager   N)r   r    r!   r"   r   r   language_idr   language_codelanguage_nameflag_urlr   	is_activer   r&   r'   r(   r)   r+   r+      s`    Md$?K6!9TEBM6":6MfSk"Hw-I 0DEEr(   r+   c                   .   e Zd ZdZ eedd      Z e ed      dd      Z e ed      d      Z	 e ed	            Z
 e ed	d
      d      Z eed      Z e ed       ej"                          ej"                               Z edd      Zy)Currency
currenciesTr      Fr   r.   r/   
      g      ?r1   timezoneserver_defaultonupdater   preferred_currencyr   N)r   r    r!   r"   r   r   currency_idr   currency_codecurrency_namecurrency_symbolr   exchange_rate_to_eurr   r8   r   r   now
updated_atr   r&   r'   r(   r)   r:   r:   $   s     Md$?K6!9TEBM6":6MVBZ(O!'"a.#>w-I$/
U]UYU]U]U_`J 0DEEr(   r:   c                      e Zd ZdZ eedd      Z e ed      d      Z e ed      dd      Z	 e ed	            Z
 e ed
            Z e ed       ej                               Z edd      Z edd      Zy)Country	countriesTr   d   Fr/   r<   r   r=   r0   r?   rB   Companycountryr   
BeachPlaceN)r   r    r!   r"   r   r   
country_idr   country_namecountry_code
phone_coder7   r   r   rJ   
created_atr   	companiesbeach_placesr'   r(   r)   rM   rM   3   s    MT>J&+6L&)D5ALr
#JfSk"H$/
KJ YyAIYGLr(   rM   c                       e Zd ZdZ e ed      dej                  d      Z e e	d      ddd      Z
 e e	d      d      Z e e	d	            Z e e	d	            Z e e	d
            Z ee      Z e e	d            Z ee ed            Z ee ed            Z ee ed            Z eed      Z eed      Z e ed       ej8                               Z e ed       ej8                          ej8                               Z e ed            Z e dd      Z! e dd      Z" e dd      Z# e dd      Z$ e dd      Z% e dd      Z& e dd      Z' e ddd      Z(e)d        Z*y) r   r&   Tas_uuid)r   r2   r      F)r   r   r   r/   rO   r.   i  zuser_roles.role_idzlanguages.language_idzcurrencies.currency_idr1   r?   rP   rA   r   r   r+   r:   UserCompanyuserEmailVerificationTokenBookingReview
UserWallet)r   uselistc                     | j                   r'| j                  r| j                    d| j                   S | j                   xs | j                  xs | j                  S )N )
first_name	last_nameemail)selfs    r)   	full_namezUser.full_name`   sF    ??t~~oo&a'788>$..>DJJ>r(   N)+r   r    r!   r"   r   PG_UUIDuuiduuid4user_idr   rj   password_hashrh   ri   phoner	   date_of_birthprofile_photo_pathr   r   r#   preferred_language_idpreferred_currency_idr   is_email_verifiedr8   r   r   rJ   rX   rK   
last_loginr   r   r3   rD   user_companiesverification_tokensbookingsreviewswalletpropertyrl   r'   r(   r)   r   r   B   s   MWT*djjX\]G6#;te4HE6#;7Ms$Jvc{#I6":E4LMt-Wj)=>?G"7J7N,OP"7J7O,PQw6w-I$/
KJ$/
U]UYU]U]U_`J$/0J 
7;D%jI%jI!-GN&'?PVWIf=H8F;G,vuMF? ?r(   r   c                      e Zd ZdZ eedd      Z e ed       ed            Z	 e e
d      d      Z e e
d	      d      Z e ed
      d      Z eed      Z e ed
       ej$                               Z edd      Zy)ra   email_verification_tokensTr   r\   zusers.user_idr>   Fr/   r   r?   r1   rP   r   rz   r   N)r   r    r!   r"   r   r   token_idrm   r   rp   r   token
token_typer   
expires_atr   is_usedr   rJ   rX   r   r`   r'   r(   r)   ra   ra   g   s    /Mjd$?HWT*J,GHG6!9u-Er
U3J$/%@JWe,G$/
KJ /DEDr(   ra   )__doc__
sqlalchemyr   r   r   r   r   r   r	   r
   r   r   sqlalchemy.ormr   sqlalchemy.sqlr   sqlalchemy.dialects.postgresqlr   rm   rn   app.db.sessionr   r   r+   r:   rM   r   ra   r'   r(   r)   <module>r      sv    o n n '  :  8t 8
Ft 
FFt FHd H"?4 "?JFT Fr(   