def aggregate(aggregate_details, db, start, end, sensor_type, execute): ids_to_delete = [] a_metrics = database.get_metric_aggregated(db, start=start, end=end, sensor_type=sensor_type) for a_metric in a_metrics: metric = { 'id': a_metric[0], 'board_id': a_metric[1], 'sensor_type': a_metric[2], 'total_sum': a_metric[3], 'count': a_metric[4] } for aggregate_detail in aggregate_details: if metric['sensor_type'] in aggregate_detail['sensor_type']: m_to_delete = database.get_metric(db, board_ids=metric['board_id'], sensor_type=metric['sensor_type'], start=start, end=end) ids_to_delete += [m.id for m in m_to_delete if m.id != metric['id']] new_value = compute_value(aggregate_detail, metric['total_sum'], metric['count']) LOG.info("Update record with id '%d' for sensor_type '%s' for board_id '%s' with value '%s'", metric['id'], metric['sensor_type'], metric['board_id'], new_value) if execute and new_value: database.update_metric(db, metric['id'], new_value) LOG.info("Delete %d metrics", len(ids_to_delete)) if execute: database.delete_row(db, database.Metric, ids_to_delete)
def clean_feed(args): LOG.info('Cleaning feeds table') db_string = get_global_config(args.dir).get('db_string') db = database.connect(db_string) feeds = database.get_feed(db, start=args.start, end=args.end) LOG.info('Got %d feeds between %s and %s', len(feeds), args.start, args.end) ids_to_delete = [feed.id for feed in feeds] if args.execute: database.delete_row(db, database.Feed, ids_to_delete)
def clean_action(args): LOG.info('Cleaning action table') db_string = get_global_config(args.dir).get('db_string') db = database.connect(db_string) actions = database.get_action(db, start=args.start, end=args.end) LOG.info('Got %d actions between %s and %s', len(actions), args.start, args.end) ids_to_delete = [action.id for action in actions] if args.execute: database.delete_row(db, database.Action, ids_to_delete)