cbd4068776
- Rename app_releases → mjk_app_releases - Rename release_packages → mjk_release_packages - Update ForeignKey reference and migration file - Add pre-commit hook: check_table_prefix.py to prevent future violations
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
检查所有模型的 __tablename__ 是否以 mjk_ 开头
|
|
|
|
用法:
|
|
python scripts/check_table_prefix.py
|
|
|
|
退出码:
|
|
0 - 所有表名合规
|
|
1 - 有表名缺少 mjk_ 前缀
|
|
"""
|
|
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
MODELS_DIR = Path("app/models")
|
|
TABLENAME_RE = re.compile(r'__tablename__\s*=\s*"([^"]+)"')
|
|
|
|
|
|
def check() -> int:
|
|
violations = []
|
|
|
|
for py_file in sorted(MODELS_DIR.glob("*.py")):
|
|
content = py_file.read_text(encoding="utf-8")
|
|
for match in TABLENAME_RE.finditer(content):
|
|
table_name = match.group(1)
|
|
if not table_name.startswith("mjk_"):
|
|
violations.append((py_file.name, table_name))
|
|
|
|
if violations:
|
|
print("❌ 表名前缀检查失败:以下模型的 __tablename__ 缺少 'mjk_' 前缀\n")
|
|
for filename, table_name in violations:
|
|
print(f" {filename}: __tablename__ = \"{table_name}\"")
|
|
print(
|
|
"\n修复方式:将表名改为 mjk_<name> 格式,与其他模型保持一致。\n"
|
|
)
|
|
return 1
|
|
|
|
print("✅ 所有模型表名均以 'mjk_' 开头")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(check())
|