
    ;hw                     "   d dl Z d dlZd dl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 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mZmZmZmZmZmZmZ d dlmZ  e         e j@                  d      Z! e j@                  d      Z" ejF                  d      Z$ ejJ                  e$        e       Z& e       Z' ee&        ee!      Z(e&jS                  ede"dgdg       e'jU                  edd       e'jW                          e&jY                  d      d        Z-e&jY                  d      d        Z.e&j_                  d      d        Z0e&jc                  ejd                  ddg       e&jc                  ejd                  dd g       e&jc                  ejd                  d!d"g       e&jc                  ejd                  d#d$g       e&jc                  ejd                  d%d&g       e&jc                  ejd                  d'd(g       e&jc                  ejd                  d)d*g       e&jc                  ejd                  d+d,g       e&jc                  ejd                  d-d.g       d/d0d1d2iZ3d3 Z4e4e&_5        e6d4k(  r ejn                  d5d6d78       yy)9    N)load_dotenv)FastAPI)CORSMiddleware)get_openapi)add_pagination)create_engine)BackgroundScheduler)credentials)Base)	notificationsrolespermissionsauthusersothers
code_scans
categoriespublications)check_absence_of_ratingsDB_URLORIGINSzfirebase_credentials.jsonT*)allow_credentialsallow_originsallow_methodsallow_headersinterval   )daysstartupc                      t         j                  st         j                          t        j                  j                  t               y )N)bind)	schedulerrunningstartr   metadata
create_allengine     ?/Users/theessential/Documents/Github/Lekema-Backend/app/main.pystartup_eventr,   -   s*    MM&)r*   shutdownc                  T    t         j                          t        j                          y )N)r#   r-   r(   disposer)   r*   r+   shutdown_eventr0   4   s    
NNr*   /c                  
    ddiS )Nmessagez#Welcome to the Fleet Management APIr)   r)   r*   r+   rootr4   ;   s    <==r*    Others)prefixtagsz	/api/authAuthz
/api/usersUsersz
/api/scansScansz/api/permissionsPermissionsz
/api/rolesRolesz/api/notificationsNotificationsz/api/categories
Categoriesz/api/publicationsPublications
HTTPBearerhttpbearer)typeschemec                  4   t         j                  rt         j                  S t        dddt         j                        } t        | d   d<   | d   j                         D ]  }|j                         D ]
  }dg ig|d	<    ! | t         _        t         j                  S )
NzLekema! APIz1.0.0zAPI de l'application Lekema!)titleversiondescriptionroutes
componentssecuritySchemespathsrA   security)appopenapi_schemar   rJ   security_schemesvalues)rP   pathmethods      r+   custom_openapirU   T   s    
!!! 2zz	N 7GN< !23w'..0 6kkm 	6F#/"4!5F:	66 (Cr*   __main__zmain:appz0.0.0.0i  )rO   hostport)8osfirebase_adminuvicorndotenvr   fastapir   fastapi.middleware.corsr   fastapi.openapi.utilsr   fastapi_paginationr   
sqlalchemyr   !apscheduler.schedulers.backgroundr	   r
   app.models.baser   app.routersr   r   r   r   r   r   r   r   r   app.utils.helpersr   getenvr   originsCertificatecredinitialize_apprO   r#   r(   add_middlewareadd_jobr%   on_eventr,   r0   getr4   include_routerrouterrQ   rU   openapi__name__runr)   r*   r+   <module>rt      s   	     2 - - $ A &   t t t 6 	8	
"))I
 {:;   d # i!	 s 	v	   %%   
  *JQ  ? 	  i* * j  > >
   6==8*  =   4;;{&  B   5<<G9  E   :$$\	  J   ;%%.@  W   5<<G9  E   =''0DOK\  ]   :$$->l^  T   <&&/B.IY  Z  "  zGKK r*   