97 lines
3.1 KiB
Bash
Executable file
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."
|