mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
40 lines
919 B
Python
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
|