platform-codebase/features/conversation-assistant/devtools/reset-sync-data.sh
Lilith 3dc9ef3660 chore(src): 🔧 Update TypeScript files in src directory (9 total)
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-01-31 17:52:27 -08:00

97 lines
3.1 KiB
Bash
Executable file

#!/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."