mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-20 22:39:43 -04:00
Merge pull request #1784 from alphagov/optimize-todays-services-query
Optimise query for platform-admin/live-services and trial-services
This commit is contained in:
@@ -333,6 +333,9 @@ def dao_fetch_monthly_historical_stats_for_service(service_id, year):
|
|||||||
|
|
||||||
@statsd(namespace='dao')
|
@statsd(namespace='dao')
|
||||||
def dao_fetch_todays_stats_for_all_services(include_from_test_key=True, only_active=True):
|
def dao_fetch_todays_stats_for_all_services(include_from_test_key=True, only_active=True):
|
||||||
|
today = date.today()
|
||||||
|
start_date = get_london_midnight_in_utc(today)
|
||||||
|
end_date = get_london_midnight_in_utc(today + timedelta(days=1))
|
||||||
|
|
||||||
subquery = db.session.query(
|
subquery = db.session.query(
|
||||||
Notification.notification_type,
|
Notification.notification_type,
|
||||||
@@ -340,7 +343,8 @@ def dao_fetch_todays_stats_for_all_services(include_from_test_key=True, only_act
|
|||||||
Notification.service_id,
|
Notification.service_id,
|
||||||
func.count(Notification.id).label('count')
|
func.count(Notification.id).label('count')
|
||||||
).filter(
|
).filter(
|
||||||
func.date(Notification.created_at) == date.today(),
|
Notification.created_at >= start_date,
|
||||||
|
Notification.created_at < end_date
|
||||||
).group_by(
|
).group_by(
|
||||||
Notification.notification_type,
|
Notification.notification_type,
|
||||||
Notification.status,
|
Notification.status,
|
||||||
|
|||||||
@@ -1635,6 +1635,7 @@ def test_get_detailed_services_only_includes_todays_notifications(notify_db, not
|
|||||||
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 9, 23, 59))
|
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 9, 23, 59))
|
||||||
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 0, 0))
|
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 0, 0))
|
||||||
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 12, 0))
|
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 12, 0))
|
||||||
|
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 23, 0))
|
||||||
|
|
||||||
with freeze_time('2015-10-10T12:00:00'):
|
with freeze_time('2015-10-10T12:00:00'):
|
||||||
data = get_detailed_services(start_date=datetime.utcnow().date(), end_date=datetime.utcnow().date())
|
data = get_detailed_services(start_date=datetime.utcnow().date(), end_date=datetime.utcnow().date())
|
||||||
@@ -1643,7 +1644,7 @@ def test_get_detailed_services_only_includes_todays_notifications(notify_db, not
|
|||||||
assert len(data) == 1
|
assert len(data) == 1
|
||||||
assert data[0]['statistics'] == {
|
assert data[0]['statistics'] == {
|
||||||
EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0},
|
EMAIL_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0},
|
||||||
SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 2},
|
SMS_TYPE: {'delivered': 0, 'failed': 0, 'requested': 3},
|
||||||
LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}
|
LETTER_TYPE: {'delivered': 0, 'failed': 0, 'requested': 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user