import asyncio from fastapi import FastAPI, HTTPException from db.csv_to_db import csv_to_db from network.routes import ch_experimentdb_experiment_data_router, experiment_data_router, experiment_parameters_router from network.routes import load_parameters_router, recycling_parameters_router from network.schemas import * from new_experiment_planner import run_experiment # Импортируем функцию из твоего скрипта app = FastAPI() app.include_router(ch_experimentdb_experiment_data_router.router, prefix="/ch_experimentdb_experiment_data", tags=["ch_experimentdb_experiment_data"]) app.include_router(experiment_data_router.router, prefix="/experiment_data", tags=["experiment_data"]) app.include_router(experiment_parameters_router.router, prefix="/experiment_parameters", tags=["experiment_parameters"]) app.include_router(load_parameters_router.router, prefix="/load_parameters", tags=["load_parameters"]) app.include_router(recycling_parameters_router.router, prefix="/recycling_parameters", tags=["recycling_parameters"]) # Эндпоинт для запуска эксперимента @app.post("/run_experiment/") def run_experiment_api(params: ExperimentParameters): try: # Вызываем функцию run_experiment с параметрами run_experiment( params.outer_blades_count, params.outer_blades_length, params.outer_blades_angle, params.middle_blades_count, params.load, params.recycling ) return {"status": "success", "message": "Experiment started successfully."} except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}") # эндпоинт инициализации бд из csv файлов @app.get('/init_db_data') def init_db_data(): try: asyncio.run(csv_to_db()) return {"status": "success", "message": "База данных инициализирована. Данные из файлов csv успешно добавлены."} except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")