From 45025e9988a15695cd54888a40acd031276ef933 Mon Sep 17 00:00:00 2001 From: DingZQ Date: Fri, 31 Jan 2025 13:54:53 +0800 Subject: [PATCH] Add influx db api --- main.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/main.py b/main.py index 576db11..fa701ed 100644 --- a/main.py +++ b/main.py @@ -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"