chore: auto-commit (2 archivos)

- .claude/settings.local.json
- scratchpad/mbq.py

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-01 11:41:56 +02:00
parent 5501507588
commit 76592e4dc0
2 changed files with 53 additions and 1 deletions
+2 -1
View File
@@ -9,7 +9,8 @@
"enabledMcpjsonServers": [
"registry",
"jupyter",
"orchestrator"
"orchestrator",
"godot"
],
"hooks": {
"PreToolUse": [
+51
View File
@@ -0,0 +1,51 @@
"""Helper: run SQL against Metabase BigQuery db=6 via REST API.
Usage:
python3 mbq.py "SELECT 1"
python3 mbq.py < query.sql
Reads API key from `pass metabase/aurgi-api-key`.
Prints columns header + rows as TSV.
"""
import os
import sys
import json
import subprocess
sys.path.insert(0, "python/functions")
from metabase import MetabaseClient, metabase_execute_query
MB_URL = "https://reports.autingo.es"
DB_ID = 6
def get_key():
return subprocess.check_output(["pass", "show", "metabase/aurgi-api-key"]).decode().splitlines()[0].strip()
def run(sql, max_results=2000):
import httpx
c = MetabaseClient(MB_URL, get_key())
try:
res = metabase_execute_query(c, DB_ID, sql, max_results=max_results)
except httpx.HTTPStatusError as e:
print("HTTP", e.response.status_code, e.response.text[:3000])
return
data = res.get("data", {})
cols = [col.get("display_name") or col.get("name") for col in data.get("cols", [])]
rows = data.get("rows", [])
# error?
if res.get("error") or (res.get("status") and res.get("status") != "completed"):
print("ERROR:", json.dumps(res.get("error") or res, ensure_ascii=False)[:2000])
return
print("\t".join(str(x) for x in cols))
for r in rows:
print("\t".join("" if v is None else str(v) for v in r))
print(f"-- {len(rows)} rows", file=sys.stderr)
if __name__ == "__main__":
if len(sys.argv) > 1:
sql = sys.argv[1]
else:
sql = sys.stdin.read()
run(sql)