完成timescaledb获取在线模拟数据的方法
This commit is contained in:
@@ -149,13 +149,13 @@ class SchemeRepository:
|
||||
raise ValueError(f"Invalid field: {field}")
|
||||
|
||||
query = sql.SQL(
|
||||
"SELECT {} FROM scheme.link_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
|
||||
"SELECT id, {} FROM scheme.link_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
|
||||
).format(sql.Identifier(field))
|
||||
|
||||
async with conn.cursor() as cur:
|
||||
await cur.execute(query, (scheme_type, scheme_name, start_time, end_time))
|
||||
row = await cur.fetchone()
|
||||
return row[field] if row else None
|
||||
rows = await cur.fetchall()
|
||||
return [{"id": row["id"], "value": row[field]} for row in rows]
|
||||
|
||||
@staticmethod
|
||||
async def update_link_field(
|
||||
@@ -313,13 +313,13 @@ class SchemeRepository:
|
||||
raise ValueError(f"Invalid field: {field}")
|
||||
|
||||
query = sql.SQL(
|
||||
"SELECT {} FROM scheme.node_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
|
||||
"SELECT id, {} FROM scheme.node_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
|
||||
).format(sql.Identifier(field))
|
||||
|
||||
async with conn.cursor() as cur:
|
||||
await cur.execute(query, (scheme_type, scheme_name, start_time, end_time))
|
||||
row = await cur.fetchone()
|
||||
return row[field] if row else None
|
||||
rows = await cur.fetchall()
|
||||
return [{"id": row["id"], "value": row[field]} for row in rows]
|
||||
|
||||
@staticmethod
|
||||
async def update_node_field(
|
||||
@@ -599,16 +599,20 @@ class SchemeRepository:
|
||||
|
||||
# Query based on type
|
||||
if type.lower() == "node":
|
||||
return await SchemeRepository.get_nodes_field_by_scheme_and_time_range(
|
||||
data = await SchemeRepository.get_nodes_field_by_scheme_and_time_range(
|
||||
conn, scheme_type, scheme_name, start_time, end_time, property
|
||||
)
|
||||
elif type.lower() == "link":
|
||||
return await SchemeRepository.get_links_field_by_scheme_and_time_range(
|
||||
data = await SchemeRepository.get_links_field_by_scheme_and_time_range(
|
||||
conn, scheme_type, scheme_name, start_time, end_time, property
|
||||
)
|
||||
else:
|
||||
raise ValueError(f"Invalid type: {type}. Must be 'node' or 'link'")
|
||||
|
||||
# Format the results
|
||||
results = [{"ID": item["id"], "value": item["value"]} for item in data]
|
||||
return {"results": results}
|
||||
|
||||
@staticmethod
|
||||
async def query_scheme_simulation_result_by_ID_time(
|
||||
conn: AsyncConnection,
|
||||
|
||||
Reference in New Issue
Block a user