def get_heartbeat_msgs(most_recent=None):
# These two expressions are SQL CASE conditional expressions, later
# used within count(distinct ...) aggregates for the query.
internal_expr = case([(Record.external == False, Record.machine_id), ]).label('internal_count')
external_expr = case([(Record.external == True, Record.machine_id), ]).label('external_count')
q = db.session.query(Build.build, db.func.count(db.distinct(internal_expr)), db.func.count(db.distinct(external_expr)))
q = q.join(Record).join(Classification)
q = q.filter(Classification.classification == "org.clearlinux/heartbeat/ping")
q = q.filter(Record.os_name == 'clear-linux-os')
q = q.group_by(Build.build)
if most_recent:
interval_sec = 24 * 60 * 60 * int(most_recent)
current_time = time()
sec_in_past = current_time - interval_sec
q = q.filter(Record.tsp > sec_in_past)
q = q.order_by(cast(Build.build, db.Integer))
return q.all()
评论列表
文章目录