fix(db): unify table name prefix to mjk_ for update tables
- 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
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user