Fragment count endpoint added and all tests working.

This commit is contained in:
Nicholas Staples
2016-04-28 12:01:27 +01:00
parent 23bcb08fb2
commit bedc20d0ff
7 changed files with 291 additions and 16 deletions

View File

@@ -1,5 +1,40 @@
from app.models import ProviderStatistics
from sqlalchemy import func
from app.models import (ProviderStatistics, SMS_PROVIDERS, EMAIL_PROVIDERS)
def get_provider_statistics(service, provider):
return ProviderStatistics.query.filter_by(service=service, provider=provider).one()
def get_provider_statistics(service, **kwargs):
return filter_query(ProviderStatistics.query, service, **kwargs)
def get_fragment_count(service, date_from, date_to):
sms_query = filter_query(
ProviderStatistics.query,
service,
providers=SMS_PROVIDERS,
date_from=date_from,
date_to=date_to
)
email_query = filter_query(
ProviderStatistics.query,
service,
providers=EMAIL_PROVIDERS,
date_from=date_from,
date_to=date_to
)
return {
'sms_count': int(sms_query.with_entities(
func.sum(ProviderStatistics.unit_count)).scalar()) if sms_query.count() > 0 else 0,
'email_count': int(email_query.with_entities(
func.sum(ProviderStatistics.unit_count)).scalar()) if email_query.count() > 0 else 0
}
def filter_query(query, service, **kwargs):
query = query.filter_by(service=service)
if 'providers' in kwargs:
query = query.filter(ProviderStatistics.provider.in_(kwargs['providers']))
if 'date_from' in kwargs:
query.filter(ProviderStatistics.day >= kwargs['date_from'])
if 'date_to' in kwargs:
query.filter(ProviderStatistics.day <= kwargs['date_to'])
return query