#!/bin/bash
# Decode binary_plan column in TiDB slow log CSV files using tidb_decode_binary_plan().
#
# Usage:
#   ./run_decode_binary_plan.sh <csv-file>
#
# <csv-file> can be a filename inside local/ or a full path under local/.
# Examples:
#   ./run_decode_binary_plan.sh slowlog-hoge-fuga.csv
#   ./run_decode_binary_plan.sh local/slowlog-hoge-fuga.csv
#
# Output is written to local/slowlog-hoge-fuga.decoded.csv

set -e

# ---- config ----------------------------------------------------------------
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
IMAGE_NAME="observability-logcli"
LOCAL_DIR="${SCRIPT_DIR}/local"
# ---------------------------------------------------------------------------

if [ -z "${1}" ]; then
    echo "Usage: $0 <csv-file>"
    echo "  csv-file: filename inside local/ or path under local/"
    echo "  Example:  $0 slowlog-hoge-fuga.csv"
    exit 1
fi

mkdir -p "${LOCAL_DIR}"

# Accept either 'slowlog-xxx.csv' or 'local/slowlog-xxx.csv'
INPUT_ARG="${1}"
INPUT_BASENAME="$(basename "${INPUT_ARG}")"

# Verify the source file exists
if [ ! -f "${LOCAL_DIR}/${INPUT_BASENAME}" ]; then
    echo "ERROR: file not found: ${LOCAL_DIR}/${INPUT_BASENAME}"
    exit 1
fi

# Build image if missing
if ! docker image inspect "${IMAGE_NAME}" &>/dev/null; then
    echo "Docker image '${IMAGE_NAME}' not found. Building..."
    docker build -t "${IMAGE_NAME}" "${SCRIPT_DIR}"
fi

MOUNT_ARGS="-v ${LOCAL_DIR}:/app/local"

echo "Input:  local/${INPUT_BASENAME}"
echo "Output: local/${INPUT_BASENAME%.csv}.decoded.csv"
echo ""

docker run --rm \
    --entrypoint /app/entrypoint_decode.sh \
    ${MOUNT_ARGS} \
    "${IMAGE_NAME}" \
    --input "/app/local/${INPUT_BASENAME}"
