"""Backup platform for the Recorder integration."""
from logging import getLogger

from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError

from .util import async_migration_in_progress, get_instance

_LOGGER = getLogger(__name__)


async def async_pre_backup(hass: HomeAssistant) -> None:
    """Perform operations before a backup starts."""
    _LOGGER.info("Backup start notification, locking database for writes")
    instance = get_instance(hass)
    if async_migration_in_progress(hass):
        raise HomeAssistantError("Database migration in progress")
    await instance.lock_database()


async def async_post_backup(hass: HomeAssistant) -> None:
    """Perform operations after a backup finishes."""
    instance = get_instance(hass)
    _LOGGER.info("Backup end notification, releasing write lock")
    if not instance.unlock_database():
        raise HomeAssistantError("Could not release database write lock")