diff --git a/src/equipment/__pycache__/service.cpython-311.pyc b/src/equipment/__pycache__/service.cpython-311.pyc index 0ce524a..5212838 100644 Binary files a/src/equipment/__pycache__/service.cpython-311.pyc and b/src/equipment/__pycache__/service.cpython-311.pyc differ diff --git a/src/equipment/service.py b/src/equipment/service.py index c18b2f1..91bc657 100644 --- a/src/equipment/service.py +++ b/src/equipment/service.py @@ -2,7 +2,7 @@ import os import logging from typing import Optional, TypedDict, Any -from sqlalchemy import Select, Delete, Float, func, cast, String, text, case +from sqlalchemy import Select, Delete, Float, func, cast, String, text, case, asc, desc from sqlalchemy.orm import selectinload from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession @@ -395,13 +395,17 @@ async def get_top_10_economic_life(*, db_session: DbSession, common) -> list[Equ (current_year - Equipment.minimum_eac_year) >= 0, (current_year - Equipment.minimum_eac_year), ), - else_=0, - ).label("remaining_life") - ) - .filter(Equipment.minimum_eac_year != None) - .filter((Equipment.minimum_eac != None) & (Equipment.minimum_eac != 0)) + ( + (Equipment.minimum_eac_year - current_year) >= 0, + (Equipment.minimum_eac_year - current_year), + ), + else_=0, + ).label("remaining_life") + ) + .filter(Equipment.minimum_eac_year != None) + .filter((Equipment.minimum_eac != None) & (Equipment.minimum_eac != 0)) # .filter((current_year - Equipment.minimum_eac_year) >= 0) - .order_by((current_year - Equipment.minimum_eac_year).desc()) + .order_by(desc("remaining_life")) .order_by(func.abs(Equipment.minimum_eac).desc()) ) @@ -427,13 +431,17 @@ async def get_top_10_replacement_priorities(*, db_session: DbSession, common) -> (current_year - Equipment.minimum_eac_year) >= 0, (current_year - Equipment.minimum_eac_year), ), + ( + (Equipment.minimum_eac_year - current_year) >= 0, + (Equipment.minimum_eac_year - current_year), + ), else_=0, ).label("remaining_life") ) .filter(Equipment.minimum_eac_year != None) .filter((Equipment.minimum_eac != None) & (Equipment.minimum_eac != 0)) # .filter((current_year - Equipment.minimum_eac_year) >= 0) - .order_by((current_year - Equipment.minimum_eac_year).asc()) + .order_by(asc("remaining_life")) .order_by(func.abs(Equipment.minimum_eac).desc()) )