Files
TJWaterServerBinary/app/api/v1/router.py
T

237 lines
5.4 KiB
Python

from fastapi import APIRouter, Depends
from app.api.v1.endpoints import (
access,
admin_metadata,
agent_auth,
audit,
burst_detection,
burst_location,
cache,
extension,
geocoding,
leakage,
meta,
misc,
model_import,
project,
project_data,
risk,
scada,
schemes,
sensor_placement,
simulation,
snapshots,
users,
web_search,
)
from app.api.v1.endpoints.components import (
controls,
curves,
options,
patterns,
quality,
visuals,
)
from app.api.v1.endpoints.network import (
demands,
general,
geometry,
junctions,
pipes,
pumps,
regions,
reservoirs,
tags,
tanks,
valves,
)
from app.api.v1.endpoints.timeseries import (
composite as ts_composite,
realtime as ts_realtime,
scada as ts_scada,
scheme as ts_scheme,
)
from app.auth.permissions import (
BURST_RUN,
OPTIMIZATION_RUN,
RISK_RUN,
SCADA_CLEAN,
SCADA_VIEW,
SIMULATION_RUN,
SIMULATION_VIEW,
WEBGIS_EDIT,
WEBGIS_VIEW,
require_method_permission,
require_permission,
)
api_router = APIRouter()
webgis_access = Depends(
require_method_permission(
read_permission=WEBGIS_VIEW,
write_permission=WEBGIS_EDIT,
)
)
scada_access = Depends(
require_method_permission(
read_permission=SCADA_VIEW,
write_permission=SCADA_CLEAN,
)
)
simulation_access = Depends(
require_method_permission(
read_permission=SIMULATION_VIEW,
write_permission=SIMULATION_RUN,
)
)
webgis_view_access = Depends(require_permission(WEBGIS_VIEW))
simulation_run_access = Depends(require_permission(SIMULATION_RUN))
burst_run_access = Depends(require_permission(BURST_RUN))
risk_run_access = Depends(require_permission(RISK_RUN))
optimization_run_access = Depends(require_permission(OPTIMIZATION_RUN))
# Core services
api_router.include_router(access.router, tags=["Access Control"])
api_router.include_router(agent_auth.router, tags=["Agent Auth"])
api_router.include_router(
admin_metadata.router,
tags=["Metadata Admin"],
)
api_router.include_router(model_import.router, tags=["Model Administration"])
api_router.include_router(audit.router, tags=["Audit Logs"])
api_router.include_router(meta.router, tags=["Metadata"])
api_router.include_router(
project.router,
tags=["Project"],
dependencies=[webgis_access],
)
# WebGIS data
for endpoint_router, tag in (
(general.router, "Network General"),
(junctions.router, "Junctions"),
(reservoirs.router, "Reservoirs"),
(tanks.router, "Tanks"),
(pipes.router, "Pipes"),
(pumps.router, "Pumps"),
(valves.router, "Valves"),
(tags.router, "Tags"),
(demands.router, "Demands"),
(geometry.router, "Geometry & Coordinates"),
(regions.router, "Regions & DMAs"),
(curves.router, "Curves"),
(patterns.router, "Patterns"),
(controls.router, "Controls & Rules"),
(options.router, "Options"),
(quality.router, "Quality"),
(visuals.router, "Visuals"),
):
api_router.include_router(
endpoint_router,
tags=[tag],
dependencies=[webgis_access],
)
# Simulation and analysis
api_router.include_router(
simulation.router,
tags=["Simulation Control"],
dependencies=[simulation_run_access],
)
api_router.include_router(scada.router, dependencies=[scada_access])
api_router.include_router(
sensor_placement.router,
tags=["Sensor Placement"],
dependencies=[optimization_run_access],
)
api_router.include_router(
snapshots.router,
tags=["Snapshots"],
dependencies=[simulation_access],
)
api_router.include_router(
users.router,
tags=["Users"],
dependencies=[webgis_view_access],
)
api_router.include_router(
schemes.router,
tags=["Schemes"],
dependencies=[simulation_access],
)
api_router.include_router(
misc.router,
tags=["Misc"],
dependencies=[webgis_view_access],
)
api_router.include_router(
risk.router,
tags=["Risk"],
dependencies=[risk_run_access],
)
api_router.include_router(
cache.router,
tags=["Cache"],
dependencies=[simulation_run_access],
)
api_router.include_router(
web_search.router,
tags=["Web Search"],
dependencies=[webgis_view_access],
)
api_router.include_router(
geocoding.router,
tags=["Geocoding"],
dependencies=[webgis_view_access],
)
api_router.include_router(
leakage.router,
tags=["Leakage"],
dependencies=[burst_run_access],
)
api_router.include_router(
burst_detection.router,
tags=["Burst Detection"],
dependencies=[burst_run_access],
)
api_router.include_router(
burst_location.router,
tags=["Burst Location"],
dependencies=[burst_run_access],
)
# TimescaleDB data
for endpoint_router, tag in (
(ts_realtime.router, "TimescaleDB - Realtime"),
(ts_scheme.router, "TimescaleDB - Scheme"),
):
api_router.include_router(
endpoint_router,
tags=[tag],
dependencies=[simulation_access],
)
for endpoint_router, tag in (
(ts_scada.router, "TimescaleDB - SCADA"),
(ts_composite.router, "TimescaleDB - Composite"),
):
api_router.include_router(
endpoint_router,
tags=[tag],
dependencies=[scada_access],
)
api_router.include_router(
project_data.router,
tags=["Project Data"],
dependencies=[webgis_view_access],
)
api_router.include_router(
extension.router,
tags=["Extension"],
dependencies=[webgis_access],
)