
    Di                     `    d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	  G d de      Z
 e
       Zy)z$
Application Configuration Settings
    N)Optional)Field
AnyHttpUrl)BaseSettingsSettingsConfigDictc                      e Zd ZU dZ edd      Zeed<    edd      Zeed<    ed	d
      Z	e
ed<    edd      Zeed<    edd      Zeed<    edd      Ze
ed<    edd      Ze
ed<    edd      Zee   ed<   defdZ edd      Zeed<    edd       Zeed!<    ed"d#      Zeed$<    ed%d&      Zeed'<    ed(d)      Zeed*<    ed+d,      Ze
ed-<    ed.d/      Zeed0<    ed1d2      Zeed3<    ed4d5      Zeed6<    ed7d8      Zeed9<    ed:d;      Zeed<<    ed=d;      Zeed><    ed?d;      Zeed@<    ed?d;      Z eedA<    ed.dB      Z!eedC<    edDdE      Z"eedF<    edGdH      Z#eedI<    edJdK      Z$e
edL<    edMdN      Z%e
edO<   e&defdP       Z'e&defdQ       Z(e&de
fdR       Z)e&de
fdS       Z* edTdU      Z+eedV<    edWdX      Z,eedY<    edZgd[      Z-e.e   ed\<    edZd]      Z/eed^<    edZgd_      Z0e.e   ed`<    edZgda      Z1e.e   edb<    edcda      Z2eedd<    ededf      Z3eedg<    edhdi      Z4eedj<    edkdl      Z5eedm<    edndo      Z6e
edp<    ed?dq      Z7eedr<    ed?ds      Z8eedt<    edudv      Z9eedw<    edxdy      Z:eedz<   defd{Z; ed|d}      Z<eed~<    edd      Z=eed<    edd      Z>eed<    edd      Z?eed<    ed?d      Z@eed<    ed?d      ZAeed<    ed?d      ZBeed<    edd      ZCeed<    ed?d      ZDeed<    edd      ZEeed<    ed?d      ZFeed<    edd      ZGeed<    edd      ZHeed<    edd      ZIeed<    edWd      ZJeed<    edTd      ZKeed<    eLdd.d      ZMy)Settingsz6Application settings with environment variable support
fastapi_dbzDatabase name)defaultdescriptionDB_NAME	localhostzDatabase hostDB_HOSTi8  zDatabase portDB_PORTpostgreszDatabase userDB_USERpasswordzDatabase passwordDB_PASSWORD
   zDatabase connection pool size	POOL_SIZE   z!Maximum pool overflow connectionsMAX_POOL_OVERFLOWNz Complete database URL (optional)DATABASE_URLreturnc           
          | j                   r| j                   S d| j                   d| j                   d| j                   d| j                   d| j
                   
S )zGet the database connection URIzpostgresql+psycopg://:@/)r   r   r   r   r   r   selfs    M/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/src/core/config.pygetDbConnectionUrizSettings.getDbConnectionUri   s_    $$$ 't||nAd6F6F5GqVWX\XdXdWeefgkgsgsftuu    zFastAPI BoilerplatezApplication nameAPP_NAMEzApplication title	APP_TITLEz/A production-ready FastAPI application templatezApplication descriptionAPP_DESCRIPTIONz1.0.0zApplication versionAPP_VERSIONz0.0.0.0zApplication hostAPP_HOSTi@  zApplication portAPP_PORTTz
Debug mode	APP_DEBUGdevz#Application environment (dev, prod)APP_ENVzsupport@example.comzApplication support emailAPP_SUPPORT_EMAILz+1-555-0123zApplication support phoneAPP_SUPPORT_PHONEz#007bffzApplication primary colorAPP_PRIMARY_COLORz#ca79ebAPP_SECONDARY_COLOR APP_LOGOAPP_LOGO_SECONDARYzLegacy debug fieldDEBUGzyour-secret-key-herezJWT Secret keyJWT_SECRET_KEYHS256zJWT algorithmJWT_ALGORITHM   z&JWT access token expiration in minutesJWT_EXPIRES   z$JWT refresh token expiration in daysJWT_REFRESH_EXPIRESc                     | j                   S )zGet JWT secret key)r5   r   s    r!   jwt_secret_keyzSettings.jwt_secret_key9   s     """r#   c                     | j                   S )zGet JWT algorithm)r7   r   s    r!   jwt_algorithmzSettings.jwt_algorithm>   s     !!!r#   c                     | j                   S )z*Get JWT access token expiration in minutes)r9   r   s    r!   jwt_expires_minuteszSettings.jwt_expires_minutesC   s     r#   c                     | j                   S )z(Get JWT refresh token expiration in days)r;   r   s    r!   jwt_refresh_expires_daysz!Settings.jwt_refresh_expires_daysH   s     '''r#   INFOzLogging level	LOG_LEVELFzSQLAlchemy echo SQL statementsSQL_ECHO*zAllowed CORS originsALLOWED_ORIGINSz&CORS origins as comma-separated stringCORS_ORIGINSzAllowed HTTP methodsALLOWED_METHODSzAllowed headersALLOWED_HEADERSzhttp://localhost:8000SERVER_HOSTzhttp://localhost:3000zFrontend server URLSERVER_FRONTuploadszDirectory for file uploadsUPLOADS_DIRz/uploadszStatic files URL pathSTATIC_FILES_PATHi   zMax upload size in bytes (10MB)MAX_UPLOAD_SIZEzAWS S3 access keyAWS_S3_ACCESS_KEYzAWS S3 secret keyAWS_S3_SECRET_KEYzdefault-bucketzDefault AWS S3 bucket nameAWS_S3_DEFAULT_BUCKETz	us-east-1zAWS S3 regionAWS_S3_REGIONc                     t        | j                        j                  d      }| j                  j	                  d      }| d| S )Nr   )strrL   rstripAPI_ROUTE_PREFIXlstrip)r    server_host
api_prefixs      r!   api_base_urlzSettings.api_base_urld   sD    $**+2237**11#6
a
|,,r#   z/api/v1zAPI routes prefixrY   z	/webhookszWebhook routes prefixWEBHOOK_ROUTE_PREFIXz/pluginszPlugin routes prefixPLUGIN_ROUTE_PREFIXzhttps://test-api.payrix.comz<Payrix API base URL; sandbox defaults to test-api.payrix.comPAYRIX_BASE_URLz<Payrix API key (used for Basic auth when paired with secret)PAYRIX_API_KEYz@Payrix API secret (used for Basic auth when paired with API key)PAYRIX_API_SECRETz<Optional bearer token for Payrix if token-based auth is usedPAYRIX_AUTH_TOKENAuthorizationz%Header name for Payrix authenticationPAYRIX_AUTH_HEADER_NAMEz=Explicit auth header value override (if provided, used as-is)PAYRIX_AUTH_HEADER_VALUEzX-Payrix-Webhook-Secretz:Header name required by Payrix web alerts for verificationPAYRIX_WEBHOOK_HEADER_NAMEz:Shared secret header value configured in Payrix web alertsPAYRIX_WEBHOOK_HEADER_VALUEz"amqp://guest:guest@rabbitmq:5672//zCelery broker URL (RabbitMQ)CELERY_BROKER_URLzredis://redis:6379/0z!Celery result backend URL (Redis)CELERY_RESULT_BACKENDr   zDefault queue name for tasksCELERY_TASK_DEFAULT_QUEUEz?Execute tasks locally instead of sending to queue (for testing)CELERY_TASK_ALWAYS_EAGERzCelery logging levelCELERY_LOG_LEVELz.envignore)env_filecase_sensitiveextra)N__name__
__module____qualname____doc__r   r   rW   __annotations__r   r   intr   r   r   r   r   r   r"   r$   r%   r&   r'   r(   r)   r*   boolr,   r-   r.   r/   r0   r2   r3   r4   r5   r7   r9   r;   propertyr=   r?   rA   rC   rE   rF   rH   listrI   rJ   rK   rL   rM   rO   rP   rQ   rR   rS   rT   rU   r]   rY   r^   r_   r`   ra   rb   rc   re   rf   rg   rh   ri   rj   rk   rl   rm   r   model_config r#   r!   r	   r	   
   sY   @?KGSK/JGSJ/BGSBIGSIZ=PQKQ 23RSIsS"2;^_s_ #(Bd"eL(3-evC v "7EWXHcX#8FYZIsZ )Z  iB  COS  CW:OPKP)9KLHcL$4FGHcGDlCItC4YZGSZ"+@Nijsj"=Fabsb"9B]^s^$YD_``"2MNHcN#B<WXX2FGE4G  (>L\]NC]wOLM3LR5]^K^$Q<bcc# # # "s " "  S     (# ( (
 6GIsG56VWHdW "'uBX!YOT#YYc7_`L#`!&uBX!YOT#YY!&uBS!TOT#YT%<J[\K\&=K`aL#a Y<XYKY":CZ[s[ )9GhiOSi #2;NOsO"2;NOsO!&/?Mi!j3j{PM3P-c -
 ")ATUcU %kG^ _#_$ZE[\\ !-ROS   RNC  #Vs  #Rs  $);$S  %*S%c  ',)P'  (-P(  #42s  "'&7"3  &+2&s  &+U&d  "*c 
 &Lr#   r	   )ru   ostypingr   pydanticr   r   pydantic_settingsr   r   r	   settingsr|   r#   r!   <module>r      s0    
  & >_| _F :r#   