#!/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())
