* Add SQL query executor

* Move mermaid.min.js to static asset
* Create templates for sql logic
This commit is contained in:
Peter Stockings
2024-11-06 23:25:25 +11:00
parent 3a07b9d97f
commit 0f55d42f22
9 changed files with 2147 additions and 19 deletions

33
app.py
View File

@@ -469,21 +469,26 @@ def delete_exercise(exercise_id):
db.exercises.delete_exercise(exercise_id)
return ""
@app.route("/sql_explorer", methods=['GET'])
def sql_explorer():
if htmx:
return render_block(app.jinja_env, 'sql_explorer.html', 'content')
return render_template('sql_explorer.html')
@app.route("/sql_query", methods=['POST'])
def sql_query():
query = request.form.get('query')
(results, columns, error) = db.sql_explorer.execute_sql(query)
return render_template('partials/sql_explorer/sql_query.html', query=query, results=results, columns=columns, error=error)
@ app.route("/sql_schema", methods=['GET'])
def get_sql_schema():
schema_info = db.sql_viewer.get_schema_info()
mermaid_code = db.sql_viewer.generate_mermaid_er(schema_info)
html_content = f'''
<div class="overflow-auto" style="max-height: 80vh;">
<div class="mermaid" style="opacity: 0;"
_="on load
mermaid.init(undefined, this)
set me.style.opacity to '1'">
{mermaid_code}
</div>
</div>
'''
return html_content
def sql_schema():
schema_info = db.sql_explorer.get_schema_info()
mermaid_code = db.sql_explorer.generate_mermaid_er(schema_info)
return render_template('partials/sql_explorer/schema.html', mermaid_code=mermaid_code)
@app.teardown_appcontext
def closeConnection(exception):