diff --git a/homeassistant/components/recorder.py b/homeassistant/components/recorder.py index 189daae4389..a937a5a836b 100644 --- a/homeassistant/components/recorder.py +++ b/homeassistant/components/recorder.py @@ -42,18 +42,18 @@ def query(sql_query, arguments=None): def query_states(state_query, arguments=None): """ Query the database and return a list of states. """ - return ( + return [ row for row in (row_to_state(row) for row in query(state_query, arguments)) - if row is not None) + if row is not None] def query_events(event_query, arguments=None): """ Query the database and return a list of states. """ - return ( + return [ row for row in (row_to_event(row) for row in query(event_query, arguments)) - if row is not None) + if row is not None] def row_to_state(row): @@ -77,26 +77,17 @@ def row_to_event(row): return None -def limit_to_run(point_in_time=None): - """ - Returns a WHERE partial that will limit query to a run. - A run starts when Home Assistant starts and ends when it stops. - """ +def run_information(point_in_time=None): _verify_instance() - # Targetting current run if point_in_time is None: - return "created >= {} ".format( - _adapt_datetime(_INSTANCE.recording_start)) + return RecorderRun() - raise NotImplementedError() + run = _INSTANCE.query( + "SELECT * FROM recorder_runs WHERE start>? AND END IS NULL OR END= {} ".format(_adapt_datetime(self.start)) + + @property + def where_limit_to_run(self): + """ Return a SQL WHERE clause to limit results to this run. """ + where = self.where_after_start_run + + if self.end is not None: + where += "AND created < {} ".format(_adapt_datetime(self.end)) + + return where + + class Recorder(threading.Thread): """ Threaded recorder