Skip to content

Commit ea4ac6f

Browse files
authored
Optimize the coupling of code generation CLI (#951)
1 parent bb5bcdf commit ea4ac6f

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

backend/cli.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@
2121
from backend.common.exception.errors import BaseExceptionError
2222
from backend.core.conf import settings
2323
from 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
2724
from backend.plugin.tools import get_plugin_sql, get_plugins
2825
from backend.utils._await import run_await
2926
from backend.utils.console import console
3027
from 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

3230
output_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

171172
def 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

Comments
 (0)