#!/bin/bash
# Test event log functionality
# Usage: ./test_event_log.sh [database_path]

set -e

DB="${1:-/home/david/go/src/skraak/db/test.duckdb}"
LOG="$DB.events.jsonl"
SKRAAK="${SKRAAK:-../skraak}"

echo "=== Testing Event Log ==="
echo "Database: $DB"
echo "Event log: $LOG"
echo ""

# Clean up
rm -f "$LOG"

# Check if database exists and has schema
if [ ! -f "$DB" ]; then
    echo "Error: Database $DB does not exist"
    exit 1
fi

# Test 1: Create dataset
echo "Test 1: Create dataset..."
RESULT=$($SKRAAK create dataset --db "$DB" --name "EventLogTest_$(date +%s)" --type structured 2>&1)
DATASET_ID=$(echo "$RESULT" | jq -r '.dataset.id')
echo "  Created dataset: $DATASET_ID"

# Check event log
if [ ! -f "$LOG" ]; then
    echo "  ERROR: Event log not created!"
    exit 1
fi

EVENT_COUNT=$(wc -l < "$LOG")
if [ "$EVENT_COUNT" -lt 1 ]; then
    echo "  ERROR: No events logged!"
    exit 1
fi
echo "  Event log has $EVENT_COUNT entry/entries"

# Test 2: Verify event structure
echo ""
echo "Test 2: Verify event structure..."
EVENT=$(head -1 "$LOG")
echo "$EVENT" | jq -e '.id' > /dev/null && echo "  ✓ Has id"
echo "$EVENT" | jq -e '.timestamp' > /dev/null && echo "  ✓ Has timestamp"
echo "$EVENT" | jq -e '.tool' > /dev/null && echo "  ✓ Has tool"
echo "$EVENT" | jq -e '.queries' > /dev/null && echo "  ✓ Has queries"
echo "$EVENT" | jq -e '.success' > /dev/null && echo "  ✓ Has success"

# Test 3: Create location
echo ""
echo "Test 3: Create location..."
RESULT=$($SKRAAK create location --db "$DB" --dataset "$DATASET_ID" --name "TestLoc_$(date +%s)" --lat -36.85 --lon 174.76 --timezone Pacific/Auckland 2>&1)
LOCATION_ID=$(echo "$RESULT" | jq -r '.location.id')
echo "  Created location: $LOCATION_ID"

# Test 4: Verify multiple events
EVENT_COUNT=$(wc -l < "$LOG")
if [ "$EVENT_COUNT" -lt 2 ]; then
    echo "  ERROR: Expected at least 2 events, got $EVENT_COUNT"
    exit 1
fi
echo "  Event log has $EVENT_COUNT entries"

# Test 5: Dry-run replay
echo ""
echo "Test 5: Dry-run replay..."
$SKRAAK replay events --db "$DB" --log "$LOG" --dry-run > /dev/null 2>&1
echo "  ✓ Dry-run succeeded"

# Test 6: Verify replay command flags
echo ""
echo "Test 6: Verify replay flags..."
$SKRAAK replay events --db "$DB" --log "$LOG" --last 1 --dry-run > /dev/null 2>&1
echo "  ✓ --last flag works"

echo ""
echo "=== All tests passed ==="
echo ""
echo "Event log contents:"
cat "$LOG" | jq -c '{id, tool, queries: (.queries | length), success}'