mirror of
https://github.com/furyhawk/listen.git
synced 2026-07-21 00:45:36 +00:00
feat: Update humidity, pressure, and temperature endpoints to support search with date range and limit
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
from fastapi import APIRouter, Depends, status
|
||||
from datetime import datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, Query, status
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
@@ -27,15 +29,24 @@ async def create_new_humidity(
|
||||
|
||||
|
||||
@router.get(
|
||||
"/all",
|
||||
"/search",
|
||||
response_model=list[HumidityResponse],
|
||||
status_code=status.HTTP_200_OK,
|
||||
description="Get humidity of the city.",
|
||||
description="Search humidity readings with optional date range and limit.",
|
||||
)
|
||||
async def get_humidity(
|
||||
async def search_humidity(
|
||||
session: AsyncSession = Depends(deps.get_session),
|
||||
limit: int = Query(100, ge=1, le=1000),
|
||||
start_date: datetime | None = Query(None, description="Filter readings from this date (ISO 8601)"),
|
||||
end_date: datetime | None = Query(None, description="Filter readings until this date (ISO 8601)"),
|
||||
) -> list[Humidity]:
|
||||
humidity_list = await session.scalars(
|
||||
select(Humidity).order_by(Humidity.create_time.desc())
|
||||
)
|
||||
query = select(Humidity)
|
||||
|
||||
if start_date:
|
||||
query = query.where(Humidity.create_time >= start_date)
|
||||
if end_date:
|
||||
query = query.where(Humidity.create_time <= end_date)
|
||||
|
||||
query = query.order_by(Humidity.create_time.desc()).limit(limit)
|
||||
humidity_list = await session.scalars(query)
|
||||
return list(humidity_list.all())
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
from fastapi import APIRouter, Depends, status
|
||||
from datetime import datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, Query, status
|
||||
from sqlalchemy import ScalarResult, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
@@ -27,15 +29,24 @@ async def create_new_pressure(
|
||||
|
||||
|
||||
@router.get(
|
||||
"/all",
|
||||
"/search",
|
||||
response_model=list[PressureResponse],
|
||||
status_code=status.HTTP_200_OK,
|
||||
description="Get pressure of the city.",
|
||||
description="Search pressure readings with optional date range and limit.",
|
||||
)
|
||||
async def get_pressure(
|
||||
async def search_pressure(
|
||||
session: AsyncSession = Depends(deps.get_session),
|
||||
limit: int = Query(100, ge=1, le=1000),
|
||||
start_date: datetime | None = Query(None, description="Filter readings from this date (ISO 8601)"),
|
||||
end_date: datetime | None = Query(None, description="Filter readings until this date (ISO 8601)"),
|
||||
) -> list[Pressure]:
|
||||
pressure_list: ScalarResult[Pressure] = await session.scalars(
|
||||
select(Pressure).order_by(Pressure.create_time.desc())
|
||||
)
|
||||
query = select(Pressure)
|
||||
|
||||
if start_date:
|
||||
query = query.where(Pressure.create_time >= start_date)
|
||||
if end_date:
|
||||
query = query.where(Pressure.create_time <= end_date)
|
||||
|
||||
query = query.order_by(Pressure.create_time.desc()).limit(limit)
|
||||
pressure_list: ScalarResult[Pressure] = await session.scalars(query)
|
||||
return list(pressure_list.all())
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
from fastapi import APIRouter, Depends, status
|
||||
from datetime import datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, Query, status
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
@@ -27,15 +29,24 @@ async def create_new_temperature(
|
||||
|
||||
|
||||
@router.get(
|
||||
"/all",
|
||||
"/search",
|
||||
response_model=list[TemperatureResponse],
|
||||
status_code=status.HTTP_200_OK,
|
||||
description="Get temperature of the city.",
|
||||
description="Search temperature readings with optional date range and limit.",
|
||||
)
|
||||
async def get_temperature(
|
||||
async def search_temperature(
|
||||
session: AsyncSession = Depends(deps.get_session),
|
||||
limit: int = Query(100, ge=1, le=1000),
|
||||
start_date: datetime | None = Query(None, description="Filter readings from this date (ISO 8601)"),
|
||||
end_date: datetime | None = Query(None, description="Filter readings until this date (ISO 8601)"),
|
||||
) -> list[Temperature]:
|
||||
temperature_list = await session.scalars(
|
||||
select(Temperature).order_by(Temperature.create_time.desc())
|
||||
)
|
||||
query = select(Temperature)
|
||||
|
||||
if start_date:
|
||||
query = query.where(Temperature.create_time >= start_date)
|
||||
if end_date:
|
||||
query = query.where(Temperature.create_time <= end_date)
|
||||
|
||||
query = query.order_by(Temperature.create_time.desc()).limit(limit)
|
||||
temperature_list = await session.scalars(query)
|
||||
return list(temperature_list.all())
|
||||
|
||||
Reference in New Issue
Block a user