Model/backend/app/db/functions/already_installed_functions.py

40 lines
919 B
Python

from backend.app.db.models.recommendations import InstalledMeasure
from typing import Dict, List, Set
from collections import defaultdict
def get_installed_measure_types_by_uprns(
session,
uprns: List[int],
) -> Dict[int, Set[str]]:
"""
Returns installed measure types per UPRN.
{
uprn: {"cavity_wall_insulation", "mechanical_ventilation", ...}
}
"""
if not uprns:
return {}
rows = (
session.query(
InstalledMeasure.uprn,
InstalledMeasure.measure_type,
)
.filter(InstalledMeasure.is_active.is_(True))
.filter(InstalledMeasure.uprn.in_(uprns))
.all()
)
out: Dict[int, Set[str]] = defaultdict(set)
for uprn, measure_type in rows:
out[uprn].add(
measure_type.value
if hasattr(measure_type, "value")
else measure_type
)
return out