PIbd-42_SSPR/main.py

71 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import asyncio
from typing import Optional
from fastapi import FastAPI, HTTPException, Body, Response
from pydantic import BaseModel
from new_experiment_planner import run_experiment # Импортируем функцию из твоего скрипта
from db.csv_to_db import csv_to_db
from db.repositories.load_parameters_repos import LoadParametersRepository
from network.bodies import LoadParametersBody
app = FastAPI()
# Модель данных для передачи параметров
class ExperimentParameters(BaseModel):
outer_blades_count: str
outer_blades_length: str
outer_blades_angle: str
middle_blades_count: str
load: str
recycling: str
# Эндпоинт для запуска эксперимента
@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)}")
@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)}")
@app.post('/create')
async def test(data: LoadParametersBody):
try:
await LoadParametersRepository.create_from_pydantic(data)
return {"status": "success", "message": "Новая запись успешно добавлена"}
except Exception as e:
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")
@app.get('/all')
async def get_all():
try:
result = await LoadParametersRepository.get_all()
if result is not None:
# return {"status": "success", "data": [LoadParametersBody.model_validate(param) for param in result]}
return result
else:
return {"status": "success", "message":"result is not None"}
except Exception as e:
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")