fix minor bug

main
Cizz22 11 months ago
parent 9261e5341b
commit 536450262c

@ -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
})
)

Loading…
Cancel
Save