aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fietsboek/views/admin.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/fietsboek/views/admin.py b/fietsboek/views/admin.py
index b743c85..14e4306 100644
--- a/fietsboek/views/admin.py
+++ b/fietsboek/views/admin.py
@@ -49,7 +49,6 @@ def _get_size_breakdown(dbsession, data_manager):
result = dbsession.execute(query).scalar_one()
breakdown.track_data += result
elif dialect == "postgresql":
- database_name = dbsession.bind.url.database
query = text(f"""SELECT pg_relation_size('track_points');""")
result = dbsession.execute(query).scalar_one()
breakdown.track_data += result
@@ -69,6 +68,22 @@ def _get_size_breakdown(dbsession, data_manager):
return breakdown
+def _get_db_size(dbsession):
+ dialect = dbsession.bind.dialect.name
+ if dialect == "sqlite":
+ query = text(
+ """SELECT page_size * page_count FROM pragma_page_count(), pragma_page_size();"""
+ )
+ result = dbsession.execute(query).scalar_one()
+ return result
+ if dialect == "postgresql":
+ database_name = dbsession.bind.url.database
+ query = text(f"""SELECT pg_database_size('{database_name}');""")
+ result = dbsession.execute(query).scalar_one()
+ return result
+ return 0
+
+
def _get_fietsboek_version():
# pylint: disable=import-outside-toplevel
from fietsboek import __VERSION__
@@ -92,7 +107,7 @@ def admin(request: Request):
# pylint: disable=not-callable
user_count = request.dbsession.execute(select(func.count()).select_from(models.User)).scalar()
track_count = request.dbsession.execute(select(func.count()).select_from(models.Track)).scalar()
- size_total = request.data_manager.size()
+ size_total = request.data_manager.size() + _get_db_size(request.dbsession)
size_breakdown = _get_size_breakdown(request.dbsession, request.data_manager)
try: