From b23bd2652a139637f487e9d38e25a284a26122ca Mon Sep 17 00:00:00 2001 From: 283375 Date: Sat, 26 Aug 2023 01:34:34 +0800 Subject: [PATCH] impr: separate `DeclarativeBase` for views --- src/arcaea_offline/models/scores.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/arcaea_offline/models/scores.py b/src/arcaea_offline/models/scores.py index ca294a9..10c6b72 100644 --- a/src/arcaea_offline/models/scores.py +++ b/src/arcaea_offline/models/scores.py @@ -9,6 +9,7 @@ from .songs import Chart, ChartInfo __all__ = [ "ScoresBase", "Score", + "ScoresViewBase", "Calculated", "Best", "CalculatedPotential", @@ -41,7 +42,11 @@ class Score(ScoresBase): # CC BY-SA 4.0 -class Calculated(ScoresBase): +class ScoresViewBase(DeclarativeBase): + pass + + +class Calculated(ScoresViewBase): score_id: Mapped[str] song_id: Mapped[str] rating_class: Mapped[int] @@ -98,11 +103,11 @@ class Calculated(ScoresBase): (Chart.song_id == Score.song_id) & (Chart.rating_class == Score.rating_class), ), - metadata=ScoresBase.metadata, + metadata=ScoresViewBase.metadata, ) -class Best(ScoresBase): +class Best(ScoresViewBase): score_id: Mapped[str] song_id: Mapped[str] rating_class: Mapped[int] @@ -125,11 +130,11 @@ class Best(ScoresBase): .select_from(Calculated) .group_by(Calculated.song_id, Calculated.rating_class) .order_by(Calculated.potential.desc()), - metadata=ScoresBase.metadata, + metadata=ScoresViewBase.metadata, ) -class CalculatedPotential(ScoresBase): +class CalculatedPotential(ScoresViewBase): b30: Mapped[float] _select_bests_subquery = ( @@ -141,5 +146,5 @@ class CalculatedPotential(ScoresBase): __table__ = create_view( name="calculated_potential", selectable=select(func.avg(_select_bests_subquery.c.b30_sum).label("b30")), - metadata=ScoresBase.metadata, + metadata=ScoresViewBase.metadata, )