add regular node filter

main
Cizz22 5 months ago
parent a3d47d3d55
commit 0cec12e0c5

@ -111,10 +111,10 @@ async def run_simulations(
"/result/calc/{simulation_id}", "/result/calc/{simulation_id}",
response_model=StandardResponse[List[SimulationCalc]], response_model=StandardResponse[List[SimulationCalc]],
) )
async def get_simulation_result(db_session: DbSession, simulation_id, schematic_name: Optional[str] = Query(None)): async def get_simulation_result(db_session: DbSession, simulation_id, schematic_name: Optional[str] = Query(None), node_type = Query(None, alias="nodetype")):
"""Get simulation result.""" """Get simulation result."""
simulation_result = await get_simulation_with_calc_result( simulation_result = await get_simulation_with_calc_result(
db_session=db_session, simulation_id=simulation_id, schematic_name=schematic_name db_session=db_session, simulation_id=simulation_id, schematic_name=schematic_name, node_type=node_type
) )
return { return {

@ -483,7 +483,7 @@ async def create_simulation(*, db_session: DbSession, simulation_in: SimulationI
async def get_simulation_with_calc_result( async def get_simulation_with_calc_result(
*, db_session: DbSession, simulation_id: UUID, aeros_node_id: Optional[UUID] = None, schematic_name: Optional[str] = None *, db_session: DbSession, simulation_id: UUID, aeros_node_id: Optional[UUID] = None, schematic_name: Optional[str] = None, node_type: Optional[str] = None
): ):
"""Get a simulation by id.""" """Get a simulation by id."""
query = (select(AerosSimulationCalcResult).filter( query = (select(AerosSimulationCalcResult).filter(
@ -499,6 +499,11 @@ async def get_simulation_with_calc_result(
AerosNode, AerosNode.id == AerosSimulationCalcResult.aeros_node_id AerosNode, AerosNode.id == AerosSimulationCalcResult.aeros_node_id
).filter(AerosNode.structure_name.contains(schematic_name)) ).filter(AerosNode.structure_name.contains(schematic_name))
if node_type:
query = query.join(
AerosNode, AerosNode.id == AerosSimulationCalcResult.aeros_node_id
).filter(AerosNode.node_type == node_type)
query = query.options( query = query.options(
selectinload(AerosSimulationCalcResult.aeros_node).options( selectinload(AerosSimulationCalcResult.aeros_node).options(
selectinload(AerosNode.equipment) selectinload(AerosNode.equipment)
@ -545,7 +550,7 @@ async def get_result_ranking(*, db_session: DbSession, simulation_id: UUID):
async def get_simulation_with_plot_result( async def get_simulation_with_plot_result(
*, db_session: DbSession, simulation_id: UUID *, db_session: DbSession, simulation_id: UUID, node_type: Optional[str] = None
): ):
"""Get a simulation by id.""" """Get a simulation by id."""
query = ( query = (
@ -557,6 +562,12 @@ async def get_simulation_with_plot_result(
) )
) )
) )
if node_type:
query = query.join(
AerosNode, AerosNode.id == AerosSimulation.plot_results.aeros_node_id
).filter(AerosNode.node_type == node_type)
simulation = await db_session.execute(query) simulation = await db_session.execute(query)
return simulation.scalar() return simulation.scalar()

Loading…
Cancel
Save