def wave_rate_info()

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
    }