2121from backend .common .exception .errors import BaseExceptionError
2222from backend .core .conf import settings
2323from backend .database .db import async_db_session
24- from backend .plugin .code_generator .schema .code import ImportParam
25- from backend .plugin .code_generator .service .business_service import gen_business_service
26- from backend .plugin .code_generator .service .code_service import gen_service
2724from backend .plugin .tools import get_plugin_sql , get_plugins
2825from backend .utils ._await import run_await
2926from backend .utils .console import console
3027from backend .utils .file_ops import install_git_plugin , install_zip_plugin , parse_sql_script
28+ from backend .utils .import_parse import import_module_cached
3129
3230output_help = '\n 更多信息,尝试 "[cyan]--help[/]"'
3331
@@ -160,6 +158,9 @@ async def import_table(
160158 table_schema : str ,
161159 table_name : str ,
162160) -> None :
161+ from backend .plugin .code_generator .schema .code import ImportParam
162+ from backend .plugin .code_generator .service .code_service import gen_service
163+
163164 try :
164165 obj = ImportParam (app = app , table_schema = table_schema , table_name = table_name )
165166 async with async_db_session .begin () as db :
@@ -169,6 +170,9 @@ async def import_table(
169170
170171
171172def generate () -> None :
173+ from backend .plugin .code_generator .service .business_service import gen_business_service
174+ from backend .plugin .code_generator .service .code_service import gen_service
175+
172176 try :
173177 ids = []
174178 results = run_await (gen_business_service .get_all )()
@@ -320,15 +324,27 @@ class Import:
320324 cappa .Arg (short = 'tn' , help = '数据库表名' ),
321325 ]
322326
327+ def __post_init__ (self ) -> None :
328+ try :
329+ import_module_cached ('backend.plugin.code_generator' )
330+ except ImportError :
331+ raise cappa .Exit ('代码生成插件不存在,请先安装此插件' )
332+
323333 async def __call__ (self ) -> None :
324334 await import_table (self .app , self .table_schema , self .table_name )
325335
326336
327337@cappa .command (name = 'codegen' , help = '代码生成(体验完整功能,请自行部署 fba vben 前端工程)' , default_long = True )
328338@dataclass
329- class CodeGenerate :
339+ class CodeGenerator :
330340 subcmd : cappa .Subcommands [Import | None ] = None
331341
342+ def __post_init__ (self ) -> None :
343+ try :
344+ import_module_cached ('backend.plugin.code_generator' )
345+ except ImportError :
346+ raise cappa .Exit ('代码生成插件不存在,请先安装此插件' )
347+
332348 def __call__ (self ) -> None :
333349 generate ()
334350
@@ -340,7 +356,7 @@ class FbaCli:
340356 str ,
341357 cappa .Arg (value_name = 'PATH' , default = '' , show_default = False , help = '在事务中执行 SQL 脚本' ),
342358 ]
343- subcmd : cappa .Subcommands [Run | Celery | Add | CodeGenerate | None ] = None
359+ subcmd : cappa .Subcommands [Run | Celery | Add | CodeGenerator | None ] = None
344360
345361 async def __call__ (self ) -> None :
346362 if self .sql :
0 commit comments