feat: /test createdb — создание БД через API

This commit is contained in:
2026-06-13 12:48:33 +04:00
parent b5c007044f
commit 6b5a6f79aa
2 changed files with 23 additions and 4 deletions
-1
View File
@@ -9,7 +9,6 @@ load_dotenv()
class ContractsApp:
def __init__(self):
self.app = Flask(__name__)
db.ensure_db()
self.add_routes()
def add_routes(self):
+21 -1
View File
@@ -1,3 +1,4 @@
import os
from flask import Blueprint, jsonify, request
import db
@@ -15,8 +16,9 @@ def test():
"db": "ok" if conn else f"fail: {err}",
"actions": [
"GET /test — статус БД",
"POST /test SQL:... — выполнить запрос",
"POST /test createdb — создать БД",
"POST /test tables — список таблиц",
"POST /test SQL:... — выполнить запрос",
],
})
@@ -36,6 +38,24 @@ def test():
return jsonify({"error": err}), 500
return jsonify({"tables": [r[0] for r in result["rows"]]})
if action == "createdb":
try:
conn = db._pg_connect("postgres")
conn.autocommit = True
cur = conn.cursor()
db_name = data.get("name") or os.environ.get("DB_NAME", "contracts")
cur.execute("SELECT 1 FROM pg_database WHERE datname = %s", (db_name,))
if cur.fetchone():
msg = f"DB '{db_name}' already exists"
else:
cur.execute(db.sql.SQL("CREATE DATABASE {}").format(db.sql.Identifier(db_name)))
msg = f"DB '{db_name}' created"
cur.close()
conn.close()
return jsonify({"result": msg})
except Exception as e:
return jsonify({"error": str(e)}), 500
if action == "sql":
sql_text = data.get("sql", "")
if not sql_text: