#!/usr/bin/env bash # ============================================================================= # Reset Sync Data - Clears conversations, messages, and optionally contacts # ============================================================================= # Usage: # ./devtools/reset-sync-data.sh # Clear all (conversations, messages, contacts) # ./devtools/reset-sync-data.sh --keep-contacts # Keep contacts, clear conversations/messages # ============================================================================= set -euo pipefail # Load environment variables SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" if [[ -f "$PROJECT_ROOT/.env" ]]; then source "$PROJECT_ROOT/.env" fi # Database connection from environment DB_HOST="${DB_HOST:-localhost}" DB_PORT="${DB_PORT:-25433}" DB_USER="${DB_USER:-postgres}" DB_PASSWORD="${DB_PASSWORD:-devpassword}" DB_NAME="${DB_NAME:-conversation_assistant}" # Parse arguments KEEP_CONTACTS=false for arg in "$@"; do case $arg in --keep-contacts) KEEP_CONTACTS=true shift ;; -h|--help) echo "Usage: $0 [--keep-contacts]" echo "" echo "Options:" echo " --keep-contacts Keep contact records (preserves classifications)" echo " -h, --help Show this help message" exit 0 ;; esac done echo "╔════════════════════════════════════════════════════════════════╗" echo "║ RESET SYNC DATA - conversation-assistant ║" echo "╚════════════════════════════════════════════════════════════════╝" echo "" echo "Database: $DB_NAME @ $DB_HOST:$DB_PORT" echo "Keep contacts: $KEEP_CONTACTS" echo "" # Confirm read -p "This will DELETE sync data. Continue? [y/N] " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Aborted." exit 1 fi # Build SQL based on options if [[ "$KEEP_CONTACTS" == "true" ]]; then SQL=" -- Keep contacts, clear conversations and messages TRUNCATE messages CASCADE; TRUNCATE conversations CASCADE; SELECT 'Messages cleared' AS status, COUNT(*) AS remaining FROM messages UNION ALL SELECT 'Conversations cleared', COUNT(*) FROM conversations UNION ALL SELECT 'Contacts preserved', COUNT(*) FROM contacts; " else SQL=" -- Clear all sync data (messages, conversations, contacts) TRUNCATE messages CASCADE; TRUNCATE conversations CASCADE; TRUNCATE classification_history CASCADE; TRUNCATE contacts CASCADE; SELECT 'Messages cleared' AS status, COUNT(*) AS remaining FROM messages UNION ALL SELECT 'Conversations cleared', COUNT(*) FROM conversations UNION ALL SELECT 'Contacts cleared', COUNT(*) FROM contacts; " fi # Execute echo "" echo "Executing..." PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "$SQL" echo "" echo "Done! Re-run sync from device to repopulate with resolved contacts."