def list_subscription_rule_states(name=None, account=None, session=None):
"""Returns a list of with the number of rules per state for a subscription.
:param name: Name of the subscription
:param account: Account identifier
:param session: The database session in use.
:returns: List with tuple (account, name, state, count)
"""
subscription = aliased(models.Subscription)
rule = aliased(models.ReplicationRule)
query = session.query(subscription.account, subscription.name, rule.state, func.count()).join(rule, subscription.id == rule.subscription_id)
try:
if name:
query = query.filter(subscription.name == name)
if account:
query = query.filter(subscription.account == account)
except IntegrityError as error:
print(error)
raise
query = query.group_by(subscription.account, subscription.name, rule.state)
for row in query:
yield row
评论列表
文章目录