Untitled

 avatar
unknown
plain_text
a year ago
1.3 kB
3
Indexable
from fastapi import FastAPI, HTTPException
from sqlalchemy.future import select
from sqlalchemy.orm import Session
from src.database.connection.db_session import async_session
from src.models import NodeVariable, NodeNetworkScenario  # Import your models
from typing import List, Dict

app = FastAPI()

@app.get("/custom-scenario/{platform_name}/export/display")
async def export_custom_scenario(platform_name: str) -> Dict[str, List]:
    async with async_session() as session:
        return await get_scenario_data(session, platform_name)

async def get_scenario_data(session: Session, platform_name: str) -> Dict[str, List]:
    stmt = (
        select(
            NodeVariable, 
            NodeNetworkScenario
        )
        .join(NodeNetworkScenario, NodeVariable.scenario_id == NodeNetworkScenario.id)
        .where(NodeNetworkScenario.platform_name == platform_name)
    )
    
    result = await session.execute(stmt)
    data = result.all()

    if not data:
        raise HTTPException(status_code=404, detail="No data found for the given platform name")

    columns = data[0].keys()  # Get column names
    rows = [dict(row) for row in data]  # Convert data into a list of dictionaries

    return {"columns": columns, "rows": rows}
Editor is loading...
Leave a Comment