import math from fastapi import APIRouter, HTTPException, Query from db.crud import * from db.models import ExperimentData from db.repositories import get_exp_data_by_file_id, get_all_exp_data from network.schemas import ExperimentDataBody router = APIRouter() @router.post('/create') async def create_experiment_data(body: ExperimentDataBody): try: await create(ExperimentData, direction=body.direction, temperature=body.temperature, nox=body.nox, co2=body.co2, co=body.co, file_id=body.file_id ) return {"message": "Новая запись успешно добавлена"} except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}") @router.get('/all') async def get_all_experiment_data(page: int = Query(ge=1, default=1), size: int = Query(ge = 1, le=100, default=15)): try: result = await get_all_exp_data(page, size) return { "items": result, "page": page, "size": size, } except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}") @router.get('/{id}') async def get_by_id_experiment_data(id: int): try: result = await get_by_id(ExperimentData, id) if result is not None: return result else: return {"message": "Запись не найдена"} except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}") @router.get('/file_id/{file_id}') async def get_experiment_data_by_file_id(file_id: str): try: result = await get_exp_data_by_file_id(file_id) if result is not None: return result else: return {"message": f' с file_id = {id} - не найдены'} except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}") @router.delete('/{id}/delete') async def delete_experiment_data(id: int): try: is_deleted = await delete(ExperimentData, id) if is_deleted: return {"message": "Запись успешно удалена"} else: return {"message": "Запись не найдена"} except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")