1
0

created Vert.X folder

This commit is contained in:
Jose
2025-03-02 22:51:31 +01:00
parent 70f317a3bb
commit 5d60d96567
13 changed files with 11 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
from fastapi import APIRouter, Body, HTTPException, Query
from fastapi import APIRouter, Body, HTTPException, Query
from typing import Optional
from pydantic import BaseModel
from sqlalchemy import select, insert
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from models.sql.Sensor import sensor_mq_data
from db import database
from models.schemas.SensorModel import SensorModel
router = APIRouter()
@router.get("")
async def get_all(
_sort: Optional[str] = Query(None, alias="_sort", description="Campo por el cual ordenar los resultados"),
_order: Optional[str] = Query("asc", description="Orden de los resultados, 'asc' o 'desc'"),
_limit: Optional[int] = Query(100, ge=1, description="Número máximo de resultados a mostrar"),
):
query = select(sensor_mq_data)
if _sort:
if _order == "desc":
query = query.order_by(getattr(sensor_mq_data.c, _sort).desc())
else:
query = query.order_by(getattr(sensor_mq_data.c, _sort))
if _limit:
query = query.limit(_limit)
async with database.transaction():
result = await database.fetch_all(query)
return result
@router.get("/sensor")
async def get_by_params(
id: Optional[int] = Query(None, alias="id", description="ID del sensor a buscar"),
sensor_type: Optional[str] = Query(None, alias="sensor_type", description="Tipo de sensor"),
min_value: Optional[float] = Query(None, alias="min_value", description="Valor mínimo del sensor"),
max_value: Optional[float] = Query(None, alias="max_value", description="Valor máximo del sensor"),
min_temp: Optional[float] = Query(None, alias="min_temp", description="Temperatura mínima"),
max_temp: Optional[float] = Query(None, alias="max_temp", description="Temperatura máxima"),
min_humidity: Optional[float] = Query(None, alias="min_humidity", description="Humedad mínima"),
max_humidity: Optional[float] = Query(None, alias="max_humidity", description="Humedad máxima"),
):
query = select(sensor_mq_data)
if id is not None:
query = query.where(sensor_mq_data.c.id == id)
if sensor_type is not None:
query = query.where(sensor_mq_data.c.sensor_type == sensor_type)
if min_value is not None:
query = query.where(sensor_mq_data.c.value >= min_value)
if max_value is not None:
query = query.where(sensor_mq_data.c.value <= max_value)
if min_temp is not None:
query = query.where(sensor_mq_data.c.temperature >= min_temp)
if max_temp is not None:
query = query.where(sensor_mq_data.c.temperature <= max_temp)
if min_humidity is not None:
query = query.where(sensor_mq_data.c.humidity >= min_humidity)
if max_humidity is not None:
query = query.where(sensor_mq_data.c.humidity <= max_humidity)
async with database.transaction():
result = await database.fetch_all(query)
return result