in backend/bms_app/wave/services/waves.py [0:0]
def wave_rate_info(wave_id):
"""Calculate of undeployed, deployed and failed db for each wave."""
undeployed_db = 0
deployed_db = 0
failed_db = 0
rate_info = db.session.query(SourceDB.status, func.count()) \
.filter(SourceDB.wave_id == wave_id) \
.group_by(SourceDB.status) \
.all()
if rate_info:
undeployed_db = sum((x[1] for x in rate_info if x[0] in SourceDB.DEPLOYABLE_STATUSES), 0)
deployed_db = sum((x[1] for x in rate_info if x[0] in DEPLOYED_STATUSES), 0)
failed_db = next((x[1] for x in rate_info if x[0] == SourceDBStatus.FAILED), 0)
return {
'undeployed': undeployed_db,
'deployed': deployed_db,
'failed': failed_db
}