From 62c85e9e82a92af4c1775814bf025ae352b7278a Mon Sep 17 00:00:00 2001 From: 283375 Date: Mon, 16 Oct 2023 01:14:34 +0800 Subject: [PATCH] fix(models): null value checking --- src/arcaea_offline/models/scores.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/arcaea_offline/models/scores.py b/src/arcaea_offline/models/scores.py index 249f8f0..8a74698 100644 --- a/src/arcaea_offline/models/scores.py +++ b/src/arcaea_offline/models/scores.py @@ -1,6 +1,6 @@ from typing import Optional -from sqlalchemy import TEXT, case, func, inspect, select +from sqlalchemy import TEXT, case, func, inspect, select, text from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy_utils import create_view @@ -78,10 +78,16 @@ class ScoreCalculated(ScoresViewBase): Score.score, Score.pure, ( - Score.score - - func.floor( - (Score.pure * 10000000.0 / ChartInfo.notes) - + (Score.far * 0.5 * 10000000.0 / ChartInfo.notes) + case( + ( + (ChartInfo.notes.isnot(None) & ChartInfo.notes != 0), + Score.score + - func.floor( + (Score.pure * 10000000.0 / ChartInfo.notes) + + (Score.far * 0.5 * 10000000.0 / ChartInfo.notes) + ), + ), + else_=text("NULL"), ) ).label("shiny_pure"), Score.far,