#!/bin/bash
# 50-database.sh — поднять MariaDB, создать БД+пользователя, импортировать дамп.
# ЗАПУСКАТЬ НА ЭТАПЕ ПЕРЕНОСА ДАННЫХ — когда db-*.sql.gz уже лежит в backups/.
# Пароль БД НЕ печатается: читается в рантайме из восстановленного dbconn.php.
set -euo pipefail
cd "$(dirname "$0")"; source ./env.sh
need_root

DB_DUMP=$(ls -t "$BACKUPS"/db-*.sql.gz 2>/dev/null | head -1 || true)
[ -n "$DB_DUMP" ] || die "нет db-*.sql.gz в $BACKUPS — сначала положи дамп БД"
[ -f "$WEBROOT/bitrix/php_interface/dbconn.php" ] || die "нет $WEBROOT/bitrix/php_interface/dbconn.php — сначала 30-files.sh"

log "Старт MariaDB"
systemctl enable --now mariadb
sleep 2
mariadb --version

log "Чтение реквизитов БД из dbconn.php (пароль не выводится)"
DBCONN="$WEBROOT/bitrix/php_interface/dbconn.php"
DBNAME=$(grep -oP "DBName\s*=\s*[\"']\K[^\"']+" "$DBCONN" | head -1)
DBLOGIN=$(grep -oP "DBLogin\s*=\s*[\"']\K[^\"']+" "$DBCONN" | head -1)
DBPASS=$(grep -oP "DBPassword\s*=\s*[\"']\K[^\"']+" "$DBCONN" | head -1)
: "${DBNAME:?не нашёл DBName}"; : "${DBLOGIN:?не нашёл DBLogin}"; : "${DBPASS:?не нашёл DBPassword}"
echo "  база: $DBNAME, пользователь: $DBLOGIN @ localhost"

log "Создание БД + пользователя (root через unix_socket)"
# charset utf8(=utf8mb3)/utf8_general_ci — как на источнике
mariadb <<SQL
CREATE DATABASE IF NOT EXISTS \`$DBNAME\` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER IF NOT EXISTS '$DBLOGIN'@'localhost' IDENTIFIED BY '$DBPASS';
ALTER USER '$DBLOGIN'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL PRIVILEGES ON \`$DBNAME\`.* TO '$DBLOGIN'@'localhost';
FLUSH PRIVILEGES;
SQL
ok "БД и пользователь готовы"

log "Импорт дампа $DB_DUMP (может занять время — 19G)"
# отключаем строгие проверки на время импорта
zcat "$DB_DUMP" | mariadb "$DBNAME"
ok "дамп импортирован"

log "Проверка"
TBLS=$(mariadb -N -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$DBNAME';")
echo "  таблиц в $DBNAME: $TBLS"
[ "$TBLS" -gt 100 ] && ok "похоже на полную базу Битрикса" || warn "мало таблиц ($TBLS) — проверь импорт"
unset DBPASS
ok "Дальше: 60-ssl.sh (если ещё не делал) и 90-services.sh"
