
    ~R:i                         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 d d	lmZ d d
lmZmZmZmZ  ee      ZdefdZ e       Zy)    )Path)FastAPI)CORSMiddleware)StaticFiles)Session)get_settings)setup_logger)engineinit_db)run_all_seeders)authusersproduct_templatesprojectsreturnc                     t               } t        ddd      }|j                  t        | j                  ddgdg       t        t              j                         j                  j                  }|dz  }|j                  dd	       |j                  d
t        t        |            d       |j                  t        j                         |j                  t         j                         |j                  t"        j                         |j                  t$        j                         |j'                  d      d        }|j'                  d      d        }|S )NzStoryBook APIz1.0.0z%Backend API for the StoryBook system.)titleversiondescriptionT*)allow_originsallow_credentialsallow_methodsallow_headersassets)parentsexist_okz/assets)	directory)namestartupc                      t         j                  d       t                	 t        t              5 } t        |        ddd       y# 1 sw Y   yxY w# t        $ r }t         j                  d|       Y d}~yd}~ww xY w)z%Initialize DB schema and run seeders.zApplication starting...Nz'Error during startup seed execution: %s)loggerinfor   r   r
   r   	Exception	exception)sessionexcs     :/var/www/html/story-book/Story-Book-python-api/app/main.pystartup_eventz!create_app.<locals>.startup_event8   s^     	-. 			MG( ! 	MFLL	Ms3   A AA A
A A 	A:A55A:shutdownc                  .    t         j                  d       y)zOptional graceful cleanup.zApplication shutting down...N)r"   r#        r(   shutdown_eventz"create_app.<locals>.shutdown_eventG   s     	23r-   )r   r   add_middlewarer   BACKEND_CORS_ORIGINSr   __file__resolveparentmkdirmountr   strinclude_routerr   routerr   r   r   on_event)settingsappROOT_DIRassets_pathr)   r.   s         r(   
create_appr>      s;   ~H
;C 33ee   H~%%'..55HX%KdT2IIc+./   t{{#u||$(//0x' 	\\)M M 	\\*4 4 Jr-   N)pathlibr   fastapir   fastapi.middleware.corsr   fastapi.staticfilesr   sqlmodelr   app.core.configr   app.core.loggingr	   app.db.sessionr
   r   app.db.seedsr   app.api.routesr   r   r   r   __name__r"   r>   r;   r,   r-   r(   <module>rJ      sF      2 +  ( ) * ( C C	h	;G ;z lr-   