feat: слои db.py + test_routes (Blueprint /test)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
from . import db
|
||||
|
||||
test_bp = Blueprint("test", __name__)
|
||||
|
||||
|
||||
@test_bp.route("/test", methods=["GET", "POST"])
|
||||
def test():
|
||||
"""Тестовый слой: проверка БД и выполнение запросов."""
|
||||
|
||||
# GET — статус
|
||||
if request.method == "GET":
|
||||
conn = db.connect()
|
||||
return jsonify({
|
||||
"db": "ok" if conn else "fail",
|
||||
"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 = db.connect()
|
||||
return jsonify({"db": "ok" if conn else "fail"})
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user