Files
contracts-app/site/test_routes.py
T

49 lines
1.6 KiB
Python

from flask import Blueprint, jsonify, request
import db
test_bp = Blueprint("test", __name__)
@test_bp.route("/test", methods=["GET", "POST"])
def test():
"""Тестовый слой: проверка БД и выполнение запросов."""
# GET — статус
if request.method == "GET":
conn, err = db.connect()
return jsonify({
"db": "ok" if conn else f"fail: {err}",
"actions": [
"GET /test — статус БД",
"POST /test SQL:... — выполнить запрос",
"POST /test tables — список таблиц",
],
})
# POST — выполнить действие
data = request.get_json(silent=True) or {}
action = data.get("action", "status")
if action == "status":
conn, err = db.connect()
return jsonify({"db": "ok" if conn else f"fail: {err}"})
if action == "tables":
result, err = db.query(
"SELECT table_name FROM information_schema.tables WHERE table_schema='public' ORDER BY table_name"
)
if err:
return jsonify({"error": err}), 500
return jsonify({"tables": [r[0] for r in result["rows"]]})
if action == "sql":
sql_text = data.get("sql", "")
if not sql_text:
return jsonify({"error": "no sql"}), 400
result, err = db.query(sql_text)
if err:
return jsonify({"error": err}), 500
return jsonify(result)
return jsonify({"error": f"unknown action: {action}"}), 400