Esempio n. 1
0
    def query_samples(self, filter_expr=None, orderby=None, limit=None):
        if limit == 0:
            return []

        session = self._engine_facade.get_session()
        engine = self._engine_facade.get_engine()
        query = session.query(
            models.Sample.timestamp, models.Sample.recorded_at,
            models.Sample.message_id, models.Sample.message_signature,
            models.Sample.volume.label('counter_volume'),
            models.Meter.name.label('counter_name'),
            models.Meter.type.label('counter_type'),
            models.Meter.unit.label('counter_unit'), models.Resource.source_id,
            models.Resource.user_id, models.Resource.project_id,
            models.Resource.resource_metadata,
            models.Resource.resource_id).join(
                models.Meter, models.Meter.id == models.Sample.meter_id).join(
                    models.Resource,
                    models.Resource.internal_id == models.Sample.resource_id)
        transformer = sql_utils.QueryTransformer(models.FullSample,
                                                 query,
                                                 dialect=engine.dialect.name)
        if filter_expr is not None:
            transformer.apply_filter(filter_expr)

        transformer.apply_options(orderby, limit)
        return self._retrieve_samples(transformer.get_query())
Esempio n. 2
0
    def query_samples(self, filter_expr=None, orderby=None, limit=None):
        if limit == 0:
            return []

        session = self._engine_facade.get_session()
        query = session.query(models.FullSample)
        transformer = sql_utils.QueryTransformer(models.FullSample, query)
        if filter_expr is not None:
            transformer.apply_filter(filter_expr)

        transformer.apply_options(orderby, limit)
        return self._retrieve_samples(transformer.get_query())
Esempio n. 3
0
    def _retrieve_data(self, filter_expr, orderby, limit, table):
        if limit == 0:
            return []

        session = self._engine_facade.get_session()
        query = session.query(table)
        transformer = sql_utils.QueryTransformer(table, query)
        if filter_expr is not None:
            transformer.apply_filter(filter_expr)

        transformer.apply_options(orderby,
                                  limit)

        retrieve = {models.Alarm: self._retrieve_alarms,
                    models.AlarmChange: self._retrieve_alarm_history}
        return retrieve[table](transformer.get_query())
Esempio n. 4
0
    def get_samples(self, sample_filter, limit=None):
        """Return an iterable of api_models.Samples.

        :param sample_filter: Filter.
        :param limit: Maximum number of results to return.
        """
        if limit == 0:
            return []

        table = models.MeterSample
        session = self._engine_facade.get_session()
        query = session.query(table)
        query = make_query_from_filter(session,
                                       query,
                                       sample_filter,
                                       require_meter=False)
        transformer = sql_utils.QueryTransformer(table, query)
        transformer.apply_options(None, limit)
        return self._retrieve_samples(transformer.get_query())