From 536450262c132d1bb11d54dbff589728cd915aeb Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Wed, 5 Feb 2025 11:59:04 +0700 Subject: [PATCH] fix minor bug --- src/calculation_time_constrains/service.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/calculation_time_constrains/service.py b/src/calculation_time_constrains/service.py index 7de7276..16b892c 100644 --- a/src/calculation_time_constrains/service.py +++ b/src/calculation_time_constrains/service.py @@ -373,14 +373,8 @@ async def get_avg_cost_by_asset(*, db_session: DbSession, assetnum: str): return result.scalar_one_or_none() -async def bulk_update_equipment(*, db: DbSession, selected_equipments: List[CalculationSelectedEquipmentUpdate], calculation_data_id:UUID): - # Assuming your model is named Asset - # and updates is a list of dictionaries containing assetnum and updated values - - # Create a case statement for each field you want to update - stmt = update(CalculationEquipmentResult) - - # Using the case method to match assetnums with their updates +async def bulk_update_equipment(*, db: DbSession, selected_equipments: List[CalculationSelectedEquipmentUpdate], calculation_data_id: UUID): + # Create a dictionary mapping assetnum to is_included status case_mappings = { asset.assetnum: asset.is_included for asset in selected_equipments @@ -389,16 +383,19 @@ async def bulk_update_equipment(*, db: DbSession, selected_equipments: List[Calc # Get all assetnums that need to be updated assetnums = list(case_mappings.keys()) + # Create a list of when clauses for the case statement + when_clauses = [ + (CalculationEquipmentResult.assetnum == assetnum, is_included) + for assetnum, is_included in case_mappings.items() + ] + # Build the update statement stmt = ( update(CalculationEquipmentResult) .where(CalculationEquipmentResult.calculation_data_id == calculation_data_id) .where(CalculationEquipmentResult.assetnum.in_(assetnums)) .values({ - "is_included": case( - (CalculationEquipmentResult.assetnum == assetnum, is_included) - for assetnum, is_included in case_mappings.items() - ) + "is_included": case(*when_clauses) # Unpack the when clauses as separate arguments }) )