From d1561903ed1d2b9a60cb243eacfe835b4aecb8d9 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Wed, 25 Oct 2017 10:40:02 +0100 Subject: [PATCH] [WIP] Removing marshmallow from the get_services endpoint should give us better performance. --- app/dao/services_dao.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index e6e677adc..05ef0a3b8 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -371,7 +371,7 @@ def dao_fetch_monthly_historical_stats_for_service(service_id, year): @statsd(namespace='dao') def dao_fetch_todays_stats_for_all_services(include_from_test_key=True): - query = db.session.query( + subquery = db.session.query( Notification.notification_type, Notification.status, Notification.service_id, @@ -382,12 +382,25 @@ def dao_fetch_todays_stats_for_all_services(include_from_test_key=True): Notification.notification_type, Notification.status, Notification.service_id - ).order_by( - Notification.service_id ) if not include_from_test_key: - query = query.filter(Notification.key_type != KEY_TYPE_TEST) + subquery = subquery.filter(Notification.key_type != KEY_TYPE_TEST) + + subquery = subquery.subquery() + + query = db.session.query( + Service.id.label('service_id'), + Service.name, + Service.restricted, + Service.research_mode, + subquery.c.notification_type, + subquery.c.status, + subquery.c.count + ).join( + subquery, + subquery.c.service_id == Service.id + ).order_by(Service.id) return query.all()