from fastapi import ( APIRouter, status, Body, Depends) from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync from sqlalchemy.ext.asyncio import AsyncSession from influx_related import get_influxdb_client, get_influx_data, write_influx_data from models.execution.model_execution import ExecutionModel from mysql_related import get_mysql_db from utils.db.db_execution import ExecutionQueryAsync router = APIRouter() @router.get( path="/get_influx/", name='get data from influxdb, last one hour', #response_model=InfluxDBClientAsync, responses={ status.HTTP_401_UNAUTHORIZED: {}, } ) async def get_influx(client: InfluxDBClientAsync = Depends(get_influxdb_client)): return {'results': await get_influx_data(client)} @router.post( path="/write_influx/", name='write data to influxdb', #response_model=InfluxDBClientAsync, responses={ status.HTTP_401_UNAUTHORIZED: {}, } ) async def write_influx(temp: float, client: InfluxDBClientAsync = Depends(get_influxdb_client)): await write_influx_data(client, temp) return {"status": "OK"} @router.get( path="/get_mysql/", name='get data from mysql', #response_model=InfluxDBClientAsync, responses={ status.HTTP_401_UNAUTHORIZED: {}, } ) async def get_mysql(db: AsyncSession = Depends(get_mysql_db)): execution_query = ExecutionQueryAsync(db) execution_model: list[ExecutionModel] = await execution_query.get_execution() res = [i.asdict() for i in execution_model] return {"results": res} @router.get( path="/get_mysql_by_id/", name='get data from mysql', #response_model=InfluxDBClientAsync, responses={ status.HTTP_401_UNAUTHORIZED: {}, } ) async def get_mysql_by_id(id: int, db: AsyncSession = Depends(get_mysql_db)): print(f"{db=}") execution_query = ExecutionQueryAsync(db) execution_model: list[ExecutionModel] = await execution_query.get_execution_by_id(id) res = [i.asdict() for i in execution_model] return {"results": res}