diff options
| -rw-r--r-- | fietsboek/views/admin.py | 19 |
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: |
