@@ -83,8 +83,10 @@ async def init_orm() -> None:
8383 try :
8484 await greenlet_spawn (migrate .check , alembic_config )
8585 except click .UsageError :
86- logger .error ("启动检查失败" )
87- raise
86+ if not click .confirm ("目标数据库未更新到最新迁移, 是否更新?" ):
87+ raise
88+ cmd_opts .cmd = (migrate .upgrade , [], [])
89+ await greenlet_spawn (migrate .upgrade , alembic_config )
8890 else :
8991 logger .warning ("跳过启动检查, 正在同步数据库模式..." )
9092 cmd_opts .cmd = (migrate .sync , ["revision" ], [])
@@ -110,7 +112,6 @@ def _init_orm():
110112 run_postprocessor (_scoped_sessions .remove )
111113
112114
113- @wraps (lambda : None ) # NOTE: for dependency injection
114115def get_session (** local_kw : Any ) -> sa_async .AsyncSession :
115116 try :
116117 return _session_factory (** local_kw )
@@ -121,7 +122,8 @@ def get_session(**local_kw: Any) -> sa_async.AsyncSession:
121122# NOTE: NoneBot DI will run sync function in thread pool executor,
122123# which is poor performance for this simple function, so we wrap it as a coroutine function.
123124AsyncSession = Annotated [
124- sa_async .AsyncSession , Depends (coroutine (get_session ), use_cache = False )
125+ sa_async .AsyncSession ,
126+ Depends (coroutine (wraps (lambda : None )(get_session )), use_cache = False ),
125127]
126128
127129
0 commit comments