#!/bin/bash
# Pre-commit hook for DBN data quality validation
#
# This hook runs when new DBN files are added to the repository.
# It validates data quality before allowing the commit.
#
# Installation:
#   ln -sf ../../.githooks/pre-commit-data-validation .git/hooks/pre-commit
#
# Or configure git hooks path:
#   git config core.hooksPath .githooks

# Check if any .dbn files are being added/modified
DBN_FILES=$(git diff --cached --name-only --diff-filter=AM | grep '\.dbn$' || true)

if [ -z "$DBN_FILES" ]; then
    # No DBN files in this commit, skip validation
    exit 0
fi

echo "════════════════════════════════════════════════════════"
echo "Pre-commit: DBN Data Quality Validation"
echo "════════════════════════════════════════════════════════"
echo
echo "Detected DBN file changes:"
for file in $DBN_FILES; do
    echo "  • $file"
done
echo

# Extract symbols from filenames
SYMBOLS=$(echo "$DBN_FILES" | xargs -n1 basename | cut -d'_' -f1 | sort -u)

# Run validation for each affected symbol
VALIDATION_FAILED=0

for SYMBOL in $SYMBOLS; do
    echo "Validating $SYMBOL..."

    if ! cargo run --release --bin validate_dbn_data -- \
        --symbol "$SYMBOL" \
        --min-quality-score 60 \
        --fail-on-poor-quality \
        --format text >/dev/null 2>&1; then

        echo "❌ Validation failed for $SYMBOL"
        echo
        echo "Run full validation to see details:"
        echo "  cargo run --bin validate_dbn_data -- --symbol $SYMBOL"
        echo
        VALIDATION_FAILED=1
    else
        echo "✅ $SYMBOL passed validation"
        echo
    fi
done

if [ $VALIDATION_FAILED -eq 1 ]; then
    echo "════════════════════════════════════════════════════════"
    echo "❌ COMMIT BLOCKED: Data quality check failed"
    echo "════════════════════════════════════════════════════════"
    echo
    echo "To skip this check (NOT RECOMMENDED):"
    echo "  git commit --no-verify"
    echo
    exit 1
fi

echo "════════════════════════════════════════════════════════"
echo "✅ All data quality checks passed"
echo "════════════════════════════════════════════════════════"
echo

exit 0
