From c2faccabc374bcd2bad99c060fc5886867aab63a Mon Sep 17 00:00:00 2001 From: zurdi Date: Tue, 20 May 2025 16:09:03 +0000 Subject: [PATCH] refactor: update StatsReturn structure and related components; remove unused code and enhance platform stats display --- backend/endpoints/responses/stats.py | 5 +- backend/endpoints/stats.py | 5 +- backend/handler/database/stats_handler.py | 21 ----- .../src/__generated__/models/StatsReturn.ts | 5 +- frontend/src/components/Home/Stats.vue | 86 ------------------- .../Settings/ServerStats/PlatformsSize.vue | 46 ---------- .../Settings/ServerStats/PlatformsStats.vue | 72 ++++++++++++++++ .../Settings/ServerStats/SummaryStats.vue | 78 +++++++++++++++++ .../common/Navigation/PlatformsDrawer.vue | 2 + .../components/common/Platform/ListItem.vue | 24 ++++-- frontend/src/layouts/Settings.vue | 11 --- frontend/src/plugins/router.ts | 51 +++-------- frontend/src/views/Settings/ServerStats.vue | 17 ++-- 13 files changed, 193 insertions(+), 230 deletions(-) delete mode 100644 frontend/src/components/Home/Stats.vue delete mode 100644 frontend/src/components/Settings/ServerStats/PlatformsSize.vue create mode 100644 frontend/src/components/Settings/ServerStats/PlatformsStats.vue create mode 100644 frontend/src/components/Settings/ServerStats/SummaryStats.vue delete mode 100644 frontend/src/layouts/Settings.vue diff --git a/backend/endpoints/responses/stats.py b/backend/endpoints/responses/stats.py index 07c680ba1..270cf6877 100644 --- a/backend/endpoints/responses/stats.py +++ b/backend/endpoints/responses/stats.py @@ -2,10 +2,9 @@ from typing import TypedDict class StatsReturn(TypedDict): - PLATFORMS_COUNT: int - PLATFORMS: list + PLATFORMS: int ROMS: int SAVES: int STATES: int SCREENSHOTS: int - TOTAL_FILESIZE: int + TOTAL_FILESIZE_BYTES: int diff --git a/backend/endpoints/stats.py b/backend/endpoints/stats.py index 7894c586f..d7a3dc8e9 100644 --- a/backend/endpoints/stats.py +++ b/backend/endpoints/stats.py @@ -17,11 +17,10 @@ def stats() -> StatsReturn: """ return { - "PLATFORMS_COUNT": db_stats_handler.get_platforms_count(), - "PLATFORMS": db_stats_handler.get_platforms_filesize(), + "PLATFORMS": db_stats_handler.get_platforms_count(), "ROMS": db_stats_handler.get_roms_count(), "SAVES": db_stats_handler.get_saves_count(), "STATES": db_stats_handler.get_states_count(), "SCREENSHOTS": db_stats_handler.get_screenshots_count(), - "TOTAL_FILESIZE": db_stats_handler.get_total_filesize(), + "TOTAL_FILESIZE_BYTES": db_stats_handler.get_total_filesize(), } diff --git a/backend/handler/database/stats_handler.py b/backend/handler/database/stats_handler.py index 16e07a4f4..ea734e6b2 100644 --- a/backend/handler/database/stats_handler.py +++ b/backend/handler/database/stats_handler.py @@ -57,24 +57,3 @@ class DBStatsHandler(DBBaseHandler): ) or 0 ) - - @begin_session - def get_platforms_filesize(self, session: Session = None) -> list[dict]: - """ - Returns a list of dicts: each with 'id', 'name', and 'filesize' for each platform. - """ - platform_rows = ( - session.execute( - select(Platform.id, Platform.name) - .join(Rom, Rom.platform_id == Platform.id) - .group_by(Platform.id, Platform.name) - ) - ).all() - return [ - { - "id": platform_id, - "name": platform_name, - "filesize": self.get_platform_filesize(platform_id, session=session), - } - for platform_id, platform_name in platform_rows - ] diff --git a/frontend/src/__generated__/models/StatsReturn.ts b/frontend/src/__generated__/models/StatsReturn.ts index 1b49a394c..260cddc69 100644 --- a/frontend/src/__generated__/models/StatsReturn.ts +++ b/frontend/src/__generated__/models/StatsReturn.ts @@ -3,12 +3,11 @@ /* tslint:disable */ /* eslint-disable */ export type StatsReturn = { - PLATFORMS_COUNT: number; - PLATFORMS: Array; + PLATFORMS: number; ROMS: number; SAVES: number; STATES: number; SCREENSHOTS: number; - TOTAL_FILESIZE: number; + TOTAL_FILESIZE_BYTES: number; }; diff --git a/frontend/src/components/Home/Stats.vue b/frontend/src/components/Home/Stats.vue deleted file mode 100644 index fa5b4a9f5..000000000 --- a/frontend/src/components/Home/Stats.vue +++ /dev/null @@ -1,86 +0,0 @@ - - diff --git a/frontend/src/components/Settings/ServerStats/PlatformsSize.vue b/frontend/src/components/Settings/ServerStats/PlatformsSize.vue deleted file mode 100644 index 199c6fca5..000000000 --- a/frontend/src/components/Settings/ServerStats/PlatformsSize.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - diff --git a/frontend/src/components/Settings/ServerStats/PlatformsStats.vue b/frontend/src/components/Settings/ServerStats/PlatformsStats.vue new file mode 100644 index 000000000..c4d7c0397 --- /dev/null +++ b/frontend/src/components/Settings/ServerStats/PlatformsStats.vue @@ -0,0 +1,72 @@ + + + diff --git a/frontend/src/components/Settings/ServerStats/SummaryStats.vue b/frontend/src/components/Settings/ServerStats/SummaryStats.vue new file mode 100644 index 000000000..ee787a121 --- /dev/null +++ b/frontend/src/components/Settings/ServerStats/SummaryStats.vue @@ -0,0 +1,78 @@ + + + diff --git a/frontend/src/components/common/Navigation/PlatformsDrawer.vue b/frontend/src/components/common/Navigation/PlatformsDrawer.vue index f8db01279..afe3afecb 100644 --- a/frontend/src/components/common/Navigation/PlatformsDrawer.vue +++ b/frontend/src/components/common/Navigation/PlatformsDrawer.vue @@ -104,6 +104,7 @@ function clear() { v-for="platform in platforms" :key="platform.slug" :platform="platform" + withLink /> @@ -116,6 +117,7 @@ function clear() { v-for="platform in filteredPlatforms" :key="platform.slug" :platform="platform" + withLink /> diff --git a/frontend/src/components/common/Platform/ListItem.vue b/frontend/src/components/common/Platform/ListItem.vue index 08399b30a..d36e24eeb 100644 --- a/frontend/src/components/common/Platform/ListItem.vue +++ b/frontend/src/components/common/Platform/ListItem.vue @@ -4,14 +4,28 @@ import { ROUTES } from "@/plugins/router"; import type { Platform } from "@/stores/platforms"; // Props -withDefaults(defineProps<{ platform: Platform; rail?: boolean }>(), { - rail: false, -}); +withDefaults( + defineProps<{ + platform: Platform; + withLink?: boolean; + showRomCount?: boolean; + }>(), + { + withLink: false, + showRomCount: true, + }, +);