"""Published network geometry used to build indexed hydraulic playback packets.""" from typing import Any from psycopg import AsyncConnection class HydraulicGeometryRepository: @staticmethod async def get_rows(conn: AsyncConnection) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]: async with conn.cursor() as cursor: await cursor.execute(""" SELECT n.id, ST_X(ST_Transform(g.geom,4326)) AS longitude, ST_Y(ST_Transform(g.geom,4326)) AS latitude FROM gis.network_nodes n JOIN gis.node_geometries g ON g.node_id=n.id WHERE g.geom IS NOT NULL AND NOT ST_IsEmpty(g.geom) ORDER BY n.id """) nodes = await cursor.fetchall() await cursor.execute(""" SELECT id, start_node_id, diameter, ST_AsGeoJSON(ST_Transform(ST_LineMerge(geom),4326))::json AS geometry FROM gis.pipes WHERE geom IS NOT NULL AND NOT ST_IsEmpty(geom) ORDER BY id """) pipes = await cursor.fetchall() return nodes, pipes