#!/bin/bash
# jrq - jrunner query wrapper for piping to visidata
# Usage: jrq <sql_file> [format]
# Example: jrq query.sql
#          jrq query.sql tsv

set -e

# Configuration
# Override these with environment variables or create ~/.jrqrc
CONFIG_FILE="${HOME}/.jrqrc"

# Default values
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
JR_BIN="${JR_BIN:-${SCRIPT_DIR}/jrunner}"
JR_URL="${JR_URL:-}"
JR_USER="${JR_USER:-}"
JR_PASS="${JR_PASS:-}"
JR_FORMAT="${JR_FORMAT:-csv}"

# Load config file if it exists
if [ -f "$CONFIG_FILE" ]; then
    source "$CONFIG_FILE"
fi

# Parse arguments
if [ $# -lt 1 ]; then
    echo "Usage: jrq <sql_file> [format]"
    echo ""
    echo "Configuration (via environment variables or ~/.jrqrc):"
    echo "  JR_URL   - JDBC connection URL (required)"
    echo "  JR_USER  - Database username (required)"
    echo "  JR_PASS  - Database password (required)"
    echo "  JR_BIN   - Path to jrunner binary (default: /opt/jrunner/jrunner/build/install/jrunner/bin/jrunner)"
    echo "  JR_FORMAT - Output format: csv or tsv (default: csv)"
    echo ""
    echo "Example ~/.jrqrc:"
    echo "  JR_URL=\"jdbc:as400://s7830956\""
    echo "  JR_USER=\"username\""
    echo "  JR_PASS=\"password\""
    echo ""
    echo "Example usage:"
    echo "  jrq query.sql         # outputs CSV to stdout"
    echo "  jrq query.sql | vd    # pipe to visidata"
    echo "  jrq query.sql tsv     # output TSV format"
    exit 1
fi

SQL_FILE="$1"
FORMAT="${2:-$JR_FORMAT}"

# Validate configuration
if [ -z "$JR_URL" ] || [ -z "$JR_USER" ] || [ -z "$JR_PASS" ]; then
    echo "Error: Missing database connection configuration" >&2
    echo "Set JR_URL, JR_USER, and JR_PASS environment variables or create ~/.jrqrc" >&2
    exit 1
fi

# Validate SQL file exists
if [ ! -f "$SQL_FILE" ]; then
    echo "Error: SQL file not found: $SQL_FILE" >&2
    exit 1
fi

# Execute jrunner
"$JR_BIN" -scu "$JR_URL" -scn "$JR_USER" -scp "$JR_PASS" -sq "$SQL_FILE" -f "$FORMAT"
