
    y&i                        d dl mZ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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mZ d dlmZmZmZmZmZmZm Z   ejB                  ejD                          ejF                  e$      Z%d Z&edefd       Z' e       Z( eddde'dddddddddddiidg igd       Z)e)jU                  eg d!dg d"d#g$       e)jW                  e,      d%        Z-e)j]                  d&      d'        Z/e)j]                  d(      d)        Z0e)jc                  ejd                         e)jc                  ejd                         e)jc                  ejd                         e)jc                  ejd                         e)jc                  ejd                         e)jc                  ejd                         e)jc                  e jd                         y)*    )FastAPIHTTPException)CORSMiddlewareJSONResponse)
HTTPBearerHTTPAuthorizationCredentials)asynccontextmanagerN)Config)command)MigrationContext)ScriptDirectory)engineBase)authprojects
candidatescommunicationssoft_skillsadminsuniversities)levelc                  p   	 t         j                  j                  t         j                  j                  t         j                  j                  t                          } t         j                  j                  | d      }t         j                  j                  |      st        d|       t        |      }t        j                  d      }|st        d      |j                  d|       t        j                         5 }t        j                  |      }|j                         }t!        j"                  |      }|j%                         }t&        j)                  d|xs d        t&        j)                  d|        ||k(  rt&        j)                  d	       	 d
d
d
       y
	 d
d
d
       t&        j)                  d       t+        j,                  |d       t&        j)                  d       y
# 1 sw Y   JxY w# t.        $ r4}	t&        j1                  d|	        t        dt3        |	             d
}	~	ww xY w)z0Run database migrations using Alembic Python APIzalembic.iniz#Alembic configuration not found at DATABASE_URLz<DATABASE_URL environment variable is required for migrationszsqlalchemy.urlzCurrent migration: NonezLatest migration: zDatabase is up to dateNz)Upgrading database to latest migration...headz*Database migrations completed successfullyzError running migrations: zDatabase migration failed: )ospathdirnameabspath__file__joinexistsRuntimeErrorr   getenvset_main_optionr   connectr   	configureget_current_revisionr   from_configget_current_headloggerinfor   upgrade	Exceptionerrorstr)
current_diralembic_cfg_pathalembic_cfgdatabase_url
connectioncontextcurrent_rev
script_dirhead_reves
             +/home/www/backend.miabetepe.com/app/main.pyrun_migrationsr=      s   )Cggoobggoobggooh6O&PQ77<<]Cww~~./!DEUDVWXX -. yy0]^^##$4lC ^^ 	&00<G!668K )44[AJ!224HKK-k.CV-DEFKK,XJ78h&45	 	 '	  	?@V,@A%	 	(  C1!568QABBCs8   C=G8 ?BG,G8 #AG8 ,G51G8 8	H5/H00H5appc                   K   t        j                  dd      j                         dk(  }|r t        j	                  d       t                nt        j	                  d       d  y w)NRUN_MIGRATIONS_ON_STARTUPfalsetruezRunning database migrations...z7Migration on startup disabled. Run migrations manually.)r   r%   lowerr,   r-   r=   )r>   run_migrations_on_startups     r<   lifespanrE   B   sO      !#		*Ew O U U W[a a 45MN	s   A%A'#University Admission Management APIz>AI-powered university admission management system with FastAPI1.0.0z/oauth2-redirectTzopenid profile emailzyour-client-id)!usePkceWithAuthorizationCodeGrantscopesclientIdsecuritySchemes
BearerAuthhttpbearerJWT)typeschemebearerFormat)
componentssecurity)titledescriptionversionrE   swagger_ui_oauth2_redirect_urlswagger_ui_init_oauthopenapi_extra)zhttp://localhostzhttp://localhost:3000zhttp://127.0.0.1zhttps://miabetepe.comzhttp://miabetepe.comzhttp://127.0.0.1:3000zOhttps://c12beb99-bb57-48d0-be89-099765a9b98e-00-3uuv29lv6ykec.picard.replit.dev)GETPOSTPUTDELETE*)allow_originsallow_credentialsallow_methodsallow_headersc                 (   K   t        dddi      S w)Ni  detailzInternal server error)status_codecontentr   )requestexcs     r<   general_exception_handlerrj   v   s     23 s   /c                     K   ddddS w)NrF   rG   running)messagerW   status rp       r<   rootrr   ~   s      9 s   	z/healthc                     K   ddiS w)Nro   healthyrp   rp   rq   r<   health_checkru      s     i  s   )3fastapir   r   fastapi.middleware.corsr   fastapi.responsesr   fastapi.securityr   r	   
contextlibr
   r   loggingalembic.configr   alembicr   alembic.runtime.migrationr   alembic.scriptr   app.core.databaser   r   app.routersr   r   r   r   r   r   r   basicConfigINFO	getLogger__name__r,   r=   rE   security_schemer>   add_middlewareexception_handlerr/   rj   getrr   ru   include_routerrouterrp   rq   r<   <module>r      s   * 2 * E * 	  !  6 * * e e e   ',, '			8	$+C\ 	
 	
 	
 ,
/P#5-1($ "&$) 
 "
 8    m2%   y! "   ! !
   4;;    8?? #   :$$ %   >(( )   ;%% &   6== !   <&& 'rq   