105 lines
3.6 KiB
Python
105 lines
3.6 KiB
Python
from typing import List, Optional, Any
|
|
from psycopg import AsyncConnection
|
|
|
|
|
|
class SchemeRepository:
|
|
|
|
@staticmethod
|
|
async def get_schemes(conn: AsyncConnection) -> List[dict]:
|
|
"""
|
|
查询pg数据库中, scheme_list 的所有记录
|
|
:param conn: 异步数据库连接
|
|
:return: 包含所有记录的列表, 每条记录为一个字典
|
|
"""
|
|
async with conn.cursor() as cur:
|
|
await cur.execute(
|
|
"""
|
|
SELECT scheme_id, scheme_name, scheme_type, username, create_time, scheme_start_time, scheme_detail
|
|
FROM public.scheme_list
|
|
"""
|
|
)
|
|
records = await cur.fetchall()
|
|
|
|
scheme_list = []
|
|
for record in records:
|
|
scheme_list.append(
|
|
{
|
|
"scheme_id": record["scheme_id"],
|
|
"scheme_name": record["scheme_name"],
|
|
"scheme_type": record["scheme_type"],
|
|
"username": record["username"],
|
|
"create_time": record["create_time"],
|
|
"scheme_start_time": record["scheme_start_time"],
|
|
"scheme_detail": record["scheme_detail"],
|
|
}
|
|
)
|
|
|
|
return scheme_list
|
|
|
|
@staticmethod
|
|
async def get_burst_locate_results(conn: AsyncConnection) -> List[dict]:
|
|
"""
|
|
查询pg数据库中, burst_locate_result 的所有记录
|
|
:param conn: 异步数据库连接
|
|
:return: 包含所有记录的列表, 每条记录为一个字典
|
|
"""
|
|
async with conn.cursor() as cur:
|
|
await cur.execute(
|
|
"""
|
|
SELECT id, type, burst_incident, leakage, detect_time, locate_result
|
|
FROM public.burst_locate_result
|
|
"""
|
|
)
|
|
records = await cur.fetchall()
|
|
|
|
results = []
|
|
for record in records:
|
|
results.append(
|
|
{
|
|
"id": record["id"],
|
|
"type": record["type"],
|
|
"burst_incident": record["burst_incident"],
|
|
"leakage": record["leakage"],
|
|
"detect_time": record["detect_time"],
|
|
"locate_result": record["locate_result"],
|
|
}
|
|
)
|
|
|
|
return results
|
|
|
|
@staticmethod
|
|
async def get_burst_locate_result_by_incident(
|
|
conn: AsyncConnection, burst_incident: str
|
|
) -> List[dict]:
|
|
"""
|
|
根据 burst_incident 查询爆管定位结果
|
|
:param conn: 异步数据库连接
|
|
:param burst_incident: 爆管事件标识
|
|
:return: 包含匹配记录的列表
|
|
"""
|
|
async with conn.cursor() as cur:
|
|
await cur.execute(
|
|
"""
|
|
SELECT id, type, burst_incident, leakage, detect_time, locate_result
|
|
FROM public.burst_locate_result
|
|
WHERE burst_incident = %s
|
|
""",
|
|
(burst_incident,),
|
|
)
|
|
records = await cur.fetchall()
|
|
|
|
results = []
|
|
for record in records:
|
|
results.append(
|
|
{
|
|
"id": record["id"],
|
|
"type": record["type"],
|
|
"burst_incident": record["burst_incident"],
|
|
"leakage": record["leakage"],
|
|
"detect_time": record["detect_time"],
|
|
"locate_result": record["locate_result"],
|
|
}
|
|
)
|
|
|
|
return results
|