WIP: Render database schema using Mermaid.js

Still need to:
* Move mermaid.js to static files
* Make template for mermaid wrapper
* Create new page for SQL viewer then add explorer
This commit is contained in:
Peter Stockings
2024-11-06 22:48:51 +11:00
parent 30ba59381c
commit 3a07b9d97f
5 changed files with 127 additions and 0 deletions

16
app.py
View File

@@ -469,6 +469,22 @@ def delete_exercise(exercise_id):
db.exercises.delete_exercise(exercise_id)
return ""
@ 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
@app.teardown_appcontext
def closeConnection(exception):
db.close_connection()