#!/usr/bin/env bash
set -euo pipefail

# Этот скрипт проверяет наличие каталогов data/data/db и data/logs и создает их + устанавливает правильные разрешения, если они не существуют.
# Если db.sqlite3 и lndg-controller.log существуют в основном каталоге приложения, мы перемещаем их в соответствующие новые места и не меняем разрешения (lndg запускается от имени пользователя root)
# Это будет справедливо для установок, которые обновляются с версии до 1.9.0.

# Каталог приложений находится на один уровень выше, чем в этом скрипте.
APP_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)"
APP_DATA_DIR="${APP_DIR}/data"
APP_DATA_DB_DIR="${APP_DATA_DIR}/db"
APP_DATA_LOGS_DIR="${APP_DATA_DIR}/logs"
DESIRED_OWNER="1000:1000"

set_correct_permissions() {
    local -r path="${1}"

    if [[ -d "${path}" ]]; then
        owner=$(stat -c "%u:%g" "${path}")

        if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then
            chown -R "${DESIRED_OWNER}" "${path}"
        fi
    fi
}

create_directory_if_not_exists() {
    local -r dir="${1}"
    if [[ ! -d "${dir}" ]]; then
        mkdir -p "${dir}"
        set_correct_permissions "${dir}"
    fi
}

move_file_if_exists() {
    local -r src="${1}"
    local -r dest="${2}"
    if [[ -f "${src}" ]]; then
        mv "${src}" "${dest}"
    fi
}

# Создайте каталоги, если они не существуют.
create_directory_if_not_exists "${APP_DATA_DIR}"
create_directory_if_not_exists "${APP_DATA_DB_DIR}"
create_directory_if_not_exists "${APP_DATA_LOGS_DIR}"

# Переместить файлы, если они существуют
move_file_if_exists "${APP_DIR}/db.sqlite3" "${APP_DATA_DB_DIR}/db.sqlite3"
move_file_if_exists "${APP_DIR}/lndg-controller.log" "${APP_DATA_LOGS_DIR}/lndg-controller.log"