Add influx db api

This commit is contained in:
DingZQ
2025-01-31 13:54:53 +08:00
parent 8e9859e2c1
commit 45025e9988

27
main.py
View File

@@ -24,6 +24,7 @@ from influxdb_client import InfluxDBClient, BucketsApi, WriteApi, OrganizationsA
from typing import List, Dict
from datetime import datetime, timedelta, timezone
from dateutil import parser
import influxdb_api
JUNCTION = 0
RESERVOIR = 1
@@ -1946,6 +1947,7 @@ async def get_json():
############################################################
# DingZQ, 2024-12-09, Add sample API to return real time data/simulation result
# influx db operation
############################################################
@app.get("/getrealtimedata/")
async def get_realtimedata():
@@ -1957,8 +1959,33 @@ async def get_simulationresult():
data = [random.randint(0, 100) for _ in range(100)]
return data
# DingZQ 2025-01-31
# def query_latest_record_by_ID(ID: str, type: str, bucket: str="realtime_data", client: InfluxDBClient=client) -> dict:
@app.get("/querynodelatestrecordbyid/")
async def query_node_latest_record_by_id(id: str):
return influxdb_api.query_latest_record_by_ID(id, type='node', client=influx_client);
@app.get("/querylinklatestrecordbyid/")
async def query_link_latest_record_by_id(id: str):
return influxdb_api.query_latest_record_by_ID(id, type='link', client=influx_client);
# def query_all_record_by_time(query_time: str, bucket: str="realtime_data", client: InfluxDBClient=client) -> tuple:
@app.get("/queryallrecordbytime/")
async def query_all_record_by_time(querytime: str) -> dict[str, list]:
results: tuple = influxdb_api.query_all_record_by_time(query_time=querytime, client=influx_client);
return { "nodes": results[0],
"links": results[1] }
# def query_curve_by_ID_property_daterange(ID: str, type: str, property: str, start_date: str, end_date: str, bucket: str="realtime_data", client: InfluxDBClient=client) -> list:
@app.get("/querynodecurvebyidpropertydatarage/")
async def query_node_curve_by_id_property_datarage(id: str, prop: str, startdate: str, enddate: str):
return influxdb_api.query_curve_by_ID_property_daterange(id, type='node', property=prop, start_date=startdate, end_date=enddate, client=influx_client);
@app.get("/querylinkcurvebyidpropertydatarage/")
async def query_link_curve_by_id_property_datarage(id: str, prop: str, startdate: str, enddate: str):
return influxdb_api.query_curve_by_ID_property_daterange(id, type='link', property=prop, start_date=startdate, end_date=enddate, client=influx_client);
# DingZQ, 2024-12-31, generate openapi.json
def generate_openapi_json():
openapi_json_path = "openapi.json"