#!/usr/bin/env bash
# onx-mariadb-promote — Slave'i master'a yükselt (failover)
# Input:  {}
# Output: {"promoted":true,"master_status":{"log_file":"...","log_pos":N}}

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/_lib/common.sh"

require_root
require_cmd mysql
onx_json_input

onx_log "mariadb-promote: failover basliyor"

# Slave'i durdur
mysql -e "STOP SLAVE;" 2>/dev/null || true

# Slave meta bilgisini temizle
mysql -e "RESET SLAVE ALL;" \
    || onx_die 3 "RESET SLAVE ALL basarisiz"

# read_only kaldır
mysql -e "SET GLOBAL read_only = 0;" \
    || onx_die 3 "read_only kaldirilamadi"

# CNF'ten read_only kaldır
CNF_FILE="/etc/my.cnf.d/onox.cnf"
if [[ -f "$CNF_FILE" ]]; then
    sed -i '/^read_only/d' "$CNF_FILE"
fi

# RESET MASTER — binlog sıfırla, yeni master olarak başla
mysql -e "RESET MASTER;" \
    || onx_die 3 "RESET MASTER basarisiz"

# Yeni master durumunu al
MASTER_STATUS=$(mysql -e "SHOW MASTER STATUS\G" 2>/dev/null)
LOG_FILE=$(echo "$MASTER_STATUS" | grep 'File:' | awk '{print $2}')
LOG_POS=$(echo "$MASTER_STATUS"  | grep 'Position:' | awk '{print $2}')

LOG_FILE_JSON=$(printf '%s' "${LOG_FILE:-}" | jq -Rs '.')

onx_log "mariadb-promote: tamamlandi log_file=${LOG_FILE} log_pos=${LOG_POS}"

json_ok "{\"promoted\":true,\"master_status\":{\"log_file\":${LOG_FILE_JSON},\"log_pos\":${LOG_POS:-0}}}"
