#!/usr/bin/env python3
"""PostToolUse hook: 编辑含 CREATE VIEW 的 SQL 文件时提醒双 Schema 规则"""
import json, re, sys

try:
    data = json.load(sys.stdin)
except Exception:
    sys.exit(0)

fp = (data.get("tool_input") or {}).get("file_path", "")
if not fp:
    sys.exit(0)

rel = re.sub(r"^.*?NeoZQYY[/\\]", "", fp.replace("\\", "/"))

# 仅检查 db/ 下的 SQL 文件
if not re.search(r"^db/.*\.sql$", rel):
    sys.exit(0)

# 读取文件内容检查是否包含 CREATE VIEW
try:
    with open(fp, "r", encoding="utf-8") as f:
        content = f.read()
except Exception:
    sys.exit(0)

# 检测 CREATE [OR REPLACE] VIEW 语句
if re.search(r"CREATE\s+(OR\s+REPLACE\s+)?VIEW\s+(dws|dwd|core)\.", content, re.IGNORECASE):
    print(json.dumps({
        "hookSpecificOutput": {
            "hookEventName": "PostToolUse",
            "additionalContext": (
                f"[rls-dual-schema] 检测到 {rel} 中包含 dws/dwd/core schema 的 VIEW 定义 — "
                "根据 RLS 视图双 Schema 规则，必须同时在原 schema 和 app schema 创建对应视图，否则后端查询会失败。"
            )
        }
    }))
