old_contents: """Purge old data helper."""
  from datetime import timedelta
  import logging
  
  import homeassistant.util.dt as dt_util
  
  from .util import session_scope
  
  _LOGGER = logging.getLogger(__name__)
  
  
  def purge_old_data(instance, purge_days):
      """Purge events and states older than purge_days ago."""
      from .models import States, Events
      purge_before = dt_util.utcnow() - timedelta(days=purge_days)
  
      with session_scope(session=instance.get_session()) as session:
          deleted_rows = session.query(States) \
                                .filter((States.last_updated < purge_before)) \
                                .delete(synchronize_session=False)
          _LOGGER.debug("Deleted %s states", deleted_rows)
  
          deleted_rows = session.query(Events) \
                                .filter((Events.time_fired < purge_before)) \
                                .delete(synchronize_session=False)
          _LOGGER.debug("Deleted %s events", deleted_rows)
  
      # Execute sqlite vacuum command to free up space on disk
      if instance.engine.driver == 'sqlite':
          _LOGGER.info("Vacuuming SQLite to free space")
          instance.engine.execute("VACUUM")
  
new_contents: """Purge old data helper."""
  from datetime import timedelta
  import logging
  
  import homeassistant.util.dt as dt_util
  
  from .util import session_scope
  
  _LOGGER = logging.getLogger(__name__)
  
  
  def purge_old_data(instance, purge_days):
      """Purge events and states older than purge_days ago."""
      from .models import States, Events
      purge_before = dt_util.utcnow() - timedelta(days=purge_days)
  
      with session_scope(session=instance.get_session()) as session:
          deleted_rows = session.query(States) \
                                .filter((States.last_updated < purge_before)) \
                                .delete(synchronize_session=False)
          _LOGGER.debug("Deleted %s states", deleted_rows)
  
          deleted_rows = session.query(Events) \
                                .filter((Events.time_fired < purge_before)) \
                                .delete(synchronize_session=False)
          _LOGGER.debug("Deleted %s events", deleted_rows)
  
      # Execute sqlite vacuum command to free up space on disk
      _LOGGER.debug("DB engine driver: %s", instance.engine.driver)
      if instance.engine.driver == 'pysqlite':
          _LOGGER.info("Vacuuming SQLite to free space")
          instance.engine.execute("VACUUM")
  
subject: Fix recorder does not vacuum SQLite DB on purge (#9469)