
    :j                        d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 ddl
Z
ddlZej                  j                  e
j                  j                  e
j                  j                  e
j                  j                  e
j                  j                  e                               	 ddlmZmZ  G d	 d
e	      Z e       Zy# e$ r ddZddZY "w xY w)z-
BookBeach FastAPI Application Configuration
    )AnyDictOptional)	validatorPostgresDsn)BaseSettingsNdecrypt_passwordis_encryptedc                     | S )N passwordkeys     1/var/www/bookbeach.app/backend/app/core/config.pyr
   r
      s        c                      y)NFr   r   s     r   r   r      s    r   c                      e Zd ZU dedefdZdZeed<   dZeed<   dZ	eed	<   d
Z
eed<   dZeed<    edd      d        ZdZee   ed<    edd      dee   deeef   defd       ZdZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   d Zeed!<   d"Zeed#<   d$Zeed%<   d&Zeed'<   d&Zeed(<   d)Z eed*<   d+Z!eed,<   dZ"eed-<   d.Z#eed/<   d0Z$eed1<   dZ%eed2<    ed2d      d3        Z&d0Z'eed4<   d5Z(eed6<   d7Z)eed8<   dZ*eed9<    ed9d      d:        Z+d;Z,eed<<   dZ-eed=<    ed=d      d>        Z.d5Z/eed?<   d@Z0eedA<   dBZ1eedC<   dDZ2eedE<   dFZ3eedG<   dHZ4eedI<   dJZ5eedK<   dLZ6eedM<   dNZ7eedO<   dPZ8eedQ<   dZ9eedR<   dZ:eedS<   dTZ;eedU<   dZ<eedV<   dWZ=eedX<   dYZ>eedZ<   dZ?eed[<   d\Z@eed]<   d^ZAeed_<   d`ZBeeda<   dbZCeedc<   ddZDeEede<   dfZFeedg<   dhZGeedi<   djZHeEedk<   dlZIeedm<   dnZJeedo<   g dpZKeLedq<   drZMeeds<   dtZNeedu<    edud      dv        ZOdwZPeedx<   dyZQeedz<   d"ZReed{<   d|ZSeed}<    G d~ d      ZTy)Settingsvaluereturnc                 \    |rt        |      r	 t        |d      S |S # t        $ r |cY S w xY w)z-Decrypt a value if it appears to be encrypted	babagamma)r   r
   	Exception)selfr   s     r   _decrypt_if_neededzSettings._decrypt_if_needed   s;    \%('{;;   s    ++	localhostDATABASE_HOSTi8  DATABASE_PORT	bookbeachDATABASE_NAMEpostgresDATABASE_USER DATABASE_PASSWORDT)prec                 d    |r	 ddl m}m}  ||      r	 ||d      S 	 |S |S # t        $ r Y |S w xY wNr   r	   r   app.utils.encryptionr
   r   r   clsvr
   r   s       r   decrypt_database_passwordz"Settings.decrypt_database_password)   J    O?+A{;; # q     " 	//NDATABASE_URLr-   valuesc                     t        |t              r|S d|j                  d       d|j                  d       d|j                  d       d|j                  d       d|j                  d	       
S )
Nzpostgresql://r#   :r%   @r   r   /r!   )
isinstancestrget)r,   r-   r2   s      r   assemble_db_connectionzSettings.assemble_db_connection5   s    aHvzz/:;1VZZH[=\<]]^_e_i_ijy_z^{{|  ~D  ~H  ~H  IX  ~Y  }Z  Z[  \b  \f  \f  gv  \w  [x  y  	yr   z0.0.0.0API_HOSTi@  API_PORT
API_RELOADDEBUGdevelopmentENVIRONMENTz/your-super-secret-key-change-this-in-production
SECRET_KEYHS256	ALGORITHM   ACCESS_TOKEN_EXPIRE_MINUTES   REFRESH_TOKEN_EXPIRE_DAYS   #PASSWORD_RESET_TOKEN_EXPIRE_MINUTES'EMAIL_VERIFICATION_TOKEN_EXPIRE_MINUTESzmail.bookbeach.appMAIL_SERVERiK  	MAIL_PORTMAIL_USE_TLSFMAIL_USE_SSLznoreply@bookbeach.appMAIL_USERNAMEMAIL_PASSWORDc                 d    |r	 ddl m}m}  ||      r	 ||d      S 	 |S |S # t        $ r Y |S w xY wr(   r)   r+   s       r   decrypt_mail_passwordzSettings.decrypt_mail_passwordR   r/   r0   	MAIL_FROM	BookBeachMAIL_FROM_NAMEzsupport@bookbeach.appSUPPORT_EMAILSUPPORT_PASSWORDc                 d    |r	 ddl m}m}  ||      r	 ||d      S 	 |S |S # t        $ r Y |S w xY wr(   r)   r+   s       r   decrypt_support_passwordz!Settings.decrypt_support_passwordc   r/   r0   zevaluation@bookbeach.appEVALUATION_EMAILEVALUATION_PASSWORDc                 d    |r	 ddl m}m}  ||      r	 ||d      S 	 |S |S # t        $ r Y |S w xY wr(   r)   r+   s       r   decrypt_evaluation_passwordz$Settings.decrypt_evaluation_passwordp   r/   r0   APP_NAMEz1.0.0APP_VERSIONzBeach Sunbed Booking PlatformAPP_DESCRIPTIONhttps://bookbeach.appWEBSITE_URLhttp://localhost:4200FRONTEND_URLzhttp://localhost:8001	ADMIN_URLi   MAX_FILE_SIZEzjpg,jpeg,png,gif,webpALLOWED_IMAGE_EXTENSIONSz	./uploadsUPLOAD_FOLDERz./staticSTATIC_FOLDERGOOGLE_MAPS_API_KEYEXCHANGE_RATE_API_KEYz+https://api.exchangerate-api.com/v4/latest/EXCHANGE_RATE_API_URL
REDIS_HOSTi  
REDIS_PORTr   REDIS_DBREDIS_PASSWORDzredis://localhost:6379/1CELERY_BROKER_URLzredis://localhost:6379/2CELERY_RESULT_BACKEND   DEFAULT_PAGE_SIZEd   MAX_PAGE_SIZEg      @PLATFORM_COMMISSION_PERCENTAGEEURDEFAULT_CURRENCYenDEFAULT_LANGUAGEg      8@VAT_PERCENTAGEINFO	LOG_LEVELz./logs/bookbeach.logLOG_FILE)rc   zhttp://localhost:3000ra   CORS_ORIGINSzadmin@bookbeach.appADMIN_EMAILzAdminPassword123!ADMIN_PASSWORDc                 d    |r	 ddl m}m}  ||      r	 ||d      S 	 |S |S # t        $ r Y |S w xY wr(   r)   r+   s       r   decrypt_admin_passwordzSettings.decrypt_admin_password   r/   r0      MIN_BOOKING_HOURS   MAX_BOOKING_HOURSBOOKING_ADVANCE_DAYS   DEFAULT_REFUND_HOURSc                      e Zd Zej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  e                        d      Z	dZ
y)Settings.Configz.envTN)__name__
__module____qualname__ospathjoindirnameabspath__file__env_filecase_sensitiver   r   r   Configr      sV    77<<PRPWPWP_P_`hPi@j0k lntur   r   )Ur   r   r   r8   r   r   __annotations__r   intr!   r#   r%   r   r.   r1   r   r   r   r   r:   r;   r<   r=   boolr>   r@   rA   rC   rE   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rR   rS   rU   rV   rW   rY   rZ   r[   r]   r^   r_   r`   rb   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rt   rv   rw   floatry   r{   r|   r~   r   r   listr   r   r   r   r   r   r   r   r   r   r   r   r      s      %M3$M3$M3$#M3#s"- . +/L(;'.~4(yx} yd38n yQT y )y HcHcJE4$K$ HJGIs'))%&s&/1'135+S5 ,K+IsL$L$0M30M3D) * -Is,%NC% 1M30c!t, - 7c6!!$$/ 0  HcK:OS:.K./L#/,Is, "M3!$;c;$M3$#M3#  "!!#3#!N3N "J!JHcNC 8s7!;3;  sM3 -0"E/!c! c  NE  Is*Hc*L$  -K,-NC-T* + ss "#" "#" r   r   )r   )__doc__typingr   r   r   pydanticr   r   pydantic_settingsr   r   sysr   appendr   r   r   r*   r
   r   ImportErrorr   settingsr   r   r   <module>r      s    ' & + * 	 
 PX@Y0Z [\ ]Cm| m` :q  	s   #B> >CC