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