From c357bdda9e8d64292c8b4ca3599909671b5316c1 Mon Sep 17 00:00:00 2001
From: Grollicus <cccvgitlab.db5c7b60@grollmann.eu>
Date: Wed, 27 Dec 2023 22:32:02 +0100
Subject: [PATCH] query all room counts at once

---
 src/api/views/metrics.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/api/views/metrics.py b/src/api/views/metrics.py
index ada667a46..f8c3ef2b1 100644
--- a/src/api/views/metrics.py
+++ b/src/api/views/metrics.py
@@ -70,8 +70,13 @@ class MetricsView(TemplateView):
             self.report_assembly_metrics(metrics, conference, 'channel', 'channels')
 
             # hub_conference_rooms
-            for room_type in Room.RoomType.values:
-                room_count = Room.objects.filter(conference=conference, room_type=Room.RoomType(room_type)).count()
+            room_counts = {room_type: 0 for room_type in Room.RoomType.values}
+            for room_type, cnt in (
+                Room.objects.filter(conference=conference).values('room_type').annotate(cnt=Count('room_type')).values_list('room_type', 'cnt')
+            ):
+                room_counts[room_type] = cnt
+
+            for room_type, room_count in room_counts.items():
                 metrics['hub_conference_rooms']['values'][f'{{conference="{slug}",room_type="{room_type}"}}'] = room_count
 
             # hub_conference_projects
-- 
GitLab