|
|
|
|
@ -483,7 +483,7 @@ async def create_simulation(*, db_session: DbSession, simulation_in: SimulationI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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."""
|
|
|
|
|
query = (select(AerosSimulationCalcResult).filter(
|
|
|
|
|
@ -499,6 +499,11 @@ async def get_simulation_with_calc_result(
|
|
|
|
|
AerosNode, AerosNode.id == AerosSimulationCalcResult.aeros_node_id
|
|
|
|
|
).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(
|
|
|
|
|
selectinload(AerosSimulationCalcResult.aeros_node).options(
|
|
|
|
|
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(
|
|
|
|
|
*, db_session: DbSession, simulation_id: UUID
|
|
|
|
|
*, db_session: DbSession, simulation_id: UUID, node_type: Optional[str] = None
|
|
|
|
|
):
|
|
|
|
|
"""Get a simulation by id."""
|
|
|
|
|
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)
|
|
|
|
|
return simulation.scalar()
|
|
|
|
|
|
|
|
|
|
|