From 6eed0b6c7fce9b9e1ad444679ec0b44ccf58a944 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Mon, 22 Sep 2025 21:48:45 -0400 Subject: [PATCH 1/2] Set platform metadata slugs on models in DB --- .../0054_add_platform_metadata_slugs.py | 38 +++++++++++++++++++ backend/endpoints/responses/platform.py | 2 + backend/handler/scan_handler.py | 4 +- backend/models/platform.py | 21 ++-------- 4 files changed, 47 insertions(+), 18 deletions(-) create mode 100644 backend/alembic/versions/0054_add_platform_metadata_slugs.py diff --git a/backend/alembic/versions/0054_add_platform_metadata_slugs.py b/backend/alembic/versions/0054_add_platform_metadata_slugs.py new file mode 100644 index 000000000..b29cb08ec --- /dev/null +++ b/backend/alembic/versions/0054_add_platform_metadata_slugs.py @@ -0,0 +1,38 @@ +"""empty message + +Revision ID: 0054_add_platform_metadata_slugs +Revises: 0053_add_hltb_metadata +Create Date: 2025-09-22 21:42:33.654137 + +""" + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "0054_add_platform_metadata_slugs" +down_revision = "0053_add_hltb_metadata" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + with op.batch_alter_table("platforms", schema=None) as batch_op: + batch_op.add_column(sa.Column("flashpoint_id", sa.Integer(), nullable=True)) + batch_op.add_column( + sa.Column("igdb_slug", sa.String(length=100), nullable=True) + ) + batch_op.add_column( + sa.Column("moby_slug", sa.String(length=100), nullable=True) + ) + batch_op.add_column( + sa.Column("hltb_slug", sa.String(length=100), nullable=True) + ) + + +def downgrade() -> None: + with op.batch_alter_table("platforms", schema=None) as batch_op: + batch_op.drop_column("hltb_slug") + batch_op.drop_column("moby_slug") + batch_op.drop_column("igdb_slug") + batch_op.drop_column("flashpoint_id") diff --git a/backend/endpoints/responses/platform.py b/backend/endpoints/responses/platform.py index dfb11d734..3da40f93d 100644 --- a/backend/endpoints/responses/platform.py +++ b/backend/endpoints/responses/platform.py @@ -16,6 +16,7 @@ class PlatformSchema(BaseModel): name: str igdb_slug: str | None moby_slug: str | None + hltb_slug: str | None custom_name: str | None = None igdb_id: int | None = None sgdb_id: int | None = None @@ -25,6 +26,7 @@ class PlatformSchema(BaseModel): ra_id: int | None = None hasheous_id: int | None = None tgdb_id: int | None = None + flashpoint_id: int | None = None category: str | None = None generation: int | None = None family_name: str | None = None diff --git a/backend/handler/scan_handler.py b/backend/handler/scan_handler.py index b289d8e4e..c871809d8 100644 --- a/backend/handler/scan_handler.py +++ b/backend/handler/scan_handler.py @@ -176,8 +176,10 @@ async def scan_platform( platform_attrs["name"] = platform_attrs["slug"].replace("-", " ").title() platform_attrs.update( { - **hasheous_platform, + **hltb_platform, + **flashpoint_platform, **tgdb_platform, + **hasheous_platform, **launchbox_platform, **ra_platform, **moby_platform, diff --git a/backend/models/platform.py b/backend/models/platform.py index 52f0b393d..22f37391a 100644 --- a/backend/models/platform.py +++ b/backend/models/platform.py @@ -1,6 +1,5 @@ from __future__ import annotations -from functools import cached_property from typing import TYPE_CHECKING from sqlalchemy import String, func, select @@ -28,6 +27,10 @@ class Platform(BaseModel): launchbox_id: Mapped[int | None] hasheous_id: Mapped[int | None] tgdb_id: Mapped[int | None] + flashpoint_id: Mapped[int | None] + igdb_slug: Mapped[str | None] + moby_slug: Mapped[str | None] + hltb_slug: Mapped[str | None] slug: Mapped[str] = mapped_column(String(length=100)) fs_slug: Mapped[str] = mapped_column(String(length=100)) name: Mapped[str] = mapped_column(String(length=400)) @@ -83,21 +86,5 @@ class Platform(BaseModel): def is_identified(self) -> bool: return not self.is_unidentified - @cached_property - def igdb_slug(self) -> str | None: - from handler.metadata import meta_igdb_handler - - igdb_platform = meta_igdb_handler.get_platform(self.slug) - - return igdb_platform.get("igdb_slug", None) - - @cached_property - def moby_slug(self) -> str | None: - from handler.metadata import meta_moby_handler - - moby_platform = meta_moby_handler.get_platform(self.slug) - - return moby_platform.get("moby_slug", None) - def __repr__(self) -> str: return self.name From 3c88095508df5dfad00c82e6819df9780b0c4d9f Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Mon, 22 Sep 2025 21:57:31 -0400 Subject: [PATCH 2/2] add to platform info drawer --- .../__generated__/models/PlatformSchema.ts | 2 ++ .../AppBar/Platform/PlatformInfoDrawer.vue | 20 +++++++++++++++++++ .../components/common/Game/VirtualTable.vue | 10 ++++++++++ 3 files changed, 32 insertions(+) diff --git a/frontend/src/__generated__/models/PlatformSchema.ts b/frontend/src/__generated__/models/PlatformSchema.ts index dcd2e393c..8da8edb67 100644 --- a/frontend/src/__generated__/models/PlatformSchema.ts +++ b/frontend/src/__generated__/models/PlatformSchema.ts @@ -11,6 +11,7 @@ export type PlatformSchema = { name: string; igdb_slug: (string | null); moby_slug: (string | null); + hltb_slug: (string | null); custom_name?: (string | null); igdb_id?: (number | null); sgdb_id?: (number | null); @@ -20,6 +21,7 @@ export type PlatformSchema = { ra_id?: (number | null); hasheous_id?: (number | null); tgdb_id?: (number | null); + flashpoint_id?: (number | null); category?: (string | null); generation?: (number | null); family_name?: (string | null); diff --git a/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue b/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue index e56bc3f05..bf49ce9ab 100644 --- a/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue +++ b/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue @@ -413,6 +413,26 @@ watch( {{ currentPlatform.hasheous_id }} + + + + + + + + + + diff --git a/frontend/src/components/common/Game/VirtualTable.vue b/frontend/src/components/common/Game/VirtualTable.vue index 67ea6b21f..3b20b4d51 100644 --- a/frontend/src/components/common/Game/VirtualTable.vue +++ b/frontend/src/components/common/Game/VirtualTable.vue @@ -249,6 +249,16 @@ function updateOptions({ sortBy }: { sortBy: SortBy }) { + + + + +