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

PACKAGE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
MYSQL56_SOURCE="$PACKAGE_DIR/files/etc/my.cnf.mysql56.template"
DB_SERVER_IP="${SFD_DB_SERVER_IP:-}"

if [ "$(id -u)" -ne 0 ]; then
    echo "Run as root on the Sifangda database server." >&2
    exit 1
fi

if [ -z "$DB_SERVER_IP" ]; then
    echo "Set SFD_DB_SERVER_IP before running this script." >&2
    exit 1
fi

if ! [[ "$DB_SERVER_IP" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
    echo "SFD_DB_SERVER_IP is not an IPv4 address: $DB_SERVER_IP" >&2
    exit 1
fi

if ! command -v mysql >/dev/null 2>&1; then
    echo "MySQL client not found. Install MySQL 5.6 first." >&2
    exit 1
fi

if ! mysql --version | grep -Eq 'Distrib 5\.6\.|Ver 14\.14 Distrib 5\.6\.'; then
    echo "MySQL 5.6 is required; found: $(mysql --version)" >&2
    exit 1
fi

mkdir -p /workspace/mysql/data /workspace/mysql/log
chown -R mysql:mysql /workspace/mysql

rendered_config="$(mktemp)"
cleanup() {
    rm -f "$rendered_config"
}
trap cleanup EXIT

sed "s/__SFD_DB_SERVER_IP__/$DB_SERVER_IP/g" "$MYSQL56_SOURCE" > "$rendered_config"
if grep -Eq '__SFD_[A-Z0-9_]+__' "$rendered_config"; then
    echo "Unresolved Sifangda placeholder found in rendered MySQL configuration." >&2
    exit 1
fi

install -m 0644 "$rendered_config" /etc/my.cnf

echo "Sifangda MySQL 5.6 configuration installed."
echo "Restart mysql, then verify version, bind address, character set, sql_mode and application connectivity."
